Amazon API Gateway
開発者ガイド

API Gateway リソースポリシーの例

このページでは、API Gateway リソースポリシーの一般的なユースケースの例をいくつか紹介します。このポリシーでは、account-id および api-id の文字列がリソース値に使用されます。これらのポリシーをテストするには、これらの文字列を独自のアカウント ID および API ID に置き換える必要があります。アクセスポリシー言語の詳細については、「Amazon API Gateway のアクセスポリシー言語の概要」を参照してください。

例: 別の AWS アカウントのユーザーによる API の使用を許可する

次のリソースポリシーの例では、署名バージョン 4 (SigV4) プロトコルを使用して、1 つの AWS アカウントの API アクセスを異なる AWS アカウントの 2 人のユーザーに許可します。具体的には、account-id-2 によって識別される AWS アカウントの Alice と root ユーザーには、account-id-1 によって識別される AWS アカウントの pets リソース (API) に対して GET アクションを実行するための execute-api:Invoke アクションが付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:user/Alice", "account-id-2" ] }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id-1:api-id/stage/GET/pets" ] } ] }

例: 送信元の IP アドレスまたは IP アドレスの範囲に基づき、API トラフィックを拒否する

次のリソースポリシーの例は、指定された 2 つの送信元 IP アドレスブロックから API への受信トラフィックを拒否 (ブロック) する「ブラックリスト」ポリシーです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/*" ], "Condition" : { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

例: ソース VPC または VPC エンドポイントに基づいてプライベート API トラフィックを許可する

次のリソースポリシーの例では、指定された Virtual Private Cloud (VPC) または VPC エンドポイントからのみ、プライベート API への受信トラフィックを許可します。

このリソースポリシーの例では、ソース VPC を指定します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

このリソースポリシーの例では、ソース VPC エンドポイントを指定します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }