

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學：建立部署 Amazon Alexa 技能的管道
<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) 中的步驟建立安全性描述檔。
+ 建立描述檔後，請記下 **Client ID (用戶端 ID)** 和 **Client Secret (用戶端密碼)**。
+ 請確定您如說明所述輸入 **Allowed Return URLs (允許的傳回 URL)**。URL 允許 ASK CLI 命令重新導向重新整理字符請求。

## 步驟 2：建立 Alexa 技能來源檔案並推送到您的 CodeCommit 儲存庫
<a name="tutorials-alexa-skills-kit-push"></a>

在本節，您會建立並推送 Alexa 技能來源檔案到管道用於來源階段的儲存庫。對於您已在 Amazon 開發人員主控台中建立的技能，您會產生和推送下列項目：
+ `skill.json` 檔案。
+ `interactionModel/custom` 資料夾。
**注意**  
此目錄結構符合 Alexa Skills Kit 技能套件格式要求，如[技能套件格式](https://developer.amazon.com/docs/smapi/skill-package-api-reference.html#skill-package-format)中所述。如果目錄結構未使用正確的技能套件格式，變更不會順利部署到 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` 資料夾。

   使用此命令產生資料夾內的互動模型檔案。在地區設定上，此教學使用 en-US 做為檔案名稱中的地區設定。

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

**將檔案推送至 CodeCommit 儲存庫**

1. 將檔案推送或上傳至 CodeCommit 儲存庫。這些檔案是 **Create Pipeline (建立管道)** 精靈針對 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 來建立字符。當您使用 **Create Pipeline (建立管道)** 精靈時，您會使用這些登入資料。

**使用您的 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>

在本節中，您可以採取下列動作建立管道：
+ 具有 CodeCommit 動作的來源階段，其中來源成品是支援您技能的 Alexa 技能檔案。
+ 具有 Alexa Skills Kit 部署動作的部署階段。

**使用精靈建立管道**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 選擇您要建立專案及其資源 AWS 的區域。下列區域才能取得 Alexa 技能執行時間：
   + 亞太地區 (東京)
   + 歐洲 (愛爾蘭)
   + 美國東部 (維吉尼亞北部)
   + 美國西部 (奧勒岡)

1. 在 **Welcome (歡迎)** 頁面、**Getting started (入門)** 頁面、或者 **Pipelines (管道)** 頁面上，選擇 **Create pipeline (建立管道)**。

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. 將 **Advanced settings (進階設定)** 下的設定保留為預設值，然後選擇 **Next (下一步)**。

1. 在**步驟 3：新增來源階段**的**來源提供者**中，選擇 **AWS CodeCommit**。在**儲存庫名稱**中，選擇您在 中建立的 CodeCommit 儲存庫名稱[步驟 1：建立 CodeCommit 儲存庫](tutorials-simple-codecommit.md#codecommit-create-repository)。在 **Branch name (分支名稱)** 中，選擇包含最新程式碼更新的分支名稱。

   選取儲存庫名稱和分支之後，會出現一則訊息，顯示要為此管道建立的 Amazon CloudWatch Events 規則。

   選擇**下一步**。

1. 在**步驟 4：新增建置階段**中，選擇**略過建置階段**，然後再次選擇**略過**以接受警告訊息。

   選擇**下一步**。

1. 在**步驟 5：新增測試階段**中，選擇**略過測試階段**，然後再次選擇**略過**以接受警告訊息。

   選擇**下一步**。

1. 在**步驟 6：新增部署階段**：

   1. 在 **Deploy provider (部署提供者)** 中，選擇 **Alexa Skills Kit**。

   1. 在 **Alexa skill ID (Alexa 技能 ID)** 中，輸入指派給您在 Alexa Skills Kit 開發人員主控台中技能的技能 ID。

   1. 在 **Client ID (用戶端 ID)** 中，輸入您註冊之應用程式的 ID。

   1. 在 **Client secret (用戶端密碼)** 中，輸入您在註冊時選擇的密碼。

   1. 在 **Refresh token (重新整理字符)** 中，輸入您在步驟 3 產生的字符。  
![\[Alexa Skills Kit 動作的步驟 6：部署頁面\]](http://docs.aws.amazon.com/zh_tw/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)中更新。