あなたのAlexaダッシュボード 設定

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

Alexa Skills Kitでは、Node.js(JavaScript)およびJavaで記述されたカスタムスキルのサンプルがいくつか提供されています。サンプルをAWS LambdaAmazon Web Servicesが提供するサービスの1つ)上のAWS Lambda関数としてデプロイおよびテストすることが最も簡単にカスタムスキルを作成する方法です。

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

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

既存のアカウントを持っていない場合は、下の手順を実施する前にAmazon Web Servicesにアクセスしてアカウントを新規作成してください。

Node.jsのサンプルについては、以下のセクションを参照してください。

Javaのサンプルについては、以下のセクションを参照してください。

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

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 blueprintとして入手できる場合は、手順4までスキップしてLambda関数を作成します。対話モデルへのアクセスがしやすいのは、リポジトリをダウンロードする方法です。

  2. ターミナルまたはコマンドラインで、サンプルのsrcディレクトリに移動して以下のコマンドを入力します。

    bash npm install --save alexa-sdk

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

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

    zipには、ファイルは含める必要がありますが、srcフォルダーは含めないでください。index.jsファイルは、zipのrootに格納する必要があります。zipには、node_modulesディレクトリを含める必要があります

  4. 関数を新規作成して、コードをアップロードするには、「サンプル用のLambda関数を作成する」を参照してください。
  5. 開発者ポータル上でサンプルスキルを登録するには、「開発者ポータル上でサンプル用のスキルを新規作成する」を参照してください。
  6. 新たに生成したアプリケーションIDでサンプルを更新するには、「サンプルのアプリケーションIDをコード内で更新する」を参照してください。

JavaサンプルをLambdaでのデプロイ用に準備する

JavaサンプルをLambda関数としてデプロイするには、まずMavenを使用してサンプルをビルドしてから、ビルドしたJARファイルをアップロードしてください。

要件

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

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

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

Javaサンプルをビルドする

  1. amzn/alexa-skills-kit-java GitHubリポジトリをダウンロードするか、クローンを作成します。
  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. 関数を新規作成して、コードをアップロードするには、「サンプル用のLambda関数を作成する」を参照してください。
  5. セットアップを完了してサンプルのテストができるようにするには、「開発者ポータル上でサンプル用のスキルを新規作成する」を参照してください。
  6. 新たに生成したアプリケーションIDでサンプルを更新するには、「サンプルのアプリケーションIDをコード内で更新する」を参照してください。

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

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

  1. AWSマネジメントコンソールにログインし、AWS Lambdaに移動します。
  2. アジアパシフィック(東京)(Asia Pacific (Tokyo))」、「米国西部(オレゴン)(US West (Oregon))」、「米国東部(バージニア北部)(US East (N. Virginia))」、「EU(アイルランド)(EU (Ireland))」のリージョンで、Lambda関数を新規作成します。
  3. blueprintサンプルのいずれかをすぐにセットアップするには、blueprintのリストからサンプルを選択します。以下のサンプルをblueprintとして入手できます。

    これらのblueprintのいずれかを選択したら、コードがLambdaコンソールに自動でインポートされます。

  4. デプロイするサンプルがNode.jsかJavaかに応じて、以下の設定で関数を新規作成します。

    設定 Nodeの値 Javaの値
    Triggers 縁取りされたボックスをクリックし、Alexa Skills Kitを選択します。 縁取りされたボックスをクリックし、Alexa Skills Kitを選択します。
    Name 関数を説明する名前を入力します。 関数を説明する名前を入力します。
    説明 関数の説明を入力します。 関数の説明を入力します。
    Runtime Node.js Java 8
    Lambda function code ZIPファイルのアップロード(Upload a .ZIP file)」オプションを選択して、作成したZipファイルをアップロードします。

    blueprintのいずれか(alexa-skill-kit-sdk-factskillなど)を選択した場合は、コードはあらかじめ記述されています。
    ZIPファイルのアップロード(Upload a .ZIP file)」オプションを選択して、samples/targetフォルダー内のalexa-skills-kit-samples-1.0-jar-with-dependencies.jarをアップロードします。
    Handler index.handler サンプルに実装されたSpeechletRequestStreamHandlerクラスです。たとえば、Hello Worldサンプルの場合は、helloworld.HelloWorldSpeechletRequestStreamHandlerを指定します。この名前を取得するには、各サンプルのReadme.mdを参照してください。
  5. 関数のロールを選択します。ロールにより、関数がアクセスできるAWSリソースを定義します。
    • 既存のロールを使用するには、「Use existing role」の下のロールを選択します。
    • ロールを新規作成するには、下の「関数用の新しいロールを定義する」を参照してください。
  6. Lambda関数のAmazonリソースネーム(ARN)を書き留めておきます。ARNは、関数ページの右上隅に表示されます。
  7. 次の手順に進む: 開発者ポータル上でサンプル用のスキルを新規作成する

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

ロールにより、関数がアクセスできるAWSリソースを指定します。関数のコンフィギュレーション中にロールを新規作成するには、以下の手順を実行します。

  1. Role」(「Lambda function handler and role」の下)で、「Create new role from template(s)」を選択します。
  2. Role Name」にロール名を入力します。
  3. Policy templates」リストから、「Simple Microservice permissions」を選択します。

開発者ポータル上でサンプル用のスキルを新規作成する

開発者ポータルで新しいAlexaスキルを登録します。詳細については、開発者ポータルでカスタムスキルを登録および管理するを参照してください。

新しいスキルの登録時には以下の情報を使用します。

設定
Invocation Name 任意の有効な呼び出し名。
Name 任意の有効なスキル名。
Endpoint AWS Lambda ARN (Amazon Resource Name)」オプションを選択してから、North AmericaまたはEuropeを指定し、関数のARNを入力します。
Interaction Model 各サンプルには、それぞれのspeechAssetsフォルダーに対話モデルが含まれます。

JSONをIntentSchema.jsonから「インテントスキーマ(Intent Schema)」ボックスにコピーし、テキストをSampleUtterances.txtから「サンプル発話(Sample Utterances)」ボックスにコピーします。

対話モデルの定義の詳細については、JSONおよびテキストで対話モデルを定義するを参照してください。

サンプルのアプリケーションIDをコード内で更新する

サンプルをスキルとして登録したら、新しいスキルに割り付けられたIDと一致するように、サンプルのコードに含まれるアプリケーションIDを更新します。これにより、Lambda関数は登録したスキルから送られたリクエストしか受け付けなくなります。

  1. 開発者ポータルにログオンします。
  2. アプリ&サービス(Apps & Services)」をクリックし、一番上のナビゲーションで「Alexa」をクリックして「Alexa」セクションを開きます。
  3. Alexa Skills Kitの「概要(Get Started)」をクリックします。
  4. リストから該当するスキルを見つけ、「Edit」をクリックします。
  5. 「スキルの基本情報(Skill Information)」ページに表示されるアプリケーションIDをコピーします。
  6. コピーしたIDでサンプルのコードを更新します。
    • Javaサンプルの場合は、サンプルのSpeechletRequestStreamHandlerクラスのsupportedApplicationIds.add()メソッドを呼び出してアプリケーションIDを指定します。
    • Node.jsサンプルの場合は、index.jsファイルの最初にあるAPP_ID変数のアプリケーションIDを指定します。
  7. Lambda関数の更新したコードをアップロードします。
    • Node.jsの場合は、更新したコードのzipファイルを作成して、Lambda関数にアップロードします。
    • Javaの場合は、サンプルのJARファイルを再ビルドして、Lambda関数にアップロードします。

次のステップ