AWS Lambda 統合または Lambda 認証を使用した API ゲートウェイ HTTP API からのアクセス権限エラーのトラブルシューティング方法を教えてください。

最終更新日: 2021 年 5 月 28 日

API ゲートウェイ HTTP API で AWS Lambda 関数を呼びだすと、「内部サーバーエラー」メッセージが表示されます。Amazon CloudWatch Logs に、「統合を呼びだす権限がありません」または「認証を呼びだす権限がありません」というエラーが表示されます。これらのエラーの原因は何ですか、どのように解決できますか?

簡単な説明

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

Lambda 統合での HTTP API の CloudWatch エラーメッセージ

「 IntegrationError 」:「統合または API ゲートウェイで設定された IAM ロールには、統合を呼びだすアクセス許可がありません。権限を確認して、もう一度試してください。」

Lambda 認証を使用した HTTP API の CloudWatch エラーメッセージ

「 AuthorizerError 」:「認証または API ゲートウェイに設定された 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 ゲートウェイコンソールを使用して Lambda 統合で HTTP API に Lambda 呼び出しアクセス許可を追加するには

1.    API Gateway コンソールの [HTTP APIs] ペインで、作成した API の名前を選択します。

2.    左側のナビゲーションペインで、[統合] を選択します。

3.    [ 統合の管理 ] を選択します。

4.    Lambda 統合の名前を探します。次に、Lambda インテグレーションの名前の横にある [編集 ] ボタンを選択します。

5.    [呼び出しアクセス許可] で、[ API ゲートウェイのアクセス許可を付与] を選択して Lambda 関数を呼び出します。-または-API ゲートウェイが Lambda 関数を呼びだすために使用できる IAM ロール ARN を提供します。

6.    [Save] (保存) を選択します。次に、[API をデプロイ] を選択して、Lambda 呼び出しアクセス許可を API に追加します。

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

次のアクセス許可が追加された AWS CLI コマンドを実行します。

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

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

API ゲートウェイコンソールを使用して Lambda 認証を使って HTTP API に Lambda 呼び出しアクセス許可を追加するには

1.    API Gateway コンソールの [HTTP APIs] ペインで、作成した API の名前を選択します。

2.    左ナビゲーションペインで、[Authorizers] を選択します。

3.    [ 承認者を管理 ] を選択します。

4.    Lambda 認証者の名前を見つけます。次に、Lambda 認証者の名前の横にある [編集 ] ボタンを選択します。

5.    [ 呼び出しアクセス許可] で、[API ゲートウェイのアクセス許可を自動的に付与する] を選択して、Lambda 関数を呼び出します 。-または-API ゲートウェイが Lambda 関数を呼びだすために使用できる IAM ロール ARN を提供します。

6.    [Save] (保存) を選択します。次に、[API をデプロイ] を選択して、Lambda 呼び出しアクセス許可を API に追加します。

AWS CLI を使用して Lambda 認証を使って HTTP API に Lambda 呼び出しアクセス許可を追加するには

次のアクセス許可が追加された AWS CLI コマンドを実行します。

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

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

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


請求に関するサポートまたは技術サポートが必要ですか?