从S3强制重新部署Lambda函数?

时间:2019-08-28 15:29:49

标签: aws-lambda

我在Cloudformation模板中定义了一个Lambda函数,并引用了S3存储桶和密钥,在其中我以通常的方式保存了一个包含Lambda源的zip文件。我有一个单独的CI构建过程,用于构建Lambda函数并将其转储到S3中。现在,我希望Cloudformation模板中的S3密钥是静态的,我不想在每次Lambda commit + rebuild时都对其进行更改。但是Cloudformation认为Lambda并没有改变,因为即使zipfile的内容已经改变,S3密钥也没有改变。

我必须每次都更改S3密钥以触发Lambda重新部署,或者是否有办法通过Cloudformation强制Lambda重新部署,同时保留静态密钥?

1 个答案:

答案 0 :(得分:1)

是的,CFT无法实现更改,因为尽管S3键的内容已更改,但仍保持不变。

正如您提到的,可以使S3 Key与以前的CFT执行不同,以便部署lambda代码。

您必须保留S3键作为CFT参数

否则,请尝试在AWS Code Build中使用SAM打包,然后将Code Deploy与Cloud Formation一起使用。

此处,该位置不会被称为zip,而是采用代码路径并进行构建,并且模板每次都使用新的部署程序包位置进行更新。 (请参阅CodeBuild中的buildspec.yml)

参考:

https://docs.aws.amazon.com/lambda/latest/dg/build-pipeline.html

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-deploying.html

希望这会有所帮助。