[Alexa] SkillのEndpointは、Alias付きのARNがおすすめです。

alexa-eyecatch

1 はじめに

Amazon Alexa(以下、Alexa)のスキルをAWS Lambda(以下、Lambda)で作成した場合、Endpointには、ARN(Amazon Resource Name)を指定します。

今回は、このARNに、エイリアス名を使用すると、少しだけ便利になる(かも知れない)という紹介をさせて下さい。

私が、便利になると考えるのは以下の2点です。

  • バージョン(動作)が固定できる
  • 次期バージョンの開発が容易

001

注:スキルのEndpoint指定にエイリアスを指定する事に関しては、現時点で、どのドキュメントにも触れられていないようです。あくまで、私の個人的な見解であることを、あらかじめご了承ください。

2 エイリアス指定の方法

エイリアス付きARNをスキルのEndpointに設定する手順は以下の通りです。

  1. 一例ですが、publishされたバージョンが、1〜4まであり、Version 4v1というエイリアスが設定されているとします。

002

  1. ここで、このEndpointに設定したいエイリアスを選択します。

003

  1. エイリアスが選択された状態で、TriggersAlexa Skills Kitを追加すると、生成されるARNは、最後に:v1というようなエイリアス名が付いたものになります。 004

  2. このARNをスキルのEndpointに指定します。

005

3 バージョン(動作)が固定できる

お勧めする利用の1つは、バージョン(動作)が固定できることです。

もし、エイリアスを付けないARNをEndpointに指定した場合、$LATESTを設定した事になり、Lambdaのコードが更新されると、スキルの動作に影響します。

これは、審査が終わってLiveになってからも同じです。

4 次期バージョンの開発が容易

お勧めする2つ目の理由は、次期バージョンの作業が容易になる事です。

スキルは、審査に提出した時点で、Endpointを変更できなくなります。そして、公開(Live)となった時点で、図のように次期バージョンの作業が可能になります。

006

次期バージョンの設定では、Endpointも自由に設定できますので、こちらは、公開したLambdaと同じものでエイリアスのないARNを設定します。

こうする事で、公開中のスキルは、エイリアスで固定されたバージョンで動作し、開発では、最新のLambda($LATEST)で動作する環境が作れます。

次期バージョンの設定は、Invacation Nameが同じになっているため(変更できません)、開発者のアカウントで使用すると、$LATESTのLambdaが呼ばれ、一般のユーザーからはエイリアス指定したLambdaが呼ばれる事になります。

次期バージョンの開発が終了した時点で、また、エイリアス「例えば :v2」を設定して、公開申請すれば、再び同じ環境が構築できます。

5 最後に

今回は、Endpointに指定するARNは、エイリアス付きが、お勧めであるという紹介をさせて頂きました。

誠に恐縮ですが、こちらは、あくまで私の個人的意見です。もし、更にお勧めな方法や、今回紹介した内容に弊害があるというような場合は、是非、教えてやってください。

6 参考リンク


Submitting an Alexa Skill for Certification
AWS Lambda 関数のバージョニングとエイリアス
Alexa Skills Kit for Node.js はじめの一歩
Alexa Skills Kit for Node.js 次の一歩(DynamoDB)