本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
API Gateway 资源策略示例
此页面介绍 API Gateway 资源策略的几个典型使用案例。
以下示例策略使用简化语法来指定 API 资源。此简化语法是一种缩写方式,通过这种方式,您可以引用 API 资源,而不指定完整的 Amazon Resource Name (ARN)。当您保存策略时,API Gateway 会将缩写语法转换为完整 ARN。例如,您可以在资源策略中指定资源 execute-api:/
。当您保存资源策略时, API Gateway 会将资源转换为 stage-name
/GET
/pets
arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets
。API Gateway 使用当前区域、您的 Amazon 账户 ID 以及与资源策略关联的 REST API 的 ID 来生成完整的 ARN。您可以使用 execute-api:/*
来表示当前 API 中的所有阶段、方法和路径。有关访问策略语言的更多信息,请参阅 Amazon API Gateway 的访问策略语言概述。
主题
示例:允许其他 Amazon 账户中的角色使用 API
以下示例资源策略通过签名版本 4 (Sigv4) 协议向不同 Amazon 账户中的两个角色授予一个账户中的 API 访问权限。 Amazon 具体而言,由标识的 Amazon 账户的开发者和管理员角色
被授予对您 Amazon 账户中的account-id-2
pets
资源 (API) 执行操作的GET
操作。execute-api:Invoke
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
account-id-2
:role/developer", "arn:aws:iam::account-id-2
:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/stage
/GET/pets" ] } ] }
示例:基于源 IP 地址或范围拒绝 API 流量
以下资源策略示例拒绝(阻止)从两个指定源 IP 地址块向 API 传入流量。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "IpAddress": { "aws:SourceIp": ["
192.0.2.0/24
", "198.51.100.0/24
" ] } } } ] }
示例:使用私有 API 时,基于源 IP 地址或范围拒绝 API 流量
以下资源策略示例拒绝(阻止)两个指定源 IP 地址块向私有 API 传入流量。使用私有 API 时,execute-api
VPC 终端节点重新写入原始源 IP 地址。aws:VpcSourceIp
条件根据原始请求方 IP 地址筛选请求。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "IpAddress": { "aws:VpcSourceIp": ["
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": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpc": "
vpc-1a2b3c4d
" } } } ] }
此示例资源策略指定源 VPC 终端节点:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": "
vpce-1a2b3c4d
" } } } ] }