AWS Lambda上的Canary版本


Lambda版本和别名

发布时,AWS Lambda会分配一个唯一的版本号。
可以将任何名称的别名附加到版本中,并且通过更改与别名相关联的版本,可以通过指定别名来调用调用函数的用户使用的版本。
Lambda_Version_Alias.png

使用其他版本发布新版本的canary

Alias有一个称为附加版本的选项,您可以主要指定与指定版本及其调用率不同的版本。
可以随时更改是否存在附加版本和调用率,并且可以逐步增加新版本的调用率的canary发布。
Lambda_Additional_version.png

如何设置附加版本

在管理控制台

中进行设置时

在Alias设置屏幕上,输入其他版本和权重并保存。
输入0到100之间的整数作为权重。
image.png

使用AWS CLI

设置时

使用lambda create-alias或lambda update-alias的--routing-config选项进行设置。
权重指定为从0.00到1.00的十进制数。

1
2
3
4
5
aws lambda update-alias \
    --function-name testCanary \
    --name Prod \
    --function-version 2 \
    --routing-config 'AdditionalVersionWeights={"3"=0.8}'

检查调用哪个版本

使用AWS CLI

调用时返回值

实际调用的版本号将输出到

响应的ExecutedVersion属性。
*仅当进行同步调用时

1
2
3
4
5
6
7
8
9
$ aws lambda invoke \
      --function-name testCanary \
      --qualifier Prod \
      --region ap-northeast-1 \
      -
{
    "StatusCode": 200,
    "ExecutedVersion": "3"
}

CloudWatch

CloudWatch允许您获取用于呼叫的每个别名和版本的指标。
image.png