首页 > 解决方案 > CloudFormation 更改集阻塞空 CodeUri:在 SAM 模板中

问题描述

如果这是无效的 CloudFormation 模板,那么应该有人告诉写这篇博文的工程师:使用 CI/CD 管道管理 Lambda@Edge 和 CloudFront 部署 | 网络和内容交付

我正在使用该模板成功部署。

但我想使用变更集进行更安全的部署。

当我尝试创建更改集时,CloudFormation 告诉我缺少 CodeUri:

转换 AWS::Serverless-2016-10-31 失败,原因是:无服务器应用程序规范文档无效。发现的错误数量:1. id 为 [LambdaEdgeFunctionSample] 的资源无效。必须设置“InlineCode”或“CodeUri”

此模板部署没有问题。

此外,我认为我不能为此使用 sam 命令(使用 AWS SAM CLI | AWS Compute Blog 更简单的部署体验),因为 lambda 函数只是此 CloudFormation 模板的一小部分。

当尝试不同的 CodeURI 时,我可以看到它需要一个 s3 URL: Transform AWS::Serverless-2016-10-31 failed with: Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [MyFunction] is invalid. 'CodeUri' is not a valid S3 Uri of the form \"s3://bucket/key\" with optional versionId query parameter.

标签: amazon-web-servicesaws-lambdaamazon-cloudformationaws-sam

解决方案


对于第一篇文章中的模板,如果删除“CodeUri:”行,模板应该会成功部署。它似乎在抱怨,因为该行是空的。

如果您正在寻找一个简单的模板来启动一个 sam 项目,请查看这个https://github.com/healthbridgeltd/nodejs-sam-bootstrap

它有一个包含多个目标的 make 文件,让您的生活更轻松。


推荐阅读