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