Случайный код состояния: 502 ошибки на AWS-сервере api, подключенном к лямбда

У меня есть несколько ягнят, открытых с помощью api gateway с использованием интеграции с прокси-сервером. Время от времени я получаю странные ошибки с кодом состояния 502. В журналах наблюдения за облаками в лямбда нет ничего. Ниже я опубликовал журналы шлюзов api для запроса образца:

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Received response. Integration latency: 231 ms

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations:
{
    "Message": "An error occurred and the request cannot be processed.",
    "Type": "Service"
}

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response headers: 
{
    Connection=keep-alive, 
    x-amzn-RequestId=0cbc9dee-f1bd-11e7-857b-91f7f814692c, 
    x-amzn-ErrorType=ServiceException, 
    Content-Length=86, 
    Date=Fri, 05 Jan 2018 02:06:32 GMT, 
    Content-Type=application/json
}

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Execution failed due to configuration error: Malformed Lambda proxy response

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Method completed with status: 502

В принципе, кажется, что api-шлюз не может дойти до лямбда и зов к лямбда возвращается:

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations:
{
    "Message": "An error occurred and the request cannot be processed.",
    "Type": "Service"
}

Есть ли еще какие-либо проблемы? Только возможное исправление с моей стороны заключается в том, чтобы написать механизм повтора, но с моей стороны он выглядит скорее, потому что мне не хватает какой-либо конфигурации или этого AWS-сбоя, с которым они должны справиться.

Ответы

Ответ 1

Я перечисляю здесь одну возможную причину...

Когда AWS Lambda настроен на запуск в VPC. Для VPC требуется один IP-адрес.

И если VPC не сильно освобождает IP-адреса, тогда ваша лямбда будет терпеть неудачу :(

Я лично столкнулся с проблемами в отношении ограниченного IP-адреса, что привело к тому, что IP-адреса решили проблему.

Под текстом по этой ссылке

Подсети, которые вы укажете, должны иметь достаточное количество доступных IP-адресов для соответствия количеству ENI.

Мы также рекомендуем указать по крайней мере одну подсеть в каждой зоне доступности в вашей конфигурации Lambda. Указав подсети в каждой из зон доступности, ваша Lambda-функция может работать в другой зоне доступности, если она опускается или заканчивается из IP-адресов.

Заметка

Если ваш VPC не имеет достаточных ENI или IP-адресов подсети, ваша функция Lambda не будет масштабироваться по мере увеличения запросов, и вы увидите увеличение сбоев функций. AWS Lambda в настоящее время не регистрирует ошибки в CloudWatch Logs, вызванные недостаточными ENI или IP-адресами. Если вы видите увеличение ошибок без соответствующих журналов CloudWatch, вы можете синхронно вызывать функцию Lambda для получения ответов об ошибках (например, проверьте вашу функцию Lambda на консоли AWS Lambda, потому что консоль вызывает вашу функцию Lambda синхронно и отображает ошибки).