#amazon-web-services #aws-lambda
Вопрос:
Я разрабатываю лямбда — функцию, которая переносит журналы с SFTP-сервера в корзину S3.
Из — за размера журналов функция иногда отключается-даже несмотря на то, что я установил максимальный тайм-аут в 15 минут.
try: logger.info(f'Migrating {log_name}... ') transfer_to_s3(log_name, sftp) logger.info(f'{log_name} was migrated succesfully ')
Если transfer_to_s3()
произойдет сбой из-за тайм-аута logger.info(f'{log_name} was migrated succesfully')
, строка не будет выполнена.
Я хочу убедиться, что в этом сценарии я каким-то образом узнаю, что журнал не был перенесен из-за тайм-аута.
Есть ли способ заставить лямбду выполнить действие перед выходом в случае тайм-аута?
Комментарии:
1. «заставить лямбду что-то сделать, прежде чем выбросить время?» что это значит? Вы можете запрограммировать любую логику, какую захотите.
2. @Dimitris вы можете увеличить время ожидания лямбда-функции в
Configuration --gt; General Setting
3. @jebasuthan Мой вопрос был сформулирован неправильно. Отредактирую его. Я уже установил время ожидания лямбды на 15 минут, что является максимально допустимым.
4. @Marcin перефразировал вопрос
Ответ №1:
Вероятно, лучшим способом было бы использовать для этого SQS:
Logo info ---gt; SQS queue ---gt; Lambda function
Если lambda успешно перемещает файлы, она удаляет данные журнала из очереди SQS. Если это не удается, информация журнала сохраняется в очереди SQS (или отправляется в DLQ для специальной обработки), поэтому следующий вызов лямбда-кода может обработать ее.
Комментарии:
1. Просто чтобы понять, вы рекомендуете что-то вроде:
SFTP Server ---gt; Lambda Function ---gt; SQS queue ---gt; Lambda function
? Я не совсем понимаю, если честно2. @Dimitris в вашем вопросе не указано, как работает ваш сервер. Но если вы не можете напрямую взаимодействовать с sqs, вы можете добавить дополнительную лямбду, как вы описали.