Python の AWS Lambda 関数エラー - AWS Lambda

Python の AWS Lambda 関数エラー

コードが原因でエラーが発生すると、Lambda によって、エラーの JSON 表現が生成されます。このエラードキュメントは、呼び出しログ (同期呼び出しの場合は出力) で確認できます。

例 lambda_function.py ファイル – 例外

def lambda_handler(event, context): return x + 10

このコードは、名前エラーになります。Lambda はエラーを検出して、エラーメッセージ、タイプ、スタックトレースの各フィールドを含む JSON ドキュメントを生成します。

{ "errorMessage": "name 'x' is not defined", "errorType": "NameError", "stackTrace": [ " File \"/var/task/error_function.py\", line 2, in lambda_handler\n return x + 10\n" ] }

コマンドラインから関数を呼び出すと、AWS CLI はレスポンスを 2 つのドキュメントに分割します。発生した関数エラーを示すため、ターミナルに表示されるレスポンスには FunctionError フィールドが含まれます。関数によって返されたレスポンスまたはエラーは、出力ファイルに書き込まれます。

$ aws lambda invoke --function-name my-function out.json { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }

出力ファイルを表示して、エラードキュメントを確認します。

$ cat out.json {"errorMessage": "name 'x' is not defined", "errorType": "NameError", "stackTrace": [" File \"/var/task/error_function.py\", line 2, in lambda_handler\n return x + 10\n"]}
注記

Lambda からのレスポンスの 200 (成功) ステータスコードは、Lambda に送信したリクエストにエラーはなかったことを示します。エラーステータスコードが発生する原因となる問題については、「Errors」を参照してください。

また、Lambda は関数のログに最大 256 KB のエラーオブジェクトを記録します。コマンドラインから呼び出すときにログを表示するには、--log-type オプションを使用し、レスポンスで base64 文字列をデコードします。

$ aws lambda invoke --function-name my-function out.json --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: fc4f8810-88ff-4800-974c-12cec018a4b9 Version: $LATEST     return x + 10/lambda_function.py", line 2, in lambda_handler END RequestId: fc4f8810-88ff-4800-974c-12cec018a4b9 REPORT RequestId: fc4f8810-88ff-4800-974c-12cec018a4b9 Duration: 12.33 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 56 MB

ログの詳細については、「Python の AWS Lambda 関数ログ作成」を参照してください。