【问题标题】:Problem creating CodePipeline, Deploy stage for AWS SAM application为 AWS SAM 应用程序创建 CodePipeline、部署阶段时出现问题
【发布时间】:2019-12-10 06:05:13
【问题描述】:

我为我的 AWS SAM 应用程序创建了一个有效的 CodePipeline。 它仅使用 SourceBuild 阶段以及以下buildspec.yaml 文件

version: 0.2
phases:
  install:
    runtime-versions:
      python: 3.7
    commands:
      - pip install --user aws-sam-cli
      - USER_BASE_PATH=$(python -m site --user-base)
      - export PATH=$PATH:$USER_BASE_PATH/bin
  build:
    commands:
      - sam build
  post_build:
    commands:
      sam package --s3-bucket deploy-bucket --output-template-file deployment.yaml
    # finally:
    #   sam deploy --template-file deployment.yaml --stack-name MyStackSAM--region us-east-1 --capabilities CAPABILITY_IAM

如您所见,我已注释掉最后两行,因为我想将该操作移至 CodePipeline 中的 Deploy 阶段

我的部署步骤如下所示:

我的CloudFormationPipelineServiceRole 在这一点上拥有完全的管理员权限,而且我仍然收到以下错误作为执行此阶段的结果。

Action execution failed
Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXFFFFFXXXX; S3 Extended Request ID: XXXXFFFFFXXXXFFFFFXXXXX=)

我不知道为什么会出现此错误。任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-code-deploy aws-codepipeline aws-sam


    【解决方案1】:

    首先,sam package 需要需要通过 --template-file 标志传递的源模板文件。我在您的代码中的任何地方都看不到该模板文件。您要打包哪个模板文件?

    其次,您没有将必要的工件上传到 s3 存储桶。您上传的唯一内容是压缩代码,但正如您从注释掉的命令中看到的那样:

    sam deploy --template-file deployment.yaml --stack-name MyStackSAM--region us-east-1 --capabilities CAPABILITY_IAM
    

    您还需要此文件deployment.yaml,但您没有在代码中指定。 CodeBuild 无法猜测您要保留哪些工件。

    您需要在构建规范文件的底部添加额外的 artifacts 部分并指定这些工件。

    artifacts:
      type: zip
      files:
        - template.yaml             # (where do you have this file?)
        - outputtemplate.yaml       # (deployment.yaml in your case)
    

    注意artifacts 部分需要与versionphases 处于同一级别

    version: 0.2
    phases:
      ...
    artifacts:
      ...
    

    【讨论】:

    • 工作就像一个魅力!要回答您关于template.yaml 的问题,我相信sam build 如果未指定任何内容,则默认使用此特定名称。所以我最终只添加了deployment.yamlfiles: 部分,这就成功了。再次感谢!
    猜你喜欢
    • 2021-08-07
    • 2019-04-24
    • 2018-02-18
    • 2020-12-03
    • 2020-07-14
    • 2020-09-12
    • 2019-11-11
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多