サンプルカスタムスキルをAWS Lambdaにデプロイする



サンプルのカスタムスキルをAWS Lambdaにデプロイする

Alexa Skills Kitには、Node.js(JavaScript)およびJavaで記述されたカスタムスキルのサンプルがいくつか用意されています。このサンプルを利用してすぐに作業を始めるには、サンプルをAWS Lambda関数としてAWS Lambdaアマゾンウェブサービスで提供されるサービス)にデプロイし、テストするのがもっとも簡単な方法です。

サンプルは、GitHubのリポジトリで入手できます。サンプルの入手方法と個々のサンプルの詳細については、Alexa Skills Kitサンプルを使用する(カスタムスキル)を参照してください。

このドキュメントでは、サンプルをLambda関数としてデプロイする方法について説明します。AWS Lambdaの概要については、AWS Lambdaとはを参照してください。Alexa Skills KitでLambdaを使用する際の詳細については、カスタムスキルのAWS Lambda関数を作成するを参照してください。

AWSのアカウントをまだお持ちでない場合は、以下の手順を進める前に、アマゾンウェブサービスにアクセスしてアカウントを作成してください。

Node.jsのサンプルについては次のセクションをご覧ください。

Javaのサンプルについては次のセクションをご覧ください。


LambdaにデプロイするNode.jsのサンプルを用意する

Node.jsのサンプルは、Alexaの公式GitHubアカウントで入手できます。このサンプルでは、Alexa Skills Kit SDK for Node.jsを使用しています。

Node.jsのサンプルをLambda関数としてデプロイするには、まず、サンプルで提供された.jsファイルを含むzipファイルを作成する必要があります。Node.jsのサンプルではAlexa Skills Kit SDK for Node.jsが使用されているため、zipファイルにはこれらの依存関係も含める必要があります。Node.jsとNPMをまだインストールしていない場合は、まずこちらの手順を実行してください

  1. サンプルのGitHubリポジトリをダウンロードまたは複製します。Node.jsのサンプルはすべて、Alexaの公式GitHubアカウントの個別のリポジトリに用意されています。

    サンプルがLambda設計図として提供されている場合は、ステップ4へ進み、Lambda関数を作成します。この場合も、対話モデルファイルへすぐにアクセスできるよう、リポジトリをダウンロードすることをお勧めします。

  2. ターミナルまたはコマンドラインでサンプルのsrcディレクトリまで移動し、次のコマンドを実行します。

     npm install --save alexa-sdk
    

    このコマンドにより、SDK依存関係を含むnode_modulesディレクトリがインストールされます。

  3. srcフォルダーのファイルをすべて選択し、zipファイルを作成します。

    このzipファイルには、srcフォルダー自体を除くすべてのファイルを含めてください。zipのルートにはindex.jsファイルを配置してください。zipには、node_modulesディレクトリを含める必要があります。

  4. 開発者ポータルで新しいスキルをセットアップしてスキルIDを取得するを参照して、新しいスキルを作成しコンフィギュレーション情報を取得します。
  5. サンプル用のLambda関数を作成するを参照して、新しい関数を作成しコードをアップロードします。
  6. 開発者ポータルでスキルのコンフィギュレーションを設定するを参照して、スキルとLambda関数を連携させます。
  7. サンプルのコードのアプリケーションIDを更新するを参照して、新しく生成されたアプリケーションIDでサンプルを更新します。

LambdaにデプロイするJavaのサンプルを用意する

JavaのサンプルをLambda関数としてデプロイするには、まずMavenを使用してサンプルをビルドしてから、生成したJARファイルをアップロードする必要があります。

要件

  • Apache Maven - Javaのサンプルのセットアップは、必要な依存関係がすべて含まれた.JARファイルをビルドするMavenスクリプトを使用して行います。このビルドには、サンプルに必要なJavaのライブラリが自動的に含まれます。

    Javaのサンプルをビルドする前に、最新バージョンのMavenがインストールされていることを確認してください。MavenはApache Mavenのページからダウンロードできます。

  • Java Development Kit(JDK)8以降を含む開発環境

Javaのサンプルをビルドする

  1. amzn/alexa-skills-kit-javaリポジトリをダウンロードまたは複製します。
  2. コマンドラインを開き、zipファイルに含まれるsamplesフォルダーに移動します。このディレクトリには、pom.xmlファイルが含まれています。
  3. 次のコマンドを実行します。

     mvn assembly:assembly -DdescriptorId=jar-with-dependencies package
    

    これにより、targetディレクトリにalexa-skills-kit-samples-1.0-jar-with-dependencies.jarという名前の.JARファイルが作成されます。

  4. 開発者ポータルで新しいスキルをセットアップしてスキルIDを取得するを参照して、新しいスキルを作成しコンフィギュレーション情報を取得します。
  5. サンプル用のLambda関数を作成するを参照して、新しい関数を作成しコードをアップロードします。
  6. 開発者ポータルでスキルのコンフィギュレーションを設定するを参照して、スキルとLambda関数を連携させます。
  7. サンプルのコードのアプリケーションIDを更新するを参照して、新しく生成されたアプリケーションIDでサンプルを更新します。

