Как вывести мою функцию AWS Lambda в список?

#amazon-web-services #aws-lambda

Вопрос:

В настоящее время я пытаюсь вывести ключ(файлы) корзины AWS в список, чтобы сравнить его с другим списком, который я назначил перед обработчиком. Однако после добавления ключа в список список возвращается пустым, когда я вызываю его позже.

Мой пример кода:

 #my imports import boto3  #my assigned values s3 = boto3.resource('s3') 1stList = ['1','2','3','4'] appendList = [] myBucket = s3.Bucket('bucketName')  #my function handler def lambda_handler(event, context):  for obj in my_bucket.objects.all():  key = obj.key   appendList.append(key)  print(appendList)  

Тогда вывод инструкции print будет просто: []

Затем, если я попытаюсь вызвать этот список позже, он будет пустым.

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

1. Что ты имеешь в виду под «позже»? Покажите код, который не работает.

Ответ №1:

AWS Lambda в основном не имеет состояния и определенно распространяется. Это означает, что при вызове кода второй (или более) раз вы можете получить или не получить ту же среду выполнения снова. Таким образом, хотя вы изменили appendList , очень возможно, что при следующем вызове вашей Лямбды вы получите совершенно новый «прогон» вашей Лямбды, а массив будет пуст. Это особенно верно, если с момента последнего звонка прошло несколько минут. Иногда, если вы вызовете Лямбду дважды примерно за 5 минут, вы получите одну и ту же среду. Но на это нет никакой гарантии.

Если вам нужно сохранить ключи, поступающие из события S3, вам нужно будет использовать какое-то постоянное хранилище, например DynamoDB, RDS или даже файл на томе EFS.