📖

AWS Lambdaのバージョン管理とエイリアスについて

2 min read

はじめに

AWS認定デベロッパーアソシエイトの勉強で、AWS Lambdaのバージョン管理とエイリアスについて学びました。理解するのに時間がかかりましたので、備忘録のために書こうと思います。

※この記事は2021/6/27現在の情報で書いています。後述する参考文献を基に書きますが、誤認識などありましたら、ご指摘いただけますと幸いです。

Lambdaのバージョン

Lambdaのバージョンを発行すると、その時点の関数と設定をスナップショットとして保存します。最新バージョンを$LATESTとし、バージョン番号を付与してスナップショットとして保存します。

バージョンの発行

①. バージョン発行したいLambda関数を開き、「アクション」⇒「新しいバージョンの発行」をクリックします。

②. バージョンの説明を追記して「発行」をクリックします。

③. 新しいバージョン数が連番で付与されます。以下の画像では、バージョン4まで作成されていたので、バージョン5が作成されました。後述しますが、発行されたバージョンではコードと設定の変更はできません。非修飾関数(非修飾ARN)、つまり$LATESTの方で編集する必要があります。

バージョン発行されたLambda関数

バージョン発行されたLambda関数は、以下のような修飾ARNで管理されます。ARNの末尾にバージョンのサフィックスが付与されます。

arn:aws:lambda:aws-region:XXXXXXXXXXXX:function:function-name:VerNo
arn:aws:lambda:aws-region:XXXXXXXXXXXX:function:function-helloworld:1

発行されたバージョンのソースコードと設定の変更はできません。

最新版のLambda関数

最新版$LATESTのLambda関数は、非修飾ARNとして紐づけられます。バージョンのサフィックスは付与されません。また、バージョン管理されていない場合のARNも、非修飾ARNとなります。

arn:aws:lambda:aws-region:XXXXXXXXXXXX:function:function-name

ソースコードを修正する場合は、$LATESTの方を修正して、必要に応じてバージョン発行する必要があります。したがって、$LATESTの方を本番環境として運用していると、誤った変更をした場合に大事になってしまいます。そのため、バージョン発行後に後述するエイリアスを作成し、本番環境のバージョンを紐づける必要があります。

エイリアスとは

Lambda関数の特定バージョンのポインタ、つまり別名です。

例えば、本番環境用のエイリアスを作成して、本番公開するバージョンと紐づけをします。その後は$LATESTの方を修正し、本番公開前に新バージョンを発行して検証、新バージョンに本番環境用エイリアスを紐づけることでリリースができます。また、何か問題あれば、旧バージョンに戻すことでロールバックができます。

エイリアスの作成

①. エイリアスを作成したい関数の画面を開き、「エイリアス」⇒「エイリアスを作成」をクリックします。

②. エイリアス名と説明を入力し、エイリアスに紐づけしたいバージョンを選択して「保存」をクリックします。

オプションとして、加重ルーティングを設定することができます。ここでは設定しませんでしたが、関数の重み値を設定することで、呼び出す関数を分散させることができます。詳しくは以下、Lambda開発者ガイドをご参照ください。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-aliases.html#configuring-alias-routing

③. 正常に作成されたら以下のように表示されます。

最後に

これまではLambdaの運用部分に意識することはなく、何となく触っていました。個人の環境ならばまだしも、商用システムや業務システムなどでLambdaを本格的に触る場合は、あらかじめ理解しておいた方が良いですね。もちろん、適切な開発体制と運用、安全なリリースと変更を実現するために抑えるべきはこれだけではないはず。今後はその辺を意識して、Lambdaを触ろうと思いました。

参考文献

ポケットスタディ AWS認定デベロッパーアソシエイト

https://www.shuwasystem.co.jp/book/9784798063409.html

Lambda開発者ガイド

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-aliases.html

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-versions.html

Discussion

ログインするとコメントできます