我在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:PUT
? apigateway:POST
?
答案 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"
}