AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用别名的流量转移

默认情况下,别名指向单个 Lambda 函数版本。在更新别名以指向不同的函数版本时,传入请求流量将立即指向更新的版本。这会导致该别名出现新版本引入的任何潜在的不稳定性问题。要最大限度降低这种影响,您可以实施 Lambda 别名的 routing-config 参数以允许指向 Lambda 函数的两个不同版本,并指示发送到每个版本的传入流量百分比。

例如,您可以指定在分析生产环境就绪性时仅将 2% 传入流量路由到新版本,而将其余 98% 路由到原始版本。随着新版本的不断成熟,您可以根据需要逐渐更新比率,直到确定新版本是稳定的。然后,您可以更新别名以将所有流量路由到新版本。

您可以将别名最多指向两个 Lambda 函数版本。此外:

  • 两个版本必须具有相同的 IAM 执行角色。

  • 两个版本必须具有相同的 AWS Lambda 函数死信队列 配置,或没有 DLQ 配置。

  • 在将别名指向多个版本时,别名不能指向 $LATEST

使用别名的流量转移 (CLI)

要配置别名以使用 CreateAlias 操作根据权重在两个函数版本之间转移流量,您需要配置 routing-config 参数。以下示例将别名指向两个不同的 Lambda 函数版本,版本 2 接收 2% 调用流量,其余 98% 调用版本 1。

aws lambda create-alias --name alias name --function-name function-name \ --function-version 1 --routing-config AdditionalVersionWeights={"2"=0.02}

您可以使用 UpdateAlias 操作更新新版本 (版本 2) 的传入流量百分比。例如,您可以将新版本的调用流量提高到 5%,如下所示。

aws lambda update-alias --name alias name --function-name function-name \ --routing-config AdditionalVersionWeights={"2"=0.05}

要将所有流量路由到版本 2,请再次使用 UpdateAlias 操作更改 function-version 属性以指向版本 2。在相同的命令中,重置路由配置。

aws lambda update-alias --name alias name --function-name function-name \ --function-version 2 --routing-config AdditionalVersionWeights={}

使用别名的流量转移 (控制台)

您可以使用 Lambda 控制台配置使用别名的流量转移,如下所述:

  1. 打开您的 Lambda 函数,并确认具有至少两个以前发布的版本。否则,您可以转到 AWS Lambda 版本控制简介 以了解有关版本控制的更多信息,然后发布第一个函数版本。

  2. 对于操作,请选择创建别名

  3. Create a new alias (创建新的别名) 窗口中,指定 Name* (名称*)Description (描述)(可选)以及别名将指向的 Lambda 函数 Version* (版本*) 的值。此处的版本是 1

  4. 其他版本中,指定以下内容:

    1. 指定第二个 Lambda 函数版本。

    2. 键入函数的权重值。权重是在调用别名时分配给该版本的流量百分比。第一个版本接收剩余权重。例如,如果为其他版本指定 10%,则自动为第一个版本分配 90%。

  5. 选择 Create

确定已调用的版本

当别名在两个函数版本之间转移流量时,可以通过两种方法确定已调用的 Lambda 函数版本:

  1. CloudWatch Logs – 对于每个函数调用,Lambda 自动将包含调用的版本 ID 的 START 日志条目发出到 CloudWatch Logs。下面是一个示例。

    19:44:37 START RequestId: request id Version: $version

    Lambda 使用 Executed Version 维度按执行的版本筛选指标数据。这仅适用于别名调用。有关更多信息,请参阅AWS Lambda CloudWatch 维度

  2. 响应负载(同步调用) – 同步函数调用的响应包含 x-amz-executed-version 标头以指示已调用的函数版本。