amazon-web-services - 旧的 AWS Lambda 层会自动删除吗?如果没有,如何删除它们?
问题描述
在阅读了这篇讨论使用 AWS Lambda 函数的主要缺点的文章后,我试图避免作者必须处理的事情,并对我自己的代码进行一些清理:
“ Lambda 版本每个函数。我们使用无服务器框架开发 Lambda 应用程序。这意味着无服务器创建 Lambda 函数。我们的平均 Lambda 函数约为 60MB。[...]
当您将 CI/CD 与快速开发和 Lambda 函数结合时,你会得到很多版本,甚至上百个。而 Lambda 代码存储限制为 75GB。我们达到了这个限制,而且我们很努力。经过两年的 CI/CD 驱动开发,我们缺乏版本清理导致我们的开发完全陷入僵局过程。”
(强调我的)
关于我的架构。我有 lambda 函数,它们从存储在layers中的自制 python 包中调用方法。目标是避免在 lambda 中包含太多代码并轻松重用其中的功能。
现在,我找到了如何删除旧版本的 lambda 函数(我也在使用无服务器框架,它提供了一个很好的插件,可以在部署堆栈时自动修剪它们)。但是,我不知道 AWS 是否会自动删除旧层:我还没有找到一个可以汇总所有层版本的总代码大小的仪表板,也找不到自动删除它们的插件。
旧的 AWS Lambda 层会自动删除吗?如果没有,我怎么能批量删除它们?
解决方案
旧图层不会自动删除。您可以运行如下 CLI 命令来删除层版本:
$ aws lambda delete-layer-version --layer-name my-layer --version-number 1
他们的关键点是您正在删除图层的一个版本。您可以在循环中运行上面的命令以批量删除一堆层版本,也许与调用list-layer-versions结合使用。您还可以通过控制台删除图层版本。删除图层的所有版本后,图层本身就会被删除。该链接的其他一些有趣的观点是
删除图层版本后,您将无法再配置功能来使用它。但是,任何已经使用该版本的函数都可以继续访问它。版本号永远不会重新用于层名称。
该文档没有指定在 lambda 中保留的“已删除”层,而函数仍然引用它是否计入您的总大小配额。
另见
为避免破坏函数,该版本的副本会保留在 Lambda 中,直到没有函数引用它。
推荐阅读
- dll-injection - 如何从我的 VSTS MSTest 管道中的另一个管道使用 VSTS 工件 DLL
- codeception - 如何修复代码接收中的此 DEPRECATION 错误?
- latex - 乳胶只写到页面中间
- powershell - 更改 O365 脚本以使用用户提示输入更改职位?
- c# - 是否有任何理由仅使用字符串参数使用 string.Format() ?
- php - 在自动加载时使用 Codeigniter 中配置文件中的更新值的问题
- android - Android中的动画图像过渡
- django - 如何在 Django-oscar 中从主页内部重定向到目录页面?
- sql - 从 SQL 表中捕获每台计算机的最高值
- laravel - 每个模型的自定义存储路径