我们有一个无服务器堆栈,它依赖多个 AWS Lambda 来执行任务。为了帮助使代码可重用,我们在 Lambda 之间共享了多个 Lambda 层。
我们的问题是,当我们对图层进行更改时,它会创建该图层的新版本。所有使用该层的 Lambda 都不会自动使用最新版本。然而,它们足够聪明,可以检测到有新版本并且不再运行(抛出需要使用最新层的异常)
对于 50 多个 Lambda,AWS 门户的层更新流程非常糟糕。一个接一个,手动打开每个 Lambda,删除层,添加新层等。
有没有办法使用 CLI 或其他一些自动化方法更新所有 Lambda 以使用所有必要层的最新版本?
每次您通过 Lambda 函数更新层循环并更新其配置时。您可以使用AWS CLI来执行此操作:
不过,更好的方法是为您的层和 lambda 部署 CI/CD 并配置依赖项。每当更新层管道时,它应该触发重新部署依赖于该层的所有 Lambda。所有现代 CI/CD 工具都可以做到这一点——GitLab、Jenkins、GoCD 甚至 AWS CodePipeline。
这样,您所要做的就是将新层代码推送到 git 存储库,而您的 CI/CD 工具将负责其余的工作。
希望有帮助:)
AWS Lambda 控制台现在支持批量更新,截至 2022 年 3 月 31 日:AWS 公告。