Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

API Gateway 资源策略示例

此页面介绍了几个 API Gateway 资源策略的典型使用案例。策略在资源值中使用 account-idapi-id 字符串。要测试这些策略,您需要将这些字符串替换为自己的账户 ID 和 API ID。有关访问策略语言的更多信息,请参阅Amazon API Gateway 的访问策略语言概述

示例:允许另一个 AWS 账户中的用户使用 API

以下资源策略示例通过签名版本 4 (SigV4) 协议向位于不同 AWS 账户中的两个用户授予一个 AWS 账户中的 API 访问权限。具体而言,向由 account-id-2 标识的 AWS 账户的 Alice 和根用户授予了 execute-api:Invoke 操作权限,允许他们对由 account-id-1 标识的 AWS 账户中的 pets 资源 (API) 执行 GET 操作。

{ "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 地址或范围拒绝 API 流量

以下资源策略示例是一个“黑名单”策略,该策略拒绝 (阻止) 两个指定源 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" } } } ] }