我有一个关于API网关部署的自动化:
aws apigateway create-deployment ...
我试图将我的功能包装在持续部署中,我似乎无法理解IAM权限,它似乎偏离了其他服务的所有其他IAM权限:
apigateway:GET
apigateway:PUT
apigateway:POST
apigateway:DELETE
apigateway:PATCH
apigateway:OPTIONS
(Qazxswpoi; Cloudonaut Documentation)
权限似乎只涵盖阶段:
arn:aws:apigateway:region::/restapis/*
对于API中的所有资源,方法,模型和阶段,在区域的AWS区域中具有api-id标识符。arn:aws:apigateway:region::/restapis/api-id/*
对于资源中具有标识符resource-id的所有资源和方法,该标识符位于具有区域的AWS区域中的api-id标识符的API中。arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/*
对于资源中具有标识符resource-id的所有方法,该标识符位于具有区域的AWS区域中的api-id标识符的API中。arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/methods/*
仅用于具有标识符resource-id的资源中的GET方法,该标识符位于具有区域的AWS区域中的api-id标识符的API中。arn:aws:apigateway:region::/restapis/api-id/resources/resource-id/methods/GET
对于API中的所有模型,在区域的AWS区域中具有api-id标识符。arn:aws:apigateway:region::/restapis/api-id/models/*
对于名称为model-name的模型,该模型位于API中,区域的AWS区域中具有api-id标识符。arn:aws:apigateway:region::/restapis/api-id/models/model-name
对于API中的所有阶段,在区域的AWS区域中具有api-id的标识符。arn:aws:apigateway:region::/restapis/api-id/stages/*
仅适用于API中具有stage-name名称的阶段,其区域的AWS区域中具有api-id的标识符。如何授予为给定阶段创建部署的能力? arn:aws:apigateway:region::/restapis/api-id/stages/stage-name
? apigateway:PUT
?
通过测试,我已经阐明了所需的政策:
apigateway:POST
可能无法将部署限制到给定阶段,但我不知道,因为我没有对此进行测试。
试试这个:
{
"Action": "apigateway:POST",
"Resource": "arn:aws:apigateway:us-east-1::/restapis/${rest_api_id}/deployments",
"Effect": "Allow",
"Sid": "AllowApiGatewayDeployments"
}