7

我正在使用 aws cli 部署 AWS Lambda 层:

aws lambda publish-layer-version --layer-name my_layer --zip-file fileb://my_layer.zip

我删除它使用

VERSION=$(aws lambda list-layer-versions --layer-name my_layer | jq '.LayerVersions[0].Version'
aws lambda delete-layer-version --layer-name my_layer --version-number $VERSION

删除成功,确保不存在其他版本的图层。

aws lambda list-layer-versions --layer-name my_layer
>
{
    "LayerVersions": []
}

在下一次发布该层时,它仍然保留以前版本的历史记录。从我读到的如果不存在层版本并且不存在参考,版本历史应该消失了,但我没有看到。有人有解决方案来硬删除带有版本的图层吗?

4

4 回答 4

3

我也有同样的问题。我想要实现的是将版本计数“重置”为 1,以匹配我的仓库中的代码版本控制和标签。目前,我发现的唯一方法是使用新名称发布一个新图层。

我认为 AWS Lambda 产品缺乏有助于(语义)版本控制的功能。

于 2020-04-15T11:49:12.637 回答
1

目前没有办法做到这一点。图层版本是不可变的,它们无法更新或修改,您只能删除和发布新的图层版本。一旦图层版本被“标记” - 就没有办法(AFAIK)您可以返回并取回该图层版本。

可能是在一段时间后(几周...几个月?)AWS删除了它对层版本的记忆,但就目前而言,分配给任何已删除层的版本号不能被任何新层假定。

于 2020-03-25T05:53:32.187 回答
1

我在图层版本中遇到了类似的问题。您是否有关于简单出路的建议,而不是编写代码来检查可用版本并选择最新版本...

于 2020-04-08T14:33:22.250 回答
0

我面临同样的问题,因为没有 aws-cli 命令来删除层本身,我已经删除了我的 lambda-layer 的所有版本,使用:

aws lambda delete-layer-version --layer-name test_layer --version-number 1

删除图层的所有版本后,该图层未显示在 aws lambda 图层页面中,所以我认为它已成功删除。

但令我惊讶的是,AWS 仍然保留有关我们已删除层的数据(肯定至少是最后一个版本),当您尝试使用 aws gui 或 cli 使用之前删除的 lambda 名称创建 lambda 层时,该版本不会从1,而是从假定被删除层的 last_version 开始。

于 2020-12-11T14:56:58.153 回答