创建API网关的部署权限

时间:2018-03-05 23:00:18

标签: amazon-web-services aws-api-gateway

我在API网关部署方面实现了自动化:

aws apigateway create-deployment ...

我正在尝试将我的功能包装在持续部署中,而我似乎无法理解IAM权限,这些权限似乎偏离了其他服务中的所有其他IAM权限:

  • apigateway:GET
  • apigateway:PUT
  • apigateway:POST
  • apigateway:DELETE
  • apigateway:PATCH
  • apigateway:OPTIONS

Cloudonaut Documentation; "Control Access for Managing an API"

权限似乎只涵盖各个阶段:

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

  • arn:aws:apigateway:region::/restapis/api-id/*
    API中所有资源,方法,模型和阶段的标识为api-id的区域。

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

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

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

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

  • arn:aws:apigateway:region::/restapis/api-id/models/model-name
    对于名称为model-name的模型,该模型在API中,在区域的AWS区域中具有api-id标识符。

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

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

如何授予为给定阶段创建部署的能力? apigateway:PUTapigateway:POST

2 个答案:

答案 0 :(得分:0)

通过测试,我已经阐明了所需的政策:

{
    "Action": "apigateway:POST",
    "Resource": "arn:aws:apigateway:us-east-1::/restapis/${rest_api_id}/deployments",
    "Effect": "Allow",
    "Sid": "AllowApiGatewayDeployments"
}

可能无法将部署限制在给定阶段,但我不知道,因为我没有对此进行测试。

答案 1 :(得分:0)

尝试一下:

{ "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages/${stage_name}", "Effect": "Allow", "Sid": "VisualEditor" }