Amazon Lexのエイリアスとバージョンニングを解説
はじめに
Amazon Lexを開発環境や本番環境で利用する際、ボットのバージョニングとエイリアスは重要な機能です。本記事ではこれらの機能について詳しく説明します。
バージョン
Amazon Lexボットをアプリケーション内で使用する際、デプロイを制御するためにバージョニング機能が利用できます。
Lexでバージョンを作成すると、特定の時点でのボットの設定をスナップショットのように固定化できます。
ボットを作成した時点では、ドラフトバージョンのみが作成されます。
この状態でバージョンを作成すると、「バージョン1」が作成されます。バージョン名は指定できません。さらにバージョンを作成すると「バージョン2」、「バージョン3」といったように番号付きで作成されます。
バージョンを作成すると、そのバージョンの作成時点でのボットの設定が利用できます。作成したバージョンは、ドラフトバージョンで作業を続けても変更されずに残ります。また、一度作成したバージョンのボット設定は変更できません。
このような特性から、バージョンは「スナップショット」として捉えることができます。
ドラフトバージョンは例外で、ボット修正中の設定が反映される唯一のバージョンです。
注意点 1
AWSのドキュメントによると、作成したボットバージョンが6ヶ月間利用されなかった場合、再ビルドしない限り、そのバージョンを利用することはできなくなります。
ボットバージョンが6か月間使用されない場合、Amazon Lex V2 はそのバージョンを非アクティブとマークします。バージョンが非アクティブの場合、ボットでランタイムオペレーションを使用することはできません。ボットをアクティブにするには、バージョンに関連付けられているすべての言語を再構築します。
利用できなくなった場合、再ビルドしましょう。
注意点 2
バージョンを作成する前に必ずドラフトバージョンを構築(Build)しましょう。
構築する前にバージョンを作成すると、ボットを利用できません。
エイリアス
エイリアスは、ボットの特定バージョンを参照するポインタ、つまり別名のことを指します。
エイリアスを使用すると、アプリケーションが使用しているバージョンを簡単に更新できます。
ドラフトバージョンは、エイリアスTestBotAlias
と関連付けられています。作成したバージョンは、エイリアスと関連付けることで使用するバージョンを切り替えることができます。
エイリアスとボットの関連づけについて、図で説明します。
まず、ボット作成後は、エイリアスTestBotAlias
とドラフトバージョンが自動作成され、TestBotAlias
はドラフトバージョンと関連づけられています。
ドラフトバージョンは、AWS Lambdaで言うところの$LATEST
に相当します。ただし、Lambdaではエイリアスが自動作成されないため、この点がLexとは異なります。
ボットを設定し、バージョンを作成すると、ドラフトバージョンと同じボット設定の「バージョン1」が作成されます。
エイリアスdev
を作成し、バージョン1と関連づけます。
TestBotAlias
とドラフトバージョンはセットであり、作成したエイリアスやバージョンとは関連付けられません。
さらにボットの設定を修正すると、修正内容はドラフトバージョンにのみ反映され、バージョン1はスナップショットのため変更されません。
ボットの設定変更完了後、バージョンを再度作成すると、ドラフトバージョンと同じ設定の「バージョン2」が作成されます。
エイリアスdev
の関連付けをバージョン2にすることで、dev
に新設定が反映されます。
ちなみに、バージョンを作成する際、ソース元バージョンを選択できますので、ドラフトバージョン以外にもバージョン1やバージョン2は選択できます。あまり必要性は感じませんが。
実際に作成確認
実際に作成してみます。事前にドラフトバージョンのボットは構築(Build)済みです。
どちらからでもよいですが、今回はバージョンから作成します。
デフォルトのまま作成します。
バージョン作成時に、ソースとしてドラフトバージョン以外を選択したい場合は、詳細設定から選択できます。
バージョン1が作成されました。
エイリアスを作成し、バージョン1に関連付けます。現時点ではTestBotAlias
がドラフトバージョンに関連付けられています。
エイリアス名をdev
とし、バージョン1を関連付けて作成します。
エイリアスdev
は、バージョン1に関連付けられました。
以下の図と同じ状況です。
TestBotAlias利用の注意点
エイリアスTestBotAlias
を利用する際は、2点注意点があります。
1点目
ランタイムリクエストの数が制限されています。クォーターでも確認できますが、TestBotAliasでの同時テキストモードでの会話や音声モードでの会話の上限数は2つまでです。
検証環境では同時利用数が少ないため問題かもしれませんが、本番環境では同時利用数が2を超える可能性が高いため、自作のエイリアスを利用することをお勧めします。
2点目
LexのAWSドキュメントのベストプラクティスには、以下の記載があります。
ドラフトバージョンのボットを更新すると、Amazon Lex はボットの TSTALIASID を使用しているクライアントアプリケーションで進行中のあらゆる会話をシャットダウンします。ドラフトバージョンは更新される場合があるため、通常、本番稼働環境では TSTALIASID alias のボットを使用しないでください。代わりに、別のバージョンとエイリアスを発行して使用します。
TSTALIASID
は、エイリアスTestBotAlias
のエイリアスIDのことです。
つまり、TestBotAlias
エイリアスをアクセス先にしているアプリケーションの場合、ボットの設定を修正する度に、アプリケーション側での会話が強制終了されます。
したがって、アプリケーションのアクセス先について、本番環境ではTestBotAlias
ではなく自作のエイリアスを向き先とし、検証環境ではTestBotAlias
もしくは自作のエイリアスを向き先とすることをお勧めします。
最後に
今回は、Amazon Lexのエイリアスとバージョニングについて解説しました。
特に、TestBotAlias
を利用する際の注意点や本番環境での利用方法について説明しました。 環境ごとに適切なエイリアスとバージョンを使い分けることが重要です。
バージョニングを活用することで、ボットの変更履歴を管理し、必要に応じて以前のバージョンに戻すことが容易になります。
また、エイリアスを使用することで、アプリケーションのコードを変更することなく、使用するボットのバージョンを柔軟に切り替えることができます。
Lexのエイリアスとバージョニングを適切に利用し、安定したLexの運用をしましょう。
参考