Передайте выходной массив одной лямбда-функции другой функции

#python #arrays #aws-lambda #invoke

Вопрос:

У меня есть функция AWS Lambda ( Function1 ) в Python 3.8. Он сканирует корзину S3 и выводит имена всех объектов в массив. Мне нужно отправить этот массив в другую лямбда-функцию ( Function2 ), которая также написана на Python 3.8.

Function1 :

 for each in contents:
    print(each["Key"])
    inputForInvoker.append({'SQLFilename': each["Key"]})
response = lambdac.invoke(
            FunctionName='arn:aws:lambda:eu-west-2:169697352176:function:pyodbc',
            InvocationType='RequestResponse',
            Payload=json.dumps(inputForInvoker)
            )
 

где contents переменная-это массив словарей. Пример элемента массива из contents приведен ниже для справки. Исходя из этого, я пытаюсь извлечь Key ценность. Эта логика работает хорошо, потому что , когда я печатаю inputForInvoker , она дает мне массив словарей.

Содержание contents :

 {'Key': 'body_aus.sql', 'LastModified': datetime.datetime(2021, 9, 8, 1, 34, 12, tzinfo=tzlocal()), 'ETag': '"xxx"', 'Size': 23, 'StorageClass': 'STANDARD', 'Owner': {'ID': 'yyy'}}, 
 

Выход из print(inputForInvoker) :

 [{'SQLFilename': 'body_aus.sql'}, {'SQLFilename': 'footer.sql'}, {'SQLFilename': 'header.sql'}, {'SQLFilename': 'test.sql'}]
 

Function2 :

 def lambda_handler(event, context):
sqlFileName = event['SQLFileName']
print(sqlFileName)
 

Выход из Function2 :

 {'SQLFilename': 'body_aus.sql'}
 

В идеале я должен был бы получить весь массив из Function1 вместо одного элемента.

Комментарии:

1. Событие должно быть объектом словаря, а не списком. Воспользуйся Payload=json.dumps({"queries": inputForInvoker})

2. Сработало хорошо.. Спасибо @OluwafemiSule!