AWS re:Postを使用することにより、以下に同意したことになります 利用規約

Lambda 統合または Lambda オーソライザーを使用した API Gateway HTTP API からの許可エラーをトラブルシューティングするにはどうすればよいですか?

所要時間3分
0

API Gateway HTTP API で AWS Lambda 関数を呼び出そうとすると、「Internal Server Error」(内部サーバーエラー) メッセージが表示されます。Amazon CloudWatch Logs で、「doesn't have permissions to call the integration」(統合を呼び出すための許可がありません) または「doesn't have permissions to call the authorizer」(オーソライザーを呼び出すための許可がありません) というエラーが表示されます。

簡単な説明

API Gateway HTTP API が Lambda 呼び出し許可なしで Lambda 関数を呼び出そうとした場合 、API Gatewayは「Internal Server Error」(内部サーバーエラー) メッセージを返します。HTTP API の CloudWatch ログ記録をアクティブ化すると 、API Gateway もアクセスログで次のいずれかのエラーメッセージをログ記録します。

  • Lambda 統合を使用する HTTP API の場合:「integrationError」:「The IAM role configured on the integration or API Gateway doesn't have permissions to call the integration.Check the permissions and try again.」(統合または API Gateway で設定された IAM ロールには、統合を呼び出すための許可がありません。許可を確認して、もう一度お試しください。)
  • Lambda オーソライザーを使用する HTTP API の場合:「authorizerError」:「The IAM role configured on the authorizer or API Gateway doesn't have permissions to call the authorizer.Check the permissions and try again.」(オーソライザーまたは API Gateway に設定された IAM ロールには、オーソライザーを呼び出すための許可がありません。許可を確認して、もう一度お試しください。)

これらのエラーを解決するには、次のいずれかのアクションを実行します。

API Gateway コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して、リソースベースの Lambda 呼び出し許可を HTTP API に追加します。

-または-

関数を呼びだすアクセス権限を HTTP API に付与する AWS Identity and Access Management (IAM) 実行ロールを設定します。詳細については、 API を呼びだすための API Gateway アクセス権限モデルをご参照ください。

HTTP API で Lambda 統合を使用する場合におけるエラーのトラブルシューティングの詳細については、「HTTP API Lambda 統合に関する問題のトラブルシューティング」を参照してください。

解決方法

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

API Gateway コンソールを使用して、Lambda 統合で HTTP API に Lambda 呼び出し許可を追加するには

  1. API Gateway コンソールにログインします。
  2. [API] ペインで、HTTP API の名前を選択します。
  3. 左側のナビゲーションペインで、[Interations] (統合) を選択します。
  4. [Manage integration] (統合を管理) を選択します。
  5. Lambda 統合の名前を見つけて、Lambda 統合の名前の横にある [Edit] (編集) ボタンを選択します。
  6. [Invoke permissions] (アクセス許可を呼び出す) で、[Grant API Gateway permission to invoke your Lambda function] (Lambda 関数を呼び出すための許可を API Gateway に付与) を選択します。
    または、API Gateway が Lambda 関数を呼び出すために使用できる IAM ロール ARN を指定します。
  7. [Save] (保存) を選択してから、[Deploy the API] (API をデプロイ) を選択して、Lambda 呼び出し許可を API に追加します。

AWS CLI を使用して、Lambda 統合で HTTP API に Lambda 呼び出し許可を追加するには

次の add-permission AWS CLI コマンドを実行します。

aws lambda add-permission \
--function-name "$YOUR_FUNCTION_ARN" \
--source-arn "arn:aws:execute-api:$API_GW_REGION:$YOUR_ACCOUNT:$API_GW_ID/*/$METHOD/$RESOURCE" \
--principal apigateway.amazonaws.com \
--statement-id $STATEMENT_ID \
--action lambda:InvokeFunction

注: function-name の値を、Lambda 関数の ARN に置き換えます。source-arn の値を、API のソース ARN に置き換えます。statement-id の値を、同じポリシー内の他のステートメントと区別するステートメント識別子に置き換えます。

API Gateway コンソールを使用して、Lambda オーソライザーで HTTP API に Lambda 呼び出し許可を追加するには

  1. API Gateway コンソールにログインします。
  2. [API] ペインで、HTTP API の名前を選択します。
  3. 左側のナビゲーションペインで、[Authorization] (認可) を選択します。
  4. [Manage authorization] (認可を管理) を選択します。
  5. Lambda オーソライザーの名前を見つけて、Lambda オーソライザーの名前の横にある [Edit] (編集) ボタンを選択します。
  6. [Invoke permissions] (アクセス許可を呼び出す) で、[Automatically grant API Gateway permission to invoke your Lambda function] (Lambda 関数を呼び出すための許可を API Gateway に自動的に付与) を選択します。
    または、API Gateway が Lambda 関数を呼び出すために使用できる IAM ロール ARN を指定します。
  7. [Save] (保存) を選択してから、[Deploy the API] (API をデプロイ) を選択して、Lambda 呼び出し許可を API に追加します。

AWS CLI を使用して、Lambda オーソライザーで HTTP API に Lambda 呼び出し許可を追加するには

次の add-permission AWS CLI コマンドを実行します。

aws lambda add-permission \
--function-name "$YOUR_FUNCTION_ARN" \
--source-arn "arn:aws:execute-api:$API_GW_REGION:$YOUR_ACCOUNT:$API_GW_ID/authorizers/$AUTHORIZER_ID" \
--principal apigateway.amazonaws.com \
--statement-id $STATEMENT_ID \
--action lambda:InvokeFunction

注: function-name の値を、Lambda 関数の ARN に置き換えます。source-arn の値を、API のソース ARN に置き換えます。statement-id の値を、同じポリシー内の他のステートメントと区別するステートメント識別子に置き換えます。


コメントはありません

関連するコンテンツ