LambdaのVersionとAlias
AWS LambdaではPublishすると固有のVersion番号が割り当てられる。
Versionには任意の名前のAliasをつけることが可能で、Aliasに関連付けるVersionを変更することで、Aliasを指定してFunctionを呼び出しているユーザが利用するVersionを変更することができる。
Additional versionを用いて、新しいVersionをカナリアリリースする
Aliasには Additional versionというオプションが存在し、主として指定したVersionとは異なるVersionとその呼び出し割合を指定することができる。
Additional versionの有無や呼び出し割合は任意のタイミングで変更ができ、新しいVersionの呼び出し割合を徐々に増やしていくカナリアリリースが可能である。
Additional versionの設定方法
Management Consoleで設定する場合
Aliasの設定画面で、Additional version及びWeightを入力し、保存する。
Weightには0〜100の間の整数を入力する。
AWS CLIで設定する場合
lambda create-aliasもしくはlambda update-aliasの --routing-config オプションで設定する。
Weightsは0.00〜1.00の小数で指定する。
aws lambda update-alias \
--function-name testCanary \
--name Prod \
--function-version 2 \
--routing-config 'AdditionalVersionWeights={"3"=0.8}'
どのVersionが呼び出されたか確認する
AWS CLIで呼び出した際の戻り値
レスポンスの ExecutedVersion プロパティに、実際に呼び出されたVersionの番号が出力される。
※同期呼び出しをした場合に限る
$ aws lambda invoke \
--function-name testCanary \
--qualifier Prod \
--region ap-northeast-1 \
-
{
"StatusCode": 200,
"ExecutedVersion": "3"
}