旧的 AWS Lambda 层会自动删除吗?如果没有,如何删除它们?

ava*_*ula 12 amazon-web-services serverless aws-lambda-layers

在阅读这篇讨论使用 AWS Lambda 函数的主要缺点的文章后,我试图避免作者必须处理的问题并对我自己的代码执行一些清理:

" Lambda 版本每个函数。我们使用无服务器框架来开发 Lambda 应用程序。这意味着无服务器创建 Lambda 函数。我们的平均 Lambda 函数约为 60MB。[...]
当您将 CI/CD 与快速开发和 Lambda 函数结合使用时,你有很多版本。甚至有数百个。而且 Lambda 代码存储被限制在 75GB。我们达到了这个限制,我们很难做到。经过两年的 CI/CD 驱动开发,我们缺乏版本清理导致我们的开发完全陷入僵局过程。”

(强调我的)

关于我的架构。我有 lambda 函数,它们调用存储在layer 中的自制 python 包中的方法。目标是避免在 lambda 中包含太多代码并轻松重用其中的功能。

现在,我找到了如何删除旧版本的 lambda 函数(我也在使用无服务器框架,它提供了一个很好的插件,用于在部署堆栈时自动修剪它们)。但是,我不知道 AWS 是否会自动删除旧层:我还没有找到汇总我所有层版本的总代码大小的仪表板,而且我找不到自动删除它们的插件。

旧的 AWS Lambda 层会自动删除吗?如果没有,我怎么能批量删除它们?

Sha*_*awn 14

旧图层不会自动删除。您可以运行如下CLI 命令来删除层版本

$ aws lambda delete-layer-version --layer-name my-layer --version-number 1
Run Code Online (Sandbox Code Playgroud)

他们在这里的关键点是您正在删除图层的一个版本。您可以循环运行上面的命令以批量删除一堆图层版本,也许结合调用list-layer-versions。您还可以通过控制台删除图层版本。删除图层的所有版本后,图层本身也将被删除。该链接中的其他一些有趣观点是

删除图层版本后,您将无法再配置使用它的功能。但是,任何已经使用该版本的函数都可以继续访问它。版本号永远不会重新用于图层名称。

该文档没有指定在 lambda 中保留的“已删除”层,而函数仍然引用它是否计入您的总大小配额。

另见

为避免破坏函数,版本的副本保留在 Lambda 中,直到没有函数引用它。