我正在尝试使用部署到 Lambda 的 Cloudformation SAM 堆栈设置 AWS Codepipeline,并通过 Pipeline 控制台执行此操作。管道传递来自 Codecommit 过程的克隆和使用 Codebuild 的构建过程,但是在使用 Cloudformation 进行部署时失败。
我收到以下错误消息:
Action execution failed
Invalid TemplatePath: MyAppBuild::samTemplate.yml
我一直在非常密切地关注文档(http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html),并且在我一直关注的代码管道设置表单(模板文件)的第 16 字段中放 samTemplate.yml。
我的 repo 的根目录中也有 samTemplate.yml(这也是项目的根目录)。
我已将 Codebuild 输出工件名称与 Cloudformation 输入工件名称匹配,并且它们完全匹配。
我在这里错过了什么吗?如何让 Cloudformation 部署过程识别 sam 模板?
编辑 1我已经改用 Codestar 而不是直接使用 CodePipeline。我的 buildspec.yml 中没有什么特别之处,但如果有人感兴趣,它会在下面。
version: 0.2
phases:
install:
commands:
- echo "install"
pre_build:
commands:
- echo "pre_build"
build:
commands:
- aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.json
artifacts:
type: zip
files:
- template-export.json
对于 CodeBuild 的新手来说,要记住的一件事是,由此创建的 zip 文件是构建操作的根目录,并且是传输到最终部署(在我的例子中是 Lambda)的 zip 文件。