Lexの環境ごとのエイリアス設定

# はじめに
LexとConnectでシステムを開発した際、Lexの本番環境と開発環境のエイリアス設定を調べましたので、まとめます
また、環境ごとのLexに合わせたLambdaも関連付けます。

# 事前構築
- LexとConnect、Lambdaを構築済み


# Lexの開発環境
## Lex
Lexを作成時に設定されている`ドラフトバージョン`を`エイリアス：TestBotAlias`に関連付けましょう。
おそらく、デフォルトで関連付けられていると思います。
![スクリーンショット 2022-03-13 18.55.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/0602fefd-df33-523f-38f0-1d34bdf11af2.png)

![スクリーンショット 2022-03-13 18.55.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/c99e158f-2cae-ae00-ccf9-926e0666b660.png)

`エイリアスTestBotAlias`の関連バージョンが`ドラフトバージョン`になっていることが分かりますね。
![スクリーンショット 2022-03-13 18.53.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/11bf362a-95a4-4f83-5a63-a8381dcdb7f0.png)

ドラフトバージョンは、Lexを開発時、インテントを修正後、`インテントを保存→構築`すると即反映されるバージョンになります。
![スクリーンショット 2022-03-13 18.59.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/028e12ab-7265-97ab-7d49-977afc720420.png)
## Lambda

`TestBotAlias`で設定する`Lambda`も開発環境用の`Lambda`を設定します。
`Lambda 関数のバージョンまたはエイリアス`は、`$LATEST`で良いかと思います。
Lambdaのコードを修正し更新した場合、即反映されますね。
![スクリーンショット 2022-03-13 18.50.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/89332daf-e148-aef9-1ed5-c62d12ce1eb1.png)


## Connect
ConnectでLexを使用するには、２箇所設定が必要です。
１つ目は、Connectの`Contact flows`で、使用するlexとエイリアスを選択し、追加します。

![スクリーンショット 2022-03-13 19.38.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/e990ff15-ea59-bea8-d171-f27d1db7699e.png)

2つ目は、お問い合わせフローの`顧客の入力を取得する`に、lex名とエイリアスを選択し、保存します。
![スクリーンショット 2022-03-13 19.27.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/5b03be35-fe2c-43f9-fdd7-98ac9a34c0bc.png)


# Lexの本番環境
## Lex
本番反映する流れとして、開発環境のLexで開発し、動作確認後、本番に反映することが一般的ですので、
本番に反映する作業として、エイリアスとボットのバージョンを作成し、本番用のエイリアスに関連づける必要があります。

まず、`エイリアスを作成`をクリックします。
![スクリーンショット 2022-03-13 19.10.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/e5b79950-219f-3dd7-56ca-c503a58def1f.png)

`prod`というエイリアス名で作成をクリックします。
![スクリーンショット 2022-03-13 19.12.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/77812261-ff8b-8aa4-9fb9-a4077a0a3359.png)
![スクリーンショット 2022-03-13 19.14.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/095676d2-6c09-43c2-2b05-5ede2503b3bf.png)


次に、ボットの`バージョンを作成`をクリックします。
![スクリーンショット 2022-03-13 19.01.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/b7c7e4cf-0a0b-572e-f4f0-a4b4cf0be229.png)

バージョンを作成
- `説明`：本番に反映する内容を記載します。
- `言語`：ドラフトバージョンを本番に反映するため、ドラフトバージョンを選択します
- `詳細設定`：ONにします
![スクリーンショット 2022-03-13 19.06.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/d88e9324-c837-103f-4691-73bbb3d3477c.png)

バージョン1が作成されましたので、クリックします。

![スクリーンショット 2022-03-13 19.09.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/70087838-675c-f2df-9dc9-06bd25bf0d65.png)

`エイリアスをバージョンに関連付ける`をクリックします。
![スクリーンショット 2022-03-13 19.09.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/0abdde40-942d-195b-a89d-aaed00b31f38.png)
エイリアスprodを関連付けます。
![スクリーンショット 2022-03-13 19.14.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/d1d0cda6-b52c-4674-1476-1f1fc37c8368.png)



## Lambda
エイリアスprodを関連付けた後、言語`Japanese`をクリックし、本番環境用のLambdaを設定します。
![スクリーンショット 2022-03-13 19.15.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/d6e542f7-14cb-604f-673a-2d2fecfede40.png)

今回は、エイリアスは`$LATEST`ですが、本番用のものだとLambdaのエイリアスも`prod`だと思いますので、構築に合わせて選択しましょう。
![スクリーンショット 2022-03-13 19.18.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/9dd76b8a-0094-9cd7-102f-9d71cea8ef71.png)

## Connect
先程と同様に設定します。
![スクリーンショット 2022-03-13 19.27.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/01d82d81-bb25-f0ef-2988-cb42fb507710.png)
![スクリーンショット 2022-03-13 19.27.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/06cd3a33-d693-76a3-543c-0741dc2c9b6c.png)

# 開発の流れ
先程も説明しましたが、本番反映する流れとして、開発環境のLexで開発し、動作確認後、本番に反映することが一般的です。

ドラフトバージョンで開発し、動作確認後、本番反映するために、再度`バージョンを作成`します。（次は、バージョン名`バージョン2`として作成されます）

そして、その`バージョン2`をエイリアス`prod`に関連付けることで、本番環境に反映されます。
このとき、LambdaやConnect側では、エイリアス`prod`を設定済みのため、特に修正する必要はありません。

# 参照

https://docs.aws.amazon.com/ja_jp/lex/latest/dg/versioning-aliases.html

https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/aliases.html