CodePipeline 部署 SAM 模板错误并添加操作
CodePipeline Deploying SAM Template Error With Added Action
我有一个 SAM
模板,其中包含创建 lambda 函数和 api 网关的资源。模板与 lambda 函数的代码和 buildspec.yaml
文件一起保存。当我 运行 通过 codepipeline
的代码没有 api 网关资源时,SAM
模板被转换并成功部署。当我包含创建 api 网关所需的资源时,我在创建时遇到以下错误:
AccessDenied. User doesn't have permission to call apigateway:GetResources
当我查看附加到 cloudformation 角色的策略时,我有以下内容:
Actions:
- apigateway:DELETE
- apigateway:GetResources
- apigateway:GetRestApis
- apigateway:POST
Effect: Allow
Resource: !Sub "arn:${AWS::Partition}:apigateway:*::/*"
操作已定义 apigateway:GetResources
但它仍然失败。当我允许所有 api 网关操作时,模板由 codepipeline
和 cloudformation
成功部署。也就是说,如果我有以下声明:
Actions:
- apigateway:*
Effect: Allow
Resource: !Sub "arn:${AWS::Partition}:apigateway:*::/*"
问题:是否可以让 codepipeline
和 cloudformation
创建一个 api 网关而不提供 catchall(*) api 网关操作?
API 网关 IAM 策略中没有此类操作,例如:
- apigateway:GetResources
- apigateway:GetRestApis
API 网关权限具有 form 的:
apigateway:HTTP_VERB
所以你可能需要 GET
:
Actions:
- apigateway:DELETE
- apigateway:GET
- apigateway:POST
我有一个 SAM
模板,其中包含创建 lambda 函数和 api 网关的资源。模板与 lambda 函数的代码和 buildspec.yaml
文件一起保存。当我 运行 通过 codepipeline
的代码没有 api 网关资源时,SAM
模板被转换并成功部署。当我包含创建 api 网关所需的资源时,我在创建时遇到以下错误:
AccessDenied. User doesn't have permission to call apigateway:GetResources
当我查看附加到 cloudformation 角色的策略时,我有以下内容:
Actions:
- apigateway:DELETE
- apigateway:GetResources
- apigateway:GetRestApis
- apigateway:POST
Effect: Allow
Resource: !Sub "arn:${AWS::Partition}:apigateway:*::/*"
操作已定义 apigateway:GetResources
但它仍然失败。当我允许所有 api 网关操作时,模板由 codepipeline
和 cloudformation
成功部署。也就是说,如果我有以下声明:
Actions:
- apigateway:*
Effect: Allow
Resource: !Sub "arn:${AWS::Partition}:apigateway:*::/*"
问题:是否可以让 codepipeline
和 cloudformation
创建一个 api 网关而不提供 catchall(*) api 网关操作?
API 网关 IAM 策略中没有此类操作,例如:
- apigateway:GetResources
- apigateway:GetRestApis
API 网关权限具有 form 的:
apigateway:HTTP_VERB
所以你可能需要 GET
:
Actions:
- apigateway:DELETE
- apigateway:GET
- apigateway:POST