gpt4 book ai didi

amazon-web-services - 创建 CodePipeline 时出现问题,AWS SAM 应用程序的部署阶段

转载 作者:行者123 更新时间:2023-12-03 07:32:03 25 4
gpt4 key购买 nike

我已经为我的 AWS SAM 应用程序创建了一个可用的 CodePipeline。它仅使用构建阶段以及以下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 中的部署阶段

我的部署步骤如下所示:

screensot

我的 CloudFormationPipelineServiceRole 此时拥有完全的管理员权限,尽管如此,执行此阶段时我仍然收到以下错误。

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

我不明白为什么会收到此错误。任何帮助将不胜感激。

最佳答案

首先,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:
...

关于amazon-web-services - 创建 CodePipeline 时出现问题,AWS SAM 应用程序的部署阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57312452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com