チュートリアル: Amazon Alexa Skill をデプロイするパイプラインを作成する
このチュートリアルでは、デプロイステージでデプロイプロバイダとして Alexa Skills Kit を使用して Alexa スキルを継続的にデリバリーするパイプラインを設定します。ソースリポジトリのソースファイルに変更を加えると、完成したパイプラインはスキルの変更を検出します。次に、パイプラインは Alexa Skills Kit を使用して、その変更を Alexa スキル開発ステージにデプロイします。
注記
カスタムスキルを Lambda 関数として作成するには、「https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html」を参照してください。Lambda ソースファイルと CodeBuild プロジェクトを使用するパイプラインを作成して、スキルの Lambda に対する変更をデプロイすることもできます。たとえば、新しいスキルおよび関連する Lambda 関数を作成するには、AWS CodeStar プロジェクトを作成します。「AWS CodeStar で Alexa スキルプロジェクトを作成する」を参照してください。そのオプションの場合、パイプラインには CodeBuild アクションを含む 3 番目のビルドステージと、AWS CloudFormation のデプロイステージのアクションが含まれます。
前提条件
以下のものを用意しておく必要があります。
-
CodeCommit リポジトリ。「チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリの場合)」で作成した AWS CodeCommit リポジトリを使用できます。
-
Amazon 開発者アカウント。これは Alexa スキルを所有するアカウントです。Alexa Skills Kit でアカウントを無料で作成できます。
-
Alexa スキル。「カスタムスキルサンプルコードを取得する」チュートリアルを使用してサンプルスキルを作成できます。
-
ASK CLI をインストールし、
ask init
で AWS 認証情報を使用して設定します。「https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html#install-initialize」を参照してください。
ステップ 1: Alexa Developer Services LWA セキュリティプロファイルを作成する
このセクションでは、Login With Amazon (LWA) で使用するセキュリティプロファイルを作成します。プロファイルがすでにある場合、このステップは省略できます。
-
「https://developer.amazon.com/docs/smapi/ask-cli-command-reference.html#generate-lwa-tokens」の手順を使用して、セキュリティプロファイルを作成します。
-
プロファイルを作成したら、[クライアント ID] と [クライアントシークレット] の値をメモしておきます。
-
それらの手順に従って [Allowed Return URLs (許可されたリターン URL)] に入力します。これらの URL を ASK CLI コマンドで使用して、更新トークンリクエストをリダイレクトできます。
ステップ 2: Alexa スキルのソースファイルを作成して CodeCommit リポジトリにプッシュする
このセクションでは、Alexa スキルのソースファイルを作成し、パイプラインによってソースステージに使用されるリポジトリにプッシュします。Amazon 開発者コンソールで作成したスキル用に、以下のものを作成してプッシュします。
-
skill.json
ファイル。 -
interactionModel/custom
フォルダ。注記
このディレクトリ構造は、「https://developer.amazon.com/docs/smapi/skill-package-api-reference.html#skill-package-format」で説明されているように、Alexa Skills Kit スキルパッケージの形式要件に準拠しています。ディレクトリ構造で正しいスキルパッケージ形式が使用されていない場合、変更は Alexa Skills Kit コンソールに正常にデプロイされません。
スキルのソースファイルを作成するには
-
Alexa Skills Kit 開発者コンソールからスキル ID を取得します。以下のコマンドを使用します。
ask api list-skills
名前に基づいてスキルを見つけ、
skillId
フィールドで、関連付けられた ID をコピーします。 -
スキルの詳細を含む
skill.json
ファイルを生成します。以下のコマンドを使用します。ask api get-skill -s
skill-ID
> skill.json -
(オプション)
interactionModel/custom
フォルダを作成します。以下のコマンドを使用して、フォルダ内にインタラクションモデルファイルを生成します。locale について、このチュートリアルではファイル名のロケールとして en-US を使用します。
ask api get-model --skill-id
skill-ID
--localelocale
> ./interactionModel/custom/locale
.json
ファイルを CodeCommit リポジトリにプッシュするには
-
ファイルを CodeCommit リポジトリにプッシュまたはアップロードします。これらのファイルは、AWS CodePipeline の [パイプラインを作成する] ウィザードによってデプロイアクション用に作成されたソースアーティファクトです。ローカルディレクトリのファイルは次のようになります。
skill.json /interactionModel /custom |en-US.json
-
ファイルをアップロードする方法を選択します。
-
ローカルコンピュータで複製されたリポジトリから Git コマンドラインを使用するには:
-
以下のコマンドを実行して、すべてのファイルを一度にステージングします。
git add -A
-
以下のコマンドを実行して、コミットメッセージによりファイルをコミットします。
git commit -m "Added Alexa skill files"
-
以下のコマンドを実行して、ローカルリポジトリから CodeCommit リポジトリにファイルをプッシュします。
git push
-
-
CodeCommit コンソールを使用してファイルをアップロードするには:
-
CodeCommit コンソールを開き、[リポジトリ] リストから自分のリポジトリを選択します。
-
[Add file]、[Upload file] の順に選択します。
-
[Choose file] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。[変更のコミット] を選択します。
-
アップロードするファイルごとにこのステップを繰り返します。
-
-
ステップ 3: ASK CLI コマンドを使用して更新トークンを作成する
CodePipeline は、Amazon 開発者アカウントのクライアント ID とシークレットに基づく更新トークンを使用して、お客様の代わりに実行するアクションを承認します。このセクションでは、ASK CLI を使用してトークンを作成します。[パイプラインを作成する] ウィザードでこれらの認証情報を使用します。
Amazon 開発者アカウントの認証情報を使用して更新トークンを作成するには
-
次のコマンドを使用します。
ask util generate-lwa-tokens
-
プロンプトが表示されたら、以下の例に示すようにクライアント ID とシークレットを入力します。
? Please type in the client ID: amzn1.application-client.example112233445566 ? Please type in the client secret: example112233445566
-
サインインのブラウザページが表示されます。Amazon アカウント認証情報を使用してサインインします。
-
コマンドライン画面に戻ります。アクセストークンと更新トークンが出力に生成されます。出力に返された更新トークンをコピーします。
ステップ 4: パイプラインの作成
このセクションでは、次のアクションを使用してパイプラインを作成します。
-
CodeCommit アクションを含むソースステージ。この場合、ソースアーティファクトは、スキルをサポートする Alexa スキルファイルです。
-
Alexa Skills Kit のデプロイアクションを含むデプロイステージ。
ウィザードを使用してパイプラインを作成するには
-
AWS マネジメントコンソール にサインインし、CodePipeline コンソール (http://console.aws.amazon.com/codesuite/codepipeline/home) を開きます。
-
プロジェクトとそのリソースを作成する AWS リージョンを選択します。Alexa スキルランタイムは、次のリージョンでのみ利用できます。
-
アジアパシフィック (東京)
-
欧州 (アイルランド)
-
米国東部(バージニア北部)
-
米国西部 (オレゴン)
-
-
[ようこそ] ページ、[Getting started (開始方法)] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。
-
[Step 1: Choose pipeline settings (ステップ 1: パイプラインの設定の選択)] の [パイプライン名] で、
MyAlexaPipeline
と入力します。 -
[Service role (サービスロール)] で、次のいずれかの操作を行います。
-
[New service role (新しいサービスロール)] を選択して、CodePipeline に IAM での新しいサービスロールの作成を許可します。[ロール名] では、ロールとポリシーの名前はいずれもデフォルトで AWSCodePipelineServiceRole-
region
-pipeline_name
という形式になります。たとえば、このチュートリアル用に作成されたサービスロールは AWSCodePipelineServiceRole-eu-west-2-MyAlexaPipeline です。 -
IAM で作成済みのサービスロールを使用するには、[Existing service role (既存のサービスロール)] を選択します。[ロール名] で、リストからサービスロールを選択します。
注記
サービスロールを作成したタイミングによっては、AWS の他のサービスをサポートするためにロールのアクセス許可の更新が必要になる場合があります。詳細については、他の AWS サービスのアクセス許可の追加 を参照してください。
-
-
アーティファクトストア:
-
[Default location (デフォルトの場所)] を選択し、パイプライン用に選択したリージョン内のパイプラインのデフォルトのアーティファクトストア (デフォルトとして指定された Amazon S3 アーティファクトバケットなど) を使用します。
-
Amazon S3 アーティファクトバケットなどのアーティファクトストアがパイプラインと同じリージョンにすでに存在する場合は、[Custom location (カスタムの場所)] を選択します。
注記
これはソースコードのソースバケットではありません。これはパイプラインのアーティファクトストアです。パイプラインごとに個別のアーティファクトストア (Amazon S3 バケットなど) が必要です。パイプラインを作成または編集する場合は、パイプラインリージョンにアーティファクトバケットが必要であり、アクションを実行している AWS リージョンごとに 1 つのアーティファクトバケットが必要です。
詳細については、「入力および出力アーティファクト」および「CodePipeline パイプライン構造のリファレンス」を参照してください。
[次へ] を選択します。
-
-
[Step 2: Add source stage (ステップ 2: ソースステージの追加)] の [ソースプロバイダ] で、[AWS CodeCommit] を選択します。[リポジトリ名] で、「ステップ 1: CodeCommit リポジトリを作成する」で作成した CodeCommit リポジトリの名前を選択します。[Branch name] で、最新のコード更新を含むブランチの名前を選択します。独自のブランチを作成する場合を除き、ここで使用できるのは
master
のみです。リポジトリ名とブランチを選択した後、このパイプラインのために作成される Amazon CloudWatch Events ルールを示すメッセージが表示されます。
[次へ] を選択します。
-
[Step 3: Add build stage (ステップ 3: ビルドステージの追加)] で、[Skip build stage (ビルドステージのスキップ)] を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。
[次へ] を選択します。
-
ステップ 4: デプロイステージの追加:
-
[デプロイプロバイダ] で、[Alexa Skills Kit] を選択します。
-
[Alexa skill ID (Alexa スキル ID)] に、Alexa Skills Kit 開発者コンソールでスキルに割り当てられているスキル ID を入力します。
-
[クライアント ID] に、登録したアプリケーションの ID を入力します。
-
[Client secret (クライアントシークレット)] に、登録時に選択したシークレットを入力します。
-
[Refresh token (更新トークン)] に、ステップ 3 で生成したトークンを入力します。
-
[次へ] を選択します。
-
-
[ステップ 5: 確認] で情報を確認し、[パイプラインの作成] を選択します。
ステップ 5: 任意のソースファイルに変更を加えてデプロイを確認する
スキルに変更を加え、その変更をリポジトリにプッシュします。これにより、パイプラインの実行がトリガーされます。スキルが Alexa Skills Kit 開発者コンソールで更新されていることを確認します。