Lambda 関数を呼び出すときに 502 と 500 エラーをトラブルシューティングする方法を教えてください。

最終更新日: 2019 年 9 月 25 日

AWS Lambda 関数を呼び出そうとすると、リクエストは 502 または 500 サーバー側のエラーで失敗します。これらのエラーのトラブルシューティング方法を教えてください。

解決方法

発生している特定の Lambda Invoke API エラーを特定し、エラーのトラブルシューティング手順に従います。考えられるエラーのリストと説明については、Lambda Invoke API リファレンスの「エラー」を参照してください。

EC2AccessDeniedException

Lambda 関数の実行ロールには、Amazon Virtual Private Cloud (Amazon VPC) の Amazon Elastic Compute Cloud (Amazon EC2) にアクセスするための次のアクセス許可が必要です。

  • ec2:CreateNetworkInterface
  • ec2:DescribeNetworkInterfaces
  • ec2:DeleteNetworkInterface

これらのアクセス許可は、AWS 管理ポリシーAWSLambdaVPCAccessExecutionRole に含まれています。詳細については、「実行ロールとユーザーアクセス許可」を参照してください。

EC2ThrottledException

AWS は、リージョンごとに各 AWS アカウントの Amazon EC2 API リクエストを調整して、サービスのパフォーマンスを向上させます。詳細については、「API リクエストレートのクエリ」を参照してください。

Amazon CloudWatch を使用して、AWS アカウントで行われた Amazon EC2 API リクエストの量を確認します。アカウントが許可されている最大リクエストレートを超えた場合は、Lambda の外部で行うリクエストの量を減らします。

EC2UnexpectedException

このエラーは、 Elastic Network Interface(ENI) の作成時に Lambda が 500 エラーを受け取った場合に最もよく発生します。エクスポネンシャルバックオフアルゴリズムを使用してリクエストを再試行します。詳細については、「AWS でのエラーの再試行とエクスポネンシャルバックオフ」を参照してください。

InvalidSecurityGroupIDException

Lambda 関数設定で正しい Amazon VPC セキュリティグループ ID を指定したことを確認します。詳細については、「VPC 内のリソースにアクセスできるように Lambda 関数を設定する」を参照してください。

ENILimitReachedException

Amazon VPC 対応の Lambda 関数は、関連するサブネットに ENI を作成します。これらの関数がスケールアウトすると、より多くの ENI が作成されます。アカウントとリージョンごとに ENI 制限があります。現在の制限を確認するには、Amazon EC2 コンソールの「制限」を参照してください。

Amazon VPC には、Lambda 関数の要件を満たすのに十分な ENI 容量が必要です。関数の ENI 要件を見積もるには、次の式を使用します。

Projected peak concurrent executions * (Memory in GB / 3 GB)

Amazon VPC の現在の ENI 制限が要件を満たしていない場合は、AWS サポートセンターから制限の引き上げをリクエストできます。(Requests の下の Limit で、[RegionNetwork Interfaces per Region] を選択します。)

SubnetIPAddressLimitReachedException

サブネットのサイズは、その CIDR ブロックによって定義されます。Amazon VPC で指定する CIDR ブロックに、Amazon VPC 対応の Lambda 関数の要件に対して十分な空き IP アドレスがあることを確認してください。詳細については、「VPC とサブネットのサイズ設定」を参照してください。

KMSAccessDeniedException

Lambda 関数の AWS Identity and Access Management (AWS IAM) のアクセス許可と、AWS Key Management Service (AWS KMS) キーポリシーを確認します。

カスタマーマスターキー (CMK) にカスタムキーポリシーを使用している場合、Lambda 関数の実行ロールIAM ポリシーkms:Decrypt アクションを許可する必要があります。デフォルトのキーポリシーを使用している場合、Lambda 実行ロールには AWS KMS アクセスのために十分なアクセス許可がすでにあります。

また、Lambda 関数を作成および更新する IAM ユーザーには、CMK を使用するための許可が必要です。

詳細については「AWS KMS でのキーポリシーの使用」を参照してください。

KMSDisabledException

CMK が有効になっていることを確認します。詳細については、「キーの有効化と無効化」を参照してください。

KMSInvalidStateException

CMK は、AWS KMS Decrypt API リクエストに対して無効な状態です。CMK が有効になっていることを確認します。

詳細については、「キーステータスがカスタマーマスターキーの使用に与える影響」を参照してください。

KMSNotFoundException

リクエストで指定された CMK は、Lambda 関数と同じ AWS リージョンとアカウントに存在する必要があります。リージョンが異なる場合、同じリージョンで別の CMK を使用 (または新しい CMK を作成) します。

InvalidRuntimeException

Lambda 関数を設定して、関数コードに正しい Lambda ランタイムを使用します。

InvalidZipFileException

Lambda デプロイパッケージのアクセス許可を確認します。詳細については、「デプロイパッケージをアップロードするときに Lambda で「権限が拒否されました」または「モジュールをインポートできません」というエラーを解決するには、どうすれば良いですか?」を参照してください。

また、デプロイパッケージファイルが正しく作成されたことを確認します。詳細については、「デプロイパッケージの作成」を参照してください。

ServiceException

まれに、Lambda サービス自体で内部エラーが発生する場合があります。500 エラーが発生した場合は、AWS サービスヘルスダッシュボードで、Lambda が利用できないかどうかを確認してください。詳細については、「AWS がダウンしていますか?」を参照してください。

Lambda が利用できる場合は、Lambda 関数を呼び出すリクエストを再試行します。問題が解決しない場合は、AWS サポートセンターから AWS サポートにお問い合わせください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合