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

## はじめに
Lambdaのバージョン管理とエイリアスについてハンズオンを交えて構築をしたいと思います

## 用語理解
### Lambdaのバージョン
バージョンを使用することで、Lambda関数のデプロイを管理することが出来ます。
Lambda関数をデプロイするたびに、新しいバージョンの関数を作成することにより、実稼働中に新しいバージョンの関数を公開することも出来るようになります。
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-20.46.53-1-640x164.png)

参考URL：[AWSドキュメント　Lambda 関数のバージョン](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-versions.html)
### Lambdaのエイリアス
エイリアスは、特定のLambda関数のバージョンに対しての別名（AWSではポインタと説明）です。
ユーザーは、エイリアスを使用することでLambda関数のバージョンにアクセスすることが出来ます。

※下記の図では``v2（バージョン）``に``prpd（エイリアス）``が紐づいています。
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-20.51.00-1-640x224.png)

参考URL:[AWSドキュメント　Lambda 関数のエイリアス](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-aliases.html)

## ハンズオン
### Lambdaのバージョン発行
#### Lambdaの構築
Lambdaを構築してデフォルトのコードを``Version 1!``と修正してデプロイする
```
import json

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Version 1!')
    }
```
#### 新しいバージョンを発行
タブ『バージョン』を選択して、『新しいバージョンを発行』を押下する
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-20.55.44-1-640x180.png)
#### 『v1』のバージョンを発行する
『v1』としてバージョン1を作成する
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-20.56.58-1-640x251.png)

#### バージョン：1の画面に遷移する
黒塗り部分にバージョン発行された``関数のARN``を確認する
末尾にバージョンのサフィックスが付与されてることがわかる（修飾ARNという）
```
arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:tetutetu-lamabda:1
```
確認後赤枠部分のパンクズリストから、最新のLambdaの画面へ戻る

![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-20.59.19-2-640x423.png)

#### 最新のLambdaの画面へ戻って確認
最新の関数のARNには、末尾にバージョンのサフィックスが付与されていないことがわかる（非修飾ARNという）
```
arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:tetutetu-lamabda
```

``バージョン1``が作成されていることを確認する
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-21.02.19-1-640x136.png)

#### 再度同様手順で``Version 2!``をデプロイして、v2を作成する
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-21.45.19-640x113.png)

### Lambdaのエイリアスの作成
#### タブより『エイリアス』を選択し『エイリアスを作成』を押下
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-21.49.23-640x86.png)

#### エイリアス設定
ここで``名前（＝エイリアス）``と``バージョン``を紐づける

![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-21.48.16-640x436.png)

__加重エイリアスについて__
加重エイリアスは今回利用していませんが、設定する場合は下記のように``エイリアス``に対して、``バージョン``を何割割り当てるかを設定します。

![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-22.00.38-640x514.png)

【加重エイリアス\_イメージ】
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-22.01.26-640x315.png)

参考URL：[AWSドキュメント：エイリアスのルーティング設定](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-aliases.html#configuring-alias-routing)

#### エイリアス：prodの画面に遷移する
赤枠の修飾ARNも下記のような名前となっている
```
arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:tetutetu-lamabda:prod
```
![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-21.51.45-640x450.png)

#### 最新のLambdaの画面へ戻って確認
エイリアスを選択して``prod``が作成されていることを確認する

![](https://cloud5.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-12-22.06.43-640x140.png)

## さいごに
こちらのLambdaのエイリアス・バージョンを設定することで、別ブログの[APIGatewayのステージごとにエイリアスで指定したLambdaを紐づけハンズオン](https://cloud5.jp/lambda_for_each_of_the_apigateway/)にも応用が出来ます。
現段階（2022年7月）では、API Gateway経由でのLambdaをバージョン管理する上で利用せざるを得ないですが。。。
もっと幅広く技術に携わっていきたいと思います。