Я пытаюсь вызвать сотни лямбда-функций асинхронно с помощью цикла. Когда я это делаю, почти все они повторяются, хотя, похоже, с кодом нет проблем. Когда я пытаюсь вызвать их синхронно, все они работают нормально и возвращают код состояния 200
.
По причинам, упомянутым здесь, я считаю, что это может быть только следующее:
The function experiences resource constraints, such as out-of-memory errors or other timeouts.
Как я могу найти точную причину повторных попыток и как их избежать?
У них действительно был тайм-аут, и причиной этого было то, что лямбда-функция fn делает HTTP-запрос, и, конечно же, сотни таких запросов не могут быть обработаны одновременно ..
Вызов лямбды, и если она вернется с 200, вы также получите уникальный идентификатор запроса для каждого вызова.
x-amzn-RequestId
в заголовке ответа дает вам уникальный запрос и помогает отслеживать журналы.
Вы можете использовать apilogs
для запроса журналов cloudwatch.
apilogs get --api-id xyz123 --stage prod --start='1h ago' | grep "6605b081-6f04-11e6-97ac-c34deb0b3dd9"
Более подробная информация об идентификаторе запроса и apilogs задокументирована здесь.
Надеюсь, это поможет.
Отображает ли CloudWatch Logs тайм-аут или сбой?