【问题标题】:How to update AWS Lambda configuration to the lastest version of a particular layer?如何将 AWS Lambda 配置更新到特定层的最新版本?
【发布时间】:2019-10-21 09:17:07
【问题描述】:

我正在尝试使用 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

我该怎么做?

【问题讨论】:

  • 您可以为您的 lambda 设置别名,例如 Smoke、Live ...

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


【解决方案1】:

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

您选择要使用的图层的特定版本。如果你想使用一个 以后版本不同,更新你的函数配置。

和

您必须通过提供 层版本的完整 ARN。

和

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

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

继续注意到

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    链接:
    优酷Demo 1 (25 July, 2020)
    优酷Demo 2 (27 March, 2021)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 2016-03-06
      • 2013-07-12
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多