Lambda 函数版本
您可以使用版本来管理函数的部署。例如,您可以发布函数的新版本用于测试版测试,而不会影响稳定的生产版本的用户。您每次发布函数时,Lambda 都会为函数创建一个新版本。新版本是函数的未发布版本的副本。
如果未发布版本中的代码与之前发布的版本相同,则 Lambda 不会创建新版本。您需要先在 $LATEST 中部署代码更改,然后才能创建新版本。
函数版本包括以下信息:
-
函数代码以及所有关联的依赖项。
-
函数使用的 Lambda 运行时标识符和运行时版本。
-
所有函数设置,包括环境变量。
-
用于标识函数的特定版本的唯一 Amazon 资源名称(ARN)。
在自动模式下使用运行时管理控件时,函数版本使用的运行时版本会自动更新。使用函数更新或手动模式时,不会更新运行时版本。有关更多信息,请参阅Lambda 运行时更新。
创建函数版本
只能在函数的未发布版本上更改函数代码和设置。在您发布版本时,Lambda 会锁定代码和大多数设置,以便为该版本的用户维持一致的体验。有关配置函数设置的更多信息,请参阅配置 Lambda 函数选项。
您可以使用 Lambda 控制台创建函数版本。
创建新函数版本
打开 Lamba 控制台的 Functions
(函数)页面。 -
选择一个函数,然后选择 Versions(版本)。
-
在版本配置页面上,选择 Publish new version(发布新版本)。
-
(可选)输入版本说明。
-
选择 Publish。
或者,您可以使用 PublishVersion API 操作发布函数版本。
以下 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": "nodejs18.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 函数别名。