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

针对管理 API 的访问控制

在本节中,您将了解如何编写 IAM 策略语句,来控制谁可以或不可以创建、部署和更新 API Gateway 中的 API。您还可以找到策略语句参考,包括与 API 管理服务有关的 ActionResource 字段的格式。

控制谁可以使用 IAM 策略创建和管理 API Gateway API

要控制谁可以或不可以使用 API Gateway 的 API 管理服务创建、部署和更新您的 API,请根据以下策略模板中显示的必要许可创建 IAM 策略文档:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Permission", "Action": [ "apigateway:HTTP_VERB" ], "Resource": [ "arn:aws:apigateway:region::resource1-path", "arn:aws:apigateway:region::resource2-path", ... ] } ] }

此处,可 AllowDeny Permission,分别授予或撤消策略语句规定的访问许可。有关更多信息,请参阅 AWS IAM 许可

HTTP_VERB 可以是 API Gateway 支持的任何 HTTP 动词* 可用于表示任何 HTTP 动词。

Resource 包含受影响的 API 实体的 ARN 列表,其中包括 RestApi资源方法集成DocumentationPart模型授权方UsagePlan 等有关更多信息,请参阅 在 API Gateway 中管理 API 的许可的 Resource 格式

通过结合不同的策略语句,您可以为单个用户、组或角色自定义对选定 API 实体的访问许可,以及针对这些实体执行特定操作的许可。例如,您可以创建以下策略,授权您的文档团队创建、发布、更新和删除特定 API 的文档部分以及查看 API 实体。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET" ], "Resource": [ "arn:aws:apigateway:region::/restapis/api-id/*" ] }, { "Effect": "Allow", "Action": [ "apigateway:POST", "apigateway:PATCH", "apigateway:DELETE" ], "Resource": [ "arn:aws:apigateway:region::/restapis/api-id/documentation/*" ] } ] }

对于负责所有操作的 API 核心开发团队,您可以创建以下 IAM 策略,授予团队更广泛的访问许可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::/*" ] } ] }

用于在 API Gateway 中管理 API 的 IAM 策略的语句参考

以下信息介绍了 IAM 策略语句中用于授予或撤消管理 API Gateway API 实体的许可的 ActionResource 元素格式。

在 API Gateway 中管理 API 的许可的 Action 格式

API 管理的 Action 表达式有以下一般格式:

apigateway:action

其中,action 是以下 API Gateway 操作之一:

  • *,代表以下所有操作。

  • GET,用于获取资源信息。

  • POST,主要用于创建子资源。

  • PUT,主要用于更新资源 (尽管不建议这样做,但也可用于创建子资源)。

  • DELETE,用于删除资源。

  • PATCH,用于更新资源。

  • HEAD,与 GET 相同,但不能返回资源表示。HEAD 主要用在测试场景中。

  • OPTIONS,可供调用方用于获取目标服务的可用通信选项相关信息。

Action 表达式的一些示例包括:

  • apigateway:*,适用于所有 API Gateway 操作。

  • apigateway:GET,仅适用于 API Gateway 中的 GET 操作。

在 API Gateway 中管理 API 的许可的 Resource 格式

API 管理的 Resource 表达式有以下一般格式:

arn:aws:apigateway:region::resource-path-specifier

其中,region 是目标 AWS 区域 (例如,适用于所有受支持的 AWS 区域的 us-east-1*),而 resource-path-specifier 是前往目标资源的路径。

一些示例资源表达式包括:

  • arn:aws:apigateway:region::/restapis/*,适用于 AWS region 区域内的所有资源、方法、模型和阶段。

  • arn:aws:apigateway:region::/restapis/api-id/*,适用于 AWS region 区域内带 api-id 标识符的 API 中的所有资源、方法、模型和阶段。

  • arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/*,适用于带 resource-id 标识符的资源中的所有资源和方法,其中该资源位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/methods/*,适用于带 resource-id 标识符的资源中的所有方法,其中该资源位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/methods/GET,仅适用于带 resource-id 标识符的资源内的 GET 方法,其中该资源位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/models/* 适用于 AWS region 区域内带 api-id 标识符的 API 中的所有模型。

  • arn:aws:apigateway:region::/restapis/api-id/models/model-name,适用于名为 model-name 的模型,该模型位于 AWS region 区域内带 api-id 标识符的 API 中。

  • arn:aws:apigateway:region::/restapis/api-id/stages/*,适用于 AWS region 区域内带 api-id 标识符的 API 中的所有阶段。

  • arn:aws:apigateway:region::/restapis/api-id/stages/stage-name,仅适用于名为 stage-name 的阶段,该阶段位于 AWS region 区域内带 api-id 标识符的 API 中。