開発者コンソールで新しいスキルをセットアップする

開発者コンソールで、新しいスキルの基本情報を設定します。Lambda関数の設定に使用するスキルIDが生成されます。

開発者コンソールにログインし、スキルの作成と対話モデルの選択の説明に従って新しいカスタムスキルを作成します。次の情報を入力します。

設定
スキル名 任意の有効な名前です。
呼び出し名 任意の有効な呼び出し名です。
モデル カスタム

スキルの一覧に戻り、スキル名の下に表示されるIDを記録します。

サンプル用のLambda関数を作成する

Alexaスキル用のLambda関数は、次のいずれかの地域でホストできます。

  • アジアパシフィック(東京)
  • EU(アイルランド)
  • 米国東部(バージニア北部)
  • 米国西部(オレゴン)

Node.jsコードを含むzipファイルの作成、またはサンプルの.JARファイルのコンパイルが完了したら、次の手順を実行します。

  1. AWSマネジメントコンソールにログインして、AWS Lambdaに移動します。
  2. 新しい関数を作成し、Alexaスキルがサポートされる地域である、 アジアパシフィック(東京)、EU(アイルランド)、米国東部(バージニア北部)、米国西部(オレゴン)のいずれかを選択します。
  3. いずれかの設計図のサンプルをすぐにセットアップする場合は、設計図の一覧からサンプルを選択します。設計図として利用可能なサンプルは次のとおりです。

    いずれかの設計図を選択すると、コードがLambdaコンソールに自動でインポートされます。

  4. Node.jsサンプルとJavaサンプルのどちらをデプロイするかに応じて、新しい関数に次の設定を行います。

    設定Nodeの値Javaの値
    トリガーAlexa Skills Kitです。トリガーの設定ページでスキルIDを入力します。Alexa Skills Kitです。トリガーの設定ページでスキルIDを入力します。
    名前わかりやすい関数の名前です。わかりやすい関数の名前です。
    ランタイムNode.jsJava 8
    Lambda関数コード.ZIPファイルのアップロード(Upload a .ZIP file)オプションを選択して、作成したzipファイルをアップロードします。

    いずれかの設計図(alexa-skill-kit-sdk-factskillなど)を選択した場合、コードは自動で入力されます。
    .ZIPファイルのアップロード(Upload a .ZIP file)オプションを選択し、samples/targetフォルダーのalexa-skills-kit-samples-1.0-jar-with-dependencies.jarファイルをアップロードします。
    ハンドラーindex.handlerサンプルに実装されているSpeechletRequestStreamHandlerクラスです。たとえば、Hello Worldサンプルの場合はhelloworld.HelloWorldSpeechletRequestStreamHandlerになります。この名前を確認するには、サンプルごとのReadme.mdを参照してください。
  5. 関数のロールを選択します。ロールは、関数がアクセスできるAWSリソースを定義するものです。
    • 既存のロールを使用するには、既存のロールを選択でロールを選択します。
    • 新しいロールを作成するには、後述の関数の新しいロールを定義するを参照してください。
  6. Lambda関数のAmazonリソースネーム(ARN)を記録します。ARNは、関数ページの右上隅に表示されます。
  7. 次の手順開発者ポータルでサンプル用の新しいスキルを作成するに進みます。

関数の新しいロールを定義する

ロールは、関数がアクセスできるAWSリソースを指定するものです。関数の設定時に新しいロールを作成するには、次の手順を実行します。

  1. ロールLambda関数のハンドラおよびロール内)で、テンプレートから新しいロールを作成を選択します。
  2. ロール名を入力します。
  3. ポリシーテンプレートリストで、シンプルなマイクロサービスのアクセス権限を選択します。

開発者コンソールでスキルのコンフィギュレーションを設定する

開発者ポータルに戻り、先ほどセットアップしたスキルを編集します。コンフィギュレーションの残りの部分を設定します。

設定
ビルドページ > カスタム > 対話モデル 各サンプルには、JSON形式の対話モデルが含まれています。開発者コンソールでカスタム > 対話モデル > JSONエディターの順にクリックして、JSONエディターを開きます。サンプルのJSONコードをJSONエディターに貼り付けて、デフォルトのJSONと置き換えます。

インテントおよび発話の定義方法の詳細については、インテント、発話、スロットの作成を参照してください。
ビルドページ > カスタム > エンドポイント AWS LambdaのARNオプションを選択し、デフォルトの地域ボックスに関数のARNを入力します。

モデルをビルドをクリックして、スキルのモデルをビルドします。