【问题标题】:Are old AWS Lambda layers automatically removed? If not, how to delete them?旧的 AWS Lambda 层会自动删除吗?如果没有,如何删除它们?
【发布时间】:2019-10-03 13:49:47
【问题描述】:

在阅读 this article 讨论使用 AWS Lambda 函数的主要缺点时,我试图避免作者必须处理的内容并对我自己的代码进行一些清理:

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

(强调我的)

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

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

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

【问题讨论】:

    标签: amazon-web-services serverless aws-lambda-layers


    【解决方案1】:

    旧图层不会自动删除。你可以run a CLI command比如下面这样删除一个层version

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

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

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

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

    另见

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

    【讨论】:

    • 我也找到了这个命令,但由于我无法获得相当旧的层的信息,我认为它们是 AWS 方面正在进行的一些自动清理;好像是别的东西。我很烦恼没有批量删除选项,但我会听从你的建议并编写脚本。感谢您的回答!
    猜你喜欢
    • 2021-06-30
    • 2023-01-03
    • 2011-09-09
    • 2012-01-31
    • 1970-01-01
    • 2021-11-12
    • 2012-01-20
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多