12

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

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

(强调我的)

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

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

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

4

1 回答 1

14

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

$ aws lambda delete-layer-version --layer-name my-layer --version-number 1

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

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

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

另见

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

于 2019-10-03T16:28:51.260 回答