Lambda 函数版本 - AWS Lambda

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lambda 函数版本

您可以使用版本来管理函数的部署。例如,您可以发布函数的新版本用于测试版测试,而不会影响稳定的生产版本的用户。您每次发布函数时,Lambda 都会为函数创建一个新版本。新版本是函数的未发布版本的副本。未发布版本的名称为 $LATEST。

注意

要创建您的函数的新版本,您必须先更改未发布的版本($LATEST)。这些更改可能会包括更新代码或修改配置设置。如果 $LATEST 与之前发布的版本相同,则在将更改部署到 $LATEST 之前,您无法创建新版本。

发布函数版本后,其代码、运行时、架构、内存、层和大多数其他配置设置都不可变。这意味着,如果不从 $LATEST 发布新版本,则无法更改这些设置。您可以为已发布函数版本配置以下项目:

注意

自动模式下使用运行时管理控件时,此函数版本使用的运行时版本会自动更新。使用 Function update(函数更新)或 Manual(手动)模式时,不会更新运行时版本。有关更多信息,请参阅 Lambda 运行时更新

创建函数版本

只能在函数的未发布版本上更改函数代码和设置。在您发布版本时,Lambda 会锁定代码和大多数设置,以便为该版本的用户维持一致的体验。

您可以使用 Lambda 控制台创建函数版本。

创建新函数版本
  1. 打开 Lamba 控制台的函数页面

  2. 选择一个函数,然后选择 Versions(版本)

  3. 在版本配置页面上,选择 Publish new version(发布新版本)

  4. (可选)输入版本说明。

  5. 选择 发布

或者,您可以使用 PublishVersion API 操作发布函数版本。

以下 AWS CLI 命令发布函数的新版本。响应返回有关新版本的配置信息,包括版本号和具有版本后缀的函数 ARN。

aws lambda publish-version --function-name my-function

您应看到以下输出:

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1", "Version": "1", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "Runtime": "nodejs20.x", ... }
注意

Lambda 会分配单调递增的序列号,以便进行版本控制。Lambda 不会重复使用版本号,即使是删除并重新创建函数之后也是如此。

使用版本

您可以使用限定的 ARN 或非限定的 ARN 来引用您的 Lambda 函数。

  • 限定的 ARN – 具有版本后缀的函数 ARN。以下示例引用 helloworld 函数的版本 42。

    arn:aws:lambda:aws-region:acct-id:function:helloworld:42
  • 非限定的 ARN – 不具有版本后缀的函数 ARN。

    arn:aws:lambda:aws-region:acct-id:function:helloworld

您可以在所有相关 API 操作中使用限定或非非限定的 ARN。但是,不能使用非限定 ARN 来创建别名。

如果您决定不发布函数版本,可以使用事件源映射中的限定或非限定 ARN 来调用函数。当您使用非限定 ARN 调用函数时,Lambda 会隐式调用 $LATEST。

Lambda 仅在代码从未发布过或自上次发布版本后已发生更改时,才会发布新函数版本。如果没有任何更改,函数版本将保持为上次发布的版本。

每个 Lambda 函数版本的限定 ARN 都是唯一的。发布版本后,您无法更改 ARN 或函数代码。

授予权限

您可以使用基于资源的策略基于身份的策略授予对函数的访问权限。权限的范围取决于您要将策略应用于整个函数还是函数的某个版本。有关策略中的函数资源名称的更多信息,请参阅Lambda 操作的资源和条件

您可以使用函数别名,简化事件源和 AWS Identity and Access Management (IAM) 策略的管理。有关更多信息,请参阅Lambda 函数别名