

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: Amazon Alexa Skill をデプロイするパイプラインを作成する
<a name="tutorials-alexa-skills-kit"></a>

このチュートリアルでは、デプロイステージでデプロイプロバイダとして Alexa Skills Kit を使用して Alexa スキルを継続的にデリバリーするパイプラインを設定します。ソースリポジトリのソースファイルに変更を加えると、完成したパイプラインはスキルの変更を検出します。次に、パイプラインは Alexa Skills Kit を使用して、その変更を Alexa スキル開発ステージにデプロイします。

**重要**  
パイプライン作成の一環として、CodePipeline は、ユーザーが指定した S3 アーティファクトバケットをアーティファクトとして使用します (これは S3 ソースアクションで使用するバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。

**注記**  
この特徴は、アジアパシフィック (香港) またはヨーロッパ (ミラノ) リージョンでは使用できません。当該地域で使用可能な他のデプロイアクションを使用する場合、[デプロイアクションの統合](integrations-action-type.md#integrations-deploy) を参照してください。

カスタムスキルを Lambda 関数として作成するには、[「カスタムスキルを AWS Lambda 関数としてホストする](https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html)」を参照してください。Lambda ソースファイルと CodeBuild プロジェクトを使用して、スキルに合わせて変更を Lambda にデプロイするパイプラインを作成することもできます。

## 前提条件
<a name="tutorials-alexa-skills-kit-prereq"></a>

以下のものを用意しておく必要があります。
+ CodeCommit リポジトリ。で作成した AWS CodeCommit リポジトリを使用できます[チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ)](tutorials-simple-codecommit.md)。
+ Amazon 開発者アカウント。これは Alexa スキルを所有するアカウントです。[Alexa Skills Kit](https://developer.amazon.com/alexa-skills-kit) でアカウントを無料で作成できます。
+ Alexa スキル。「[カスタムスキルサンプルコードを取得する](https://developer.amazon.com/docs/custom-skills/use-the-alexa-skills-kit-samples.html)」チュートリアルを使用してサンプルスキルを作成できます。
+ ASK CLI をインストールし、`ask init` 認証情報で AWS を使用して設定します。「[ASK CLI のインストールと初期化](https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html#install-initialize)」を参照してください。

## ステップ 1: Alexa デベロッパーサービス LWA セキュリティプロファイルを作成する
<a name="tutorials-alexa-skills-kit-profile"></a>

このセクションでは、Login with Amazon (LWA) で使用するセキュリティプロファイルを作成します。プロファイルがすでにある場合、このステップは省略できます。
+ 「[generate-lwa-tokens](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 リポジトリにプッシュします。
<a name="tutorials-alexa-skills-kit-push"></a>

このセクションでは、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 コンソールに正常にデプロイされません。

**スキルのソースファイルを作成するには**

1. Alexa Skills Kit 開発者コンソールからスキル ID を取得します。以下のコマンドを使用します。

   ```
   ask api list-skills
   ```

   名前に基づいてスキルを見つけ、`skillId` フィールドで、関連付けられた ID をコピーします。

1. スキルの詳細を含む `skill.json` ファイルを生成します。以下のコマンドを使用します。

   ```
   ask api get-skill -s {{skill-ID}} > skill.json
   ```

1. (オプション) `interactionModel/custom` フォルダを作成します。

   以下のコマンドを使用して、フォルダ内にインタラクションモデルファイルを生成します。locale について、このチュートリアルではファイル名のロケールとして en-US を使用します。

   ```
   ask api get-model --skill-id {{skill-ID}} --locale {{locale}} >
       ./interactionModel/custom/{{locale}}.json
   ```

**ファイルを CodeCommit リポジトリにプッシュするには**

1. ファイルを CodeCommit リポジトリにプッシュまたはアップロードします。これらのファイルは、 AWS CodePipelineでのデプロイアクションのために **パイプライン作成** ウィザードによって作成されたソースアーティファクトです。ファイルは、ローカルディレクトリに次のように表示されます。

   ```
   skill.json
   /interactionModel
     /custom
       |en-US.json
   ```

1. ファイルをアップロードする方法を選択します。

   1. ローカルコンピュータで複製されたリポジトリから Git コマンドラインを使用するには:

      1. 以下のコマンドを実行して、すべてのファイルを一度にステージングします。

         ```
         git add -A
         ```

      1. 以下のコマンドを実行して、コミットメッセージによりファイルをコミットします。

         ```
         git commit -m "Added Alexa skill files"
         ```

      1. 以下のコマンドを実行して、ローカルリポジトリから CodeCommit リポジトリにファイルをプッシュします。

         ```
         git push
         ```

   1. CodeCommit コンソールを使用してファイルをアップロードするには: 

      1. CodeCommit コンソールを開き、**リポジトリ** リストから自分のリポジトリを選択します。

      1. [**Add file**]、[**Upload file**] の順に選択します。

      1. [**Choose file**] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。**[Commit changes]** (変更のコミット) を選択します。

      1. アップロードするファイルごとにこのステップを繰り返します。

## ステップ 3: ASK CLI コマンドを使用して更新トークンを作成する
<a name="tutorials-alexa-skills-kit-token"></a>

CodePipeline は、Amazon デベロッパーアカウントのクライアント ID とシークレットに基づく更新トークンを使用して、お客様の代わりに実行するアクションを認可します。このセクションでは、ASK CLI を使用してトークンを作成します。[**パイプラインを作成する**] ウィザードでこれらの認証情報を使用します。

**Amazon 開発者アカウントの認証情報を使用して更新トークンを作成するには**

1. 以下のコマンドを使用します。

   ```
   ask util generate-lwa-tokens
   ```

1. プロンプトが表示されたら、以下の例に示すようにクライアント ID とシークレットを入力します。

   ```
   ? Please type in the client ID: 
   amzn1.application-client.example112233445566
   ? Please type in the client secret:
   example112233445566
   ```

1. サインインのブラウザページが表示されます。Amazon アカウント認証情報を使用してサインインします。

1. コマンドライン画面に戻ります。アクセストークンと更新トークンが出力に生成されます。出力に返された更新トークンをコピーします。

## ステップ 4: パイプラインを作成する
<a name="tutorials-alexa-skills-kit-pipeline"></a>

このセクションでは、以下のアクションを使用してパイプラインを作成します。
+ ソースアーティファクトがスキルをサポートする Alexa スキルファイルである CodeCommit アクションを含むソースステージ。
+ Alexa Skills Kit のデプロイアクションを含むデプロイステージ。

**ウィザードを使用してパイプラインを作成するには**

1. にサインイン AWS マネジメントコンソール し、[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) で CodePipeline コンソールを開きます。

1. プロジェクトとそのリソースを作成する AWS リージョンを選択します。Alexa スキルランタイムは、以下のリージョンでのみ利用できます。
   + アジアパシフィック (東京)
   + 欧州 (アイルランド)
   + 米国東部 (バージニア北部)
   + 米国西部 (オレゴン)

1. [**ようこそ**] ページ、[**開始方法**] ページ、または [**パイプライン**] ページで、[**パイプラインの作成**] を選択します。

1. **[ステップ 1: 作成オプションを選択する]** ページの **[作成オプション]** で、**[カスタムパイプラインを構築する]** オプションを選択します。**[次へ]** を選択します。

1. **[ステップ 2: パイプラインの設定を選択する]** で、**[パイプライン名]** に「**MyAlexaPipeline**」と入力します。

1. CodePipeline は、特徴と料金が異なる V1 タイプと V2 タイプのパイプラインを提供しています。V2 タイプは、コンソールで選択できる唯一のタイプです。詳細については、「[パイプラインタイプ](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel)」を参照してください。CodePipeline の料金については、[料金](https://aws.amazon.com/codepipeline/pricing/)を参照してください。

1. **サービスロール** で、**新しいサービスロール** を選択して、CodePipeline が IAM でサービスロールを作成できるようにします。

1. [**詳細設定**] をデフォルト設定のままにし、[**次へ**] を選択します。

1. **[ステップ 3: ソースステージの追加]** の **[ソースプロバイダー]** で、**[AWS CodeCommit]** を選択します。**リポジトリ名** で、[ステップ 1: CodeCommit リポジトリを作成する](tutorials-simple-codecommit.md#codecommit-create-repository) で作成した CodeCommit リポジトリの名前を選択します。[**Branch name**] で、最新のコード更新を含むブランチの名前を選択します。

   リポジトリ名とブランチを選択した後、このパイプラインのために作成される Amazon CloudWatch Events ルールを示すメッセージが表示されます。

   [**次へ**] を選択します。

1. **[ステップ 4: ビルドステージの追加]** で、**[ビルドステージをスキップ]** を選択し、もう一度 **[スキップ]** を選択して警告メッセージを受け入れます。

   [**次へ**] を選択します。

1. **[ステップ 5: テストステージの追加]** で、**[テストステージをスキップ]** を選択し、もう一度 **[スキップ]** を選択して警告メッセージを受け入れます。

   [**次へ**] を選択します。

1. **ステップ 6: デプロイステージの追加**:

   1. [**デプロイプロバイダ**] で、[**Alexa Skills Kit**] を選択します。

   1. [**Alexa skill ID (Alexa スキル ID)**] に、Alexa Skills Kit 開発者コンソールでスキルに割り当てられているスキル ID を入力します。

   1. [**クライアント ID**] に、登録したアプリケーションの ID を入力します。

   1. [**Client secret (クライアントシークレット)**] に、登録時に選択したシークレットを入力します。

   1. [**Refresh token (更新トークン)**] に、ステップ 3 で生成したトークンを入力します。  
![Alexa Skills Kit アクションのステップ 6: デプロイページ](http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/images/alexa-deploy.png)

   1. [**次へ**] を選択します。

1. **ステップ 7: **情報を確認してから、**パイプラインの作成**を選択します。

## ステップ 5: 任意のソースファイルに変更を加えてデプロイを確認する
<a name="tutorials-alexa-skills-kit-update"></a>

スキルに変更を加え、その変更をリポジトリにプッシュします。これにより、パイプラインの実行がトリガーされます。スキルが [Alexa Skills Kit 開発者コンソール](https://developer.amazon.com/alexa/console/ask)で更新されていることを確認します。