【发布时间】:2018-08-25 02:01:38
【问题描述】:
我有一个已验证可以正常工作的 Lambda 函数。我可以使用“update-function-code”在命令行上手动更新函数,但我一直在尝试让它与 Code Pipeline 和 Cloud Formation 一起使用。 以下是我到目前为止的步骤:
- 来源 - 从 github 获取代码。这可以正常工作。
- 构建 - 在 Solano(第 3 方 CI)中测试代码。这也很有效,在最后阶段它会压缩存储库并将其上传到我的 S3 存储桶。
- 部署 - 这是“部署”操作类别,操作模式为“创建或替换更改集”。如果 Lambda 函数已经存在,这将不起作用。
- Beta - 执行变更集。如果更改集生成正确,则此方法有效。
我的 samTemplate.yml 看起来像这样:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: My Lambda function
Resources:
LambdaFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: MyLambdaExecute
Description: My Lambda function
Handler: myhandler.handler
Runtime: nodejs6.10
CodeUri: s3://mybucket/mydirectory/mylambdacode.zip
AutoPublishAlias: Staging
Timeout: 30
DeploymentPreference:
Type: AllAtOnce
如果名称为“MyLambdaExecute”的 lambda 函数不存在并且我将代码推送到 github,则它可以完美运行。但是,如果我修改一些代码并再次推送,它会运行前两个步骤,但随后会生成一个空的更改集,其状态为:
FAILED - 不执行更新。
我不确定我必须做些什么才能让它发布一个新版本。我如何让它意识到它需要创建一个新的变更集?
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cloudformation aws-codepipeline