2

我正在尝试使用 AWS CLI 实现一些自动化,
其中我可以使用 cli 命令更新我的 AWS Lambda 函数 -

aws lambda update-function-code --function-name --zip-file

并使用以下命令向图层添加版本 -

aws lambda publish-layer-version --layer-name wor --compatible-runtimes nodejs8.10 --zip-file

我想要实现的是,将特定层的最新版本链接到函数,
比如 -

aws lambda get-layer-version --layer-name some_name_here --version-number $LATEST

我该怎么做?

4

2 回答 2

6

这不太可能是您正在寻找的答案,但这不受支持。所以你不能那样做。层被设计为通过特定版本使用,AWS 不提供“最新”选项,该选项将始终导致 lambdas 获取并使用最新的层版本。 该文档说:

您选择要使用的图层的特定版本。如果您想稍后使用其他版本,请更新您的函数配置。

您必须通过提供层版本的完整 ARN 来指定要使用的每个层的版本。

使用层的函数直接引用层版本。

要成为有效的 ARN,它需要“唯一标识”资源,而“最新”不会这样做。请参阅https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awslambda.html#awslambda-resources-for-iam-policies

它继续指出

“当你删除一个层版本时,你不能再配置函数来使用它。但是,任何已经使用该版本的函数仍然可以访问它。版本号永远不会重新用于层名称。”

为了让已经使用某个版本的函数继续工作,它们必须将“已删除”的版本保留在某个地方,并且只有在没有更多消费者时才真正删除它。如果他们允许“最新”,则没有直接的方法来确定是否仍然引用“已删除”层版本。如果他们允许层代码更改,那么毫无疑问会有很多情况会导致其他代码由于层更改而意外中断,并且他们想尝试防止这种事情发生。

您最好的选择是添加一些代码来查找层并找到最新的版本号以在后续调用中使用。

于 2019-10-23T00:02:34.717 回答
0

不完全是您正在寻找的答案,@shawn已经在问题的上下文中回答了它。

但这就是我所拥有的,因为我也在尝试做同样的事情并最终为 JetBrains IDE 构建了一个插件。

看看它是否有助于您的第 2 天 lambda 函数和层部署。

此插件有助于部署 AWS Lambda 函数和直接从 JetBrains IDE 构建的层。

支持 AWS lambda 函数的部署。
支持管理 AWS Lambda 层。直接从 IDE
创建新版本、删除旧版本并将lambda 函数更新到任何层版本。

链接:https ://plugins.jetbrains.com/plugin/14742-aws-lambda-deployer

链接:
Youtube Demo 1(2020 年 7 月 25 日)
Youtube Demo 2(2021 年 3 月 27 日)

于 2021-05-06T09:28:59.803 回答