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

AWS Lambda 函数版本

您可以使用版本来管理您的 AWS Lambda 函数的部署。例如,您可以发布函数的新版本以用于 Beta 测试,而不会影响稳定生产版本的用户。

每当您发布 Lambda 函数时,系统都会创建函数的新版本。新版本是函数的未发布版本的副本。函数版本包括以下信息:

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

  • 执行该函数的 Lambda 运行时。

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

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

只能在函数的未发布版本上更改函数代码和设置。当您发布版本后,代码和大多数设置将被锁定,从而确保为该版本的用户提供一致的体验。有关配置函数设置的更多信息,请参阅在 AWS Lambda 控制台中配置函数

创建函数的新版本

  1. 打开 Lambda 控制台 函数页面

  2. 选择您希望发布的函数。

  3. 操作中,选择发布新版本

在您发布函数的第一个版本后,Lambda 控制台将显示可用版本的下拉菜单。在设计器面板中,函数名称的末尾会显示一个版本限定符。

要查看函数的当前版本,请选择一个函数,然后选择限定符。在展开的限定符菜单中,选择版本选项卡。版本面板显示选定函数的版本列表。如果您尚未发布选定函数的版本,版本面板将仅列出 $LATEST 版本。

使用 Lambda API 管理版本

要发布某个函数的版本,请使用 PublishVersion API 操作。

以下示例发布函数的新版本。响应返回有关新版本的配置信息,包括版本号和具有版本后缀的函数 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": "nodejs12.x", ... }

使用版本

可以使用 ARN 引用您的 Lambda 函数。有两个与该初始版本关联的 ARN:

  • 限定的 ARN – 具有版本后缀的函数 ARN。

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

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

    您可以在所有相关的操作中使用该非限定 ARN。不过,您无法使用该 ARN 创建别名。

如果您决定不发布函数版本,可以在事件源映射中使用限定或非限定 ARN 调用函数。

只有在代码从未发布过,或者代码与最近发布的版本相比发生了更改时,Lambda 才会发布新的函数版本。如果没有任何更改,则函数版本将保留为最近发布的版本。

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

资源策略

使用基于资源的策略为服务、资源或账户提供对您的函数的访问时,这种权限的范围取决于您是将权限应用于某个函数还是函数的某个版本:

  • 如果使用限定函数名称(如 helloworld:1),该权限 在使用限定 ARN 调用 helloworld 函数版本 1 时有效。使用任何其他 ARN 时会导致权限错误。

  • 如果使用非限定的函数名称(例如 helloworld),则权限仅在使用非限定的函数 ARN 调用 helloworld 函数时有效。使用任何其他 ARN(包括 $LATEST)时会导致权限错误。

  • 如果使用 $LATEST 限定函数名称(如 helloworld:$LATEST),该权限 在使用限定 ARN 调用 helloworld 函数时有效。使用非限定 ARN 时会导致权限错误。

可以通过使用函数别名,简化事件源和资源策略的管理。有关更多信息,请参阅 AWS Lambda 函数别名