AWS Lambda:SAM 部署...识别并删除旧的 S3 软件包版本?

Ric*_*ard 5 aws-lambda aws-sam-cli aws-sam

我对 AWS lambda 和 SAM 比较陌生,现在我已经可以正常工作了,但我有一个看似简单的问题,但找不到答案。

上周我使用 SAM 启动并运行了一个 lambda 应用程序(多次构建、打包、部署,直到它正常工作)。

问题

所以现在我用来上传的 S3 存储桶有许多(大约 100 个)之前(由sam package)上传的我的压缩代码版本。

问题

  1. 如何识别哪些压缩包是当前的(即由当前功能和/或层使用),并删除所有旧的过时的包?
  2. SAM(命令行选项或模板文件)中是否有一种方法可以让它在您sam package上传新版本时自动删除软件包的旧版本?
  3. AWS 控制台中是否有某个位置可以找到当前函数或层正在使用的存储桶中哪个 zip 文件的密钥?(我到处尝试找到这一点,但无法找到...很容易获取 ARN,但无法获取存储桶中映射到的实际 URI)

轻微并发症

在我用来存储 lambda 包的存储桶中,我还有一个自定义层。
因此,如果只是应用程序包,我可以轻松地(现在)进入并删除存储桶中的所有内容,然后进行重新构建/打包/部署来清理它。...但这也会删除我的图层(并且 - 同样的问题 - 我现在确定该图层正在使用存储桶中的哪个 zip 文件)。

但这种方法从长远来看是行不通的,因为我计划将大约 10-15 个不同的包/函数放在一起,因此在仅更新其中一个包/函数时删除存储桶中的所有内容是行不通的。

感谢您的任何想法、想法和帮助!

Ass*_*ran 1

1.在您的packaged.yaml(调用后生成的sam package)文件中,您可以在每个 lambda 函数下看到一个CodeUri具有唯一路径的文件s3://your bucket/id。id是当前函数和/或层使用的 ID,并且驻留在您的存储桶中在层中它是ContentUri.

2.当您“sam package”上传新版本时,自动删除软件包的旧版本- 我不知道类似的事情。

3.通过AWS控制台,您可以看到您的层版本,我认为没有指示您的功能/层CodeUri/ ContentUri