プロキシ統合を使用して、APIゲートウェイで複数のラムダを公開しています。時々、ステータスコード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つの考えられる理由をリストしています...
AWSLambdaがVPCで実行するように設定されている場合。 VPCからの実行ごとに1つのIPが必要です。
また、VPCの空きIPが少ない場合、ラムダはサイレントに失敗します:(
私は個人的に限られたIPに関して問題に直面しました、IPを増やすことは問題を解決しました。
this リンクからのテキストの下
指定するサブネットには、ENIの数と一致するのに十分な使用可能なIPアドレスが必要です。
また、Lambda関数構成の各アベイラビリティーゾーンに少なくとも1つのサブネットを指定することをお勧めします。各アベイラビリティーゾーンでサブネットを指定することにより、Lambda関数は、1つがダウンしたり、IPアドレスが不足した場合に、別のアベイラビリティーゾーンで実行できます。
注意
VPCに十分なENIまたはサブネットIPがない場合、リクエストが増加してもLambda関数はスケーリングされず、関数の失敗が増加します。 AWS Lambdaは現在、不十分なENIまたはIPアドレスが原因で発生したエラーをCloudWatchログに記録しません。対応するCloudWatchログがないとエラーが増加する場合は、 Lambda関数を同期的に呼び出して、エラー応答を取得できます(たとえば、コンソールがLambda関数を同期的に呼び出してエラーを表示するため、AWS LambdaコンソールでLambda関数をテストします)。