AWS Lambda 関数で断続的なエラーが発生し、その関数の Amazon CloudWatch メトリクスを確認しても理由がわかりません。Lambda 関数のエラー率の上昇は、タイムアウトの問題が原因で発生する可能性がありますか? その場合、Lambda 関数がタイムアウトしているかどうかはどのように判断すればよいですか?
Lambda 関数の CloudWatch ロググループを確認するときに、「タスクがタイムアウトしました」という語句を検索します。次に、関連付けられているタイムアウトした呼び出しのリクエスト ID を使用して、呼び出しタイムアウトごとに完全なログを取得します。
特定したタイムアウトエラーのトラブルシューティングについては、「Lambda 関数呼び出しタイムアウトエラーのトラブルシューティング方法を教えてください」を参照してください。
注:Lambda 関数の呼び出しがタイムアウトすると、失敗した呼び出しの CloudWatch ログにエラーメッセージではなく、 Task timed out エラーメッセージが表示されます。関数の CloudWatchログでエラーメッセージのみを検索すると、呼び出しタイムアウトエラーではなく、コード関連のランタイムエラーのみが返されます。詳細については、「Amazon CloudWatch を使用した AWS Lambda エラーのモニタリング」を参照してください。
Lambda 関数に CloudWatch ログ記録の許可をまだ付与していない場合は付与します。詳細については、「Lambda 機能の AWS 管理ポリシー」を参照してください。
**注:**CloudWatch Logs Insights のクエリでは、クエリされたデータ量に基づいて課金されます。詳細については、「Amazon CloudWatch の料金」を参照してください。
1. Lambda コンソールで関数ページを開きます。
2. 関数を選択します。
3. [監視] を選択します。
4. [CloudWatch のログを表示] を選択します。CloudWatch コンソールに関数の [ロググループ詳細] ページが開きます。
5. [ログインサイトで表示] を選択します。
6. [Logs Insights クエリ] テキストボックスに次のクエリを入力し、[クエリの実行] を選択します。
fields @timestamp, @requestId, @message, @logStream | filter @message like "Task timed out" | sort @timestamp desc | limit 100
応答は、タイムアウトした呼び出しのリクエスト ID のリストを返します。
詳細については、「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。
**注:**ロググループが大きい場合は、Insights クエリに datetime 関数を追加して、検索の範囲を制限することを検討してください。詳細については、CloudWatch Logs Insights のクエリ構文を参照してください。
使用しているプログラミング言語の標準ロギング機能を使用して、ログを出力します。言語固有の手順については、「AWS Lambda 用 Amazon CloudWatch Logsへのアクセス 」の「AWS CLI の使用」セクションを参照してください。