メニュー
AWS Lambda
開発者ガイド

例外 (Python)

Lambda 関数で例外が発生した場合、AWS Lambda はエラーを認識して JSON に例外情報をシリアル化し、それを返します。次の例を考えます。

Copy
def always_failed_handler(event, context): raise Exception('I failed!')

この Lambda 関数を呼び出すと、例外が発生し、AWS Lambda が次のエラーメッセージを返します。

Copy
{ "errorMessage": "I failed!", "stackTrace": [ [ "/var/task/lambda_function.py", 3, "my_always_fails_handler", "raise Exception('I failed!')" ] ], "errorType": "Exception" }
スタックの stackTrace JSON 配列が要素をトレースするときに、スタックトレースが返されることに注意してください。

返されるエラー情報の取得方法は、関数呼び出し時にクライアントが指定する呼び出しタイプによって決まります。

  • クライアントが RequestResponse 呼び出しタイプ (同期実行です) を指定した場合、呼び出しを行ったクライアントに結果が返ります。

    たとえば、コンソールは常に RequestResponse 呼び出しタイプを使用するため、[Execution result] セクションに次のようなエラーが表示されます。

    同じ情報は、CloudWatch にも送信され、[Log output] セクションに同じログが表示されます。

  • クライアントが Event 呼び出しタイプ (非同期実行です) を指定した場合は、AWS Lambda は何も返しません。代わりに、CloudWatch ログにエラー情報がログ記録されます。CloudWatch メトリクスでエラーメトリクスを確認することもできます。

イベントソースに応じて、AWS Lambda はエラーになった Lambda 関数を返す場合があります。たとえば、Amazon Kinesis がイベントソースである場合、AWS Lambda は Lambda 関数が成功するかストリームのレコードの有効期限が切れるまで、エラーになった呼び出しを再試行します。

前述の Python コードをテストするには (コンソール)

  1. コンソールで、hello-world 設計図を使用して Lambda 関数を作成します。[Runtime] で [Python2.7] を選択します。[Handler] の lambda_function.lambda_handler を lambda_function.always_failed_handler と置き換えます。これを行う手順については、 ステップ 2.1: Hello World Lambda 関数を作成する.

  2. テンプレートコードをこのセクションで提供されたコードに置き換えます。

  3. Lambda コンソールが提供する [Hello World] という [Sample event template] を使用して Lambda 関数をテストします。