我已经启动了这个堆并且需要更新它的 Lamdba 函数,我做了一些修改并点击部署,新版本的函数被保存了,但是 Lambda 应用程序仍然引用函数的第一个版本,我试图更新堆栈,从本地环境部署但没有任何效果,唯一的方法是重新创建整个堆栈,并在 yml 模板中链接修改后的函数。
答案1
我还没有测试过,但问题似乎出在 S3 事件通知设置中,“目标”部分包含一个指向 Lambda 函数第一个版本的 ARN 链接。因此,导航到S3 存储桶名称- 属性选项卡 - 事件通知部分 - 编辑通知 - 目标部分 - Lambda 函数。希望这对您有所帮助。
答案2
我的解决方案可能有点老了,但仍然有效。您可以将代码版本号放在文件名中,然后将其作为参数传递给 CF 模板。除非 CF 知道那里有不同之处,否则它不会更新函数,因此仅更新 zip 是不够的,您需要更改其名称。这样,您只需重新创建 lambda,而不是整个堆栈。
例如,
CodeUri: s3://bucket/myfunc.zip
使用
CodeUri: s3://bucket/myfunc-v0.1.2.zip
当然,每次代码改变时都会更新值。