Lambda 関数が失敗する場合のトラブルシューティングを教えてください。

最終更新日: 2019 年 10 月 16 日

AWS Lambda 関数を実行すると、エラーで失敗します。これらの失敗をトラブルシューティングする方法を教えてください。

簡単な説明

Lambda 関数の失敗は、一般的に以下が原因で発生します。

  • アクセス許可の問題
  • コードの問題
  • ネットワークの問題
  • スロットリング
  • API 500 および 502 エラーを呼び出す

Lambda コードと設定に応じて、以下の AWS のサービスおよび機能を使用して原因を特定できます。

以下の一般的な問題の種類を確認して、使用するサービスまたは機能を特定し、詳細情報とトラブルシューティング手順の場所を確認してください。

解決方法

アクセス許可の問題

CloudTrail は、AWS アカウントの API コールをイベントとしてキャプチャします。Lambda 関数の呼び出しに失敗した場合、Lambda の CloudTrail ログエントリを確認します。

Lambda を呼び出すリクエスタには、関数を呼び出すために必要な AWS Identity and Access Management (IAM) のアクセス許可が必要です。リクエスタにアクセスできない場合は、Lambda 関数のアクセス許可を更新してアクセスを付与します。詳細については、AWS Lambda の Identity and Access のトラブルシューティングを参照してください。

コードの問題

CloudWatch Logs

Lambda 関数の失敗の詳細については、CloudWatch で Lambda ログを確認してください。詳細については、使用しているプログラミング言語のログ記録手順を参照してください。

X-Ray

Lambda 関数でダウンストリーム AWS リソース、マイクロサービス、データベース、HTTP ウェブ API を使用している場合は、X-Ray を使用して問題のトラブルシューティングを行います。

依存関係

Lambda 関数のデプロイパッケージに依存関係が含まれている場合は、コードが正常にインポートできることを確認します。詳細については、使用しているプログラミング言語に関する以下の手順を参照してください。

または、Lambda Layers を使用して、デプロイパッケージの外部で依存関係を追加できます。

ネットワークの問題

Lambda 関数が Amazon Virtual Private Cloud (Amazon VPC) に接続されている場合は、すべてが正しく設定されていることを確認します。詳細については、VPC 内のリソースにアクセスできるように Lambda 関数を設定するを参照してください。

Amazon VPC 対応の Lambda 関数がインターネットを呼び出す必要がある場合は、必ずインターネットアクセスを許可してください。

スロットリング

Lambda 関数を呼び出すリクエストが、同時実行数の制限よりも速く到着した場合、リクエストは 429 スロットリングエラーで失敗します。詳細については、AWS Lambda 関数のスケーリングを参照してください。

原因のトラブルシューティングに役立てるために、CloudWatch を使用して Lambda メトリクス ConcurrentExecutionsUnreservedConcurrentExecutionsThrottles をモニタリングします。詳細については、AWS Lambda の CloudWatch メトリクスを参照してください。

呼び出し API 502 および 500 エラー

Lambda 関数が 502 または 500 サーバーエラーで失敗する場合は、以下のトラブルシューティング手順を確認してください。

考えられるエラーのリストと説明については、Lambda Invoke API リファレンスのエラーを参照してください。