Amazon API Gateway
開発者ガイド

API Gateway リソースポリシーを作成して API にアタッチする

API 実行サービスを呼び出して、ユーザーによる API へのアクセスを許可するには、API Gateway リソースポリシーを作成する必要があります。これにより、API Gateway リソースへのアクセスは制御され、ポリシーが API にアタッチされます。

リソースポリシーは、API 作成時に API にアタッチできます。または、後でアタッチすることができます。プライベート API の場合、リソースポリシーをプライベート API にアタッチするまで、API へのすべての呼び出しは失敗します。

重要

API 作成後にリソースポリシーを更新する場合は、更新後のポリシーをアタッチしてから API をデプロイし、変更を伝達する必要があります。ポリシーのみ、更新または保存した場合、API のランタイム動作が変更されることはありません。API のデプロイの詳細については、「Amazon API Gateway での REST API のデプロイ」を参照してください。

アクセスは、AWS アカウント、ソース VPC、ソース VPC エンドポイント、IP 範囲の条件を含む IAM 条件要素によって制御できます。ポリシーの Principal"*" に設定されている場合は、リソースポリシーと一緒にその他の認証タイプを使用できます。Principal"AWS" に設定されている場合、セキュリティで保護されていないリソースなど、AWS_IAM 認証で保護されていないすべてのリソースでは認証に失敗します。

次のセクションでは、独自の API Gateway リソースポリシーを作成し、API にアタッチする方法について説明します。ポリシーをアタッチすると、そのポリシーのアクセス権限が API のメソッドに適用されます。

重要

API Gateway コンソールを使用してデプロイ済み API にリソースポリシーをアタッチする場合、または既存のリソースポリシーを更新する場合、変更を有効にするにはコンソールの API を再デプロイする必要があります。

API Gateway リソースポリシーをアタッチする (コンソール)

リソースポリシーを API Gateway API にアタッチするには、AWS マネジメントコンソールを使用します。

リソースポリシーを API Gateway API にアタッチするには

  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

  2. API 名を選択します。

  3. 左のナビゲーションペインで、[Resource Policy (リソースポリシー)] を選択します。

  4. 必要に応じて、[] のいずれかを選択します。ポリシーの例では、プレースホルダーは、二重波括弧 ("{{placeholder}}") で囲まれています。各プレースホルダー (波括弧を含む) を必要な情報に置き換えます。

    どの [] も使用しない場合は、リソースポリシーを入力します。

  5. [Save] を選択します。

API が API Gateway コンソールで以前にデプロイ済みの場合、リソースポリシーを有効にするには再デプロイする必要があります。

API Gateway リソースポリシーをアタッチする (AWS CLI)

AWS CLI を使用して、新しい API を作成し、リソースポリシーをその API にアタッチするには、次のように create-rest-api コマンドを呼び出します。

aws apigateway create-rest-api \ --name "api-name" \ --policy "{\"jsonEscapedPolicyDocument\"}"

AWS CLI を使用して、リソースポリシーを既存の API にアタッチするには、次のように update-rest-api コマンドを呼び出します。

aws apigateway update-rest-api \ --rest-api-id api-id \ --patch-operations op=replace,path=/policy,value='{\"jsonEscapedPolicyDocument\"}'

API Gateway リソースポリシーをアタッチする (API Gateway API)

API GatewayREST API を使用して、新しい API を作成し、リソースポリシーをその API にアタッチするには、次のように create-rest-api コマンドを呼び出します。

POST /restapis { "name": "api-name", "policy": "{\"jsonEscapedPolicyDocument\"}" } // simplified format supported here because apiId is not known yet and partition/region/account can be derived at import time // "Resource": [ // "execute-api:/stage/method/path" // ]

API GatewayREST API を使用して、リソースポリシーを既存の API にアタッチするには、次のように restapi:create コマンドを呼び出します。

PATCH /restapis/api-id { "patchOperations" : [ { "op": "replace", "path": "/policy", "value": "{\"jsonEscapedPolicyDocument\"}" } ] }

API Gateway リソースポリシーをアタッチする OpenAPI の例

アタッチされたリソースポリシーを使用して、API の OpenAPI 定義をインポートするには、次の例に示すように restapi:import コマンドを使用します。

OpenAPI 3.0OpenAPI 2.0
OpenAPI 3.0
{ "openapi": "3.0", "x-amazon-apigateway-policy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/Alice", "arn:aws:iam::111122223333:root" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/stage/method/path" // simplified format supported here because apiId is not known yet and partition/region/account can derived at import time ] } ] }, "info" : { "title" : "Example" }, "paths": {...} }
OpenAPI 2.0
{ "swagger": "2.0", "x-amazon-apigateway-policy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/Alice", "arn:aws:iam::111122223333:root" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/stage/method/path" // simplified format supported here because apiId is not known yet and partition/region/account can derived at import time ] } ] }, "info" : { "title" : "Example" }, "schemes": [ "https" ], "paths": {...} }