同期的に呼び出すように AWS Lambda 関数を設定しましたが、送信先が開始されません。この問題を修正するにはどうすればよいですか?
Lambda コンソールを通じて Lambda 関数を呼び出すと、その関数は同期的に呼び出されますか? それとも、非同期的に呼び出されますか?
- または -
Lambda 関数をさらに 1 回または 2 回再試行するように設定しても、再試行されないのはなぜですか?
解決方法
Lambda 関数を同期的に呼び出して失敗した場合、考えられる原因は次のとおりです。
- Lambda には、コードに含まれるアクションを実行するための許可がない。
- Lambda 関数を呼び出す AWS のサービスに十分な許可がない。
- Lambda は非同期的に呼び出される。
- Lambda は送信先を非同期呼び出しとストリーム呼び出しでのみサポートし、同期呼び出しではサポートしていない。
同期呼び出しの問題をトラブルシューティングするには、次のステップに従ってください。
1. Lambda 関数がどのように呼び出されるかを決定します。関数は AWS CLI を使用して呼び出されますか? 関数は AWS のサービスを通じて呼び出されますか?
2. AWS のサービスが Lambda 関数を同期的に呼び出すか、非同期的に呼び出すかを確認します。
3. 次のコマンドを使用して Lambda 関数を同期的に呼び出します。
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{ "key": "value" }' response.json
200 ステータスコードが報告されているかどうか、またはコマンドがエラーを返すかどうかを確認します。
4. Lambda 関数の再試行動作は、同期呼び出しでクライアントによって制御されることに注意してください。AWS Lambda コンソールからの [Retry attempts] (再試行) の設定は、非同期呼び出しに制限されています。クライアントが Lambda ログを確認するのではなく、必ずリクエストを再試行するようにしてください。
5. Lambda コンソールで呼び出される Lambda 関数は常に同期呼び出しであることを忘れないでください。
6. 同期呼び出しの再試行動作は、各サービスのイベントソースマッピングに基づき、AWS のサービスによって異なります。
詳細については、「イベント駆動型の呼び出し」を参照してください。
7. Lambda 関数のコードがべき等で、同じメッセージを複数回処理できることを確認してください。
8. Lambda 関数が返すエラーを特定して解決します。
詳細については、「Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください」を参照してください。
9. それでも問題が解決しない場合は、AWS サポートに対してケースをオープンします。ケースで次の情報を提供してください。
- Lambda 関数の ARN。
- Lambda 関数のワークフローは、含まれるすべてのサービスで設定されています。
- 問題が断続的か継続的かに関する詳細。
- 問題が発生したときの CloudWatch ログを .txt 形式で完成させます。これらの CloudWatch ログは、タイムアウトの問題、Init Duration、許可の問題を含む Lambda 関数のエラーを特定するために使用されます。
- 問題の正確なタイムスタンプ (タイムゾーンまたはタイムスタンプ付き (UTC))。
注: セキュリティとプライバシー上の理由から、AWS サポート担当者はお客様の CloudWatch ログにアクセスできません。
関連情報
Comparing Lambda invocation modes (Lambda 呼び出しモードの比較)
Lambda 関数を呼び出す
Introducing AWS Lambda Destinations (AWS Lambda の送信先のご紹介)