Загрузка лямбда-файла происходит несколько раз - PullRequest
0 голосов
/ 04 апреля 2020

Моя архитектура приложения - слабые события -> API Gateway -> Lambda -> выполняет некоторую операцию и возвращает файл .png, который генерируется с использованием numpy и matplotlib.

Когда я имею дело только с выводом текста в лямбда, он работает нормально, но когда я имею дело с загрузкой файлов, он работает странно,

Он загружает файлы в резерв, используя метод [files.upload], а затем через минуту моя лямбда запускается и заканчивается в загрузка другого файла.

Это потому, что slack возвращает HTTP-ответ для метода file.upload и каким-то образом мое приложение перехватывает его и запускает agian? события, события одинаковы без какой-либо разницы, но я действительно не уверен, почему моя лямбда вызывается снова, и я проверил идентификаторы запроса, и это отличается, и даже на API getway есть два разных идентификатора запроса, но я запросил только один раз .. Это сводит меня с ума ...

1 Ответ

0 голосов
/ 05 апреля 2020

Я нашел способ сделать это. С помощью этой статьи https://aws.amazon.com/premiumsupport/knowledge-center/custom-headers-api-gateway-lambda/ я добавил заголовок HTTP [информация о заголовке клиента] в шлюз API и передал его в lambda. Итак, в Lambda я ловлю события повтора из slack с помощью заголовка, который содержит X-Slack-Retry-Num для событий повтора, и сразу возвращаю его как return 200.

if 'X-Slack-Retry-Num' in output['headers']:
    slk_retry = output['headers']['X-Slack-Retry-Num']
    return 200
else:
    "Consider this as first event and provide your actual code and logic"
...