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 网关操作时,模板由 codepipelinecloudformation 成功部署。也就是说,如果我有以下声明:

Actions:
  - apigateway:*
Effect: Allow
Resource: !Sub "arn:${AWS::Partition}:apigateway:*::/*"

问题:是否可以让 codepipelinecloudformation 创建一个 api 网关而不提供 catchall(*) api 网关操作?

API 网关 IAM 策略中没有此类操作,例如:

  - apigateway:GetResources
  - apigateway:GetRestApis

API 网关权限具有 form 的:

apigateway:HTTP_VERB

所以你可能需要 GET:

Actions:
  - apigateway:DELETE
  - apigateway:GET
  - apigateway:POST