Lambda 函数版本 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Lambda 函数版本

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

注意

如果未发布版本($LATEST)与先前发布的版本相同,则无法发布函数并创建新版本。在创建新版本之前,您需要在 $LATEST 中部署代码更改或更新函数的环境变量。

函数版本是不可变的,这意味着一旦发布了版本,就无法对其进行更改或修改。函数版本包括以下信息:

  • 函数代码以及所有关联的依赖项。

  • 函数使用的 Lambda 运行时标识符和运行时版本。

  • 所有函数设置,包括环境变量。

  • 用于标识函数的特定版本的唯一 Amazon 资源名称(ARN)。

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

创建函数版本

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

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

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

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

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

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

  5. 选择发布

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

以下 Amazon 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 操作的资源和条件

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