#!/bin/bash

# This should be a .txt file which contains a JSON array
input_file="json_payload.txt"

# Provide name of lambda
lambda_function_name="lambda-to-call"
json_array=$(cat "$input_file")

if echo "$json_array" | jq empty > /dev/null 2>&1; then
  num_objects=$(echo "$json_array" | jq '. | length')
  for ((i=0; i<num_objects; i++)); do
    echo "Processing object $i"
    json_payload=$(echo "$json_array" | jq ".[$i]")
 
    # Name the file for the output of each lambda
    file_name=$(echo "$json_payload" | jq -r 'to_entries[0].value')

    if [ -z "$file_name" ]; then
      file_name="default_name_$i"
    fi
    
    # Specify a location to store output of each lambda
    output_folder="$HOME/Desktop"
    mkdir -p "$output_folder"
    output_file="$output_folder/$file_name.json"

    aws lambda invoke \
      --function-name "$lambda_function_name" \
      --qualifier 'provisioned' \
      --region 'us-east-1' \
      --cli-binary-format raw-in-base64-out \
      --payload "$json_payload" \
      "$output_file"

    echo "Response saved to $output_file"
  done
else
  echo "Invalid JSON array in $input_file"
fi

