教程:创建部署 Amazon Alexa 技能的管道 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:创建部署 Amazon Alexa 技能的管道

在本教程中,您将使用 Alexa Skills Kit 作为部署阶段中的部署提供程序来配置一个连续提供 Alexa 技能的管道。当您对源存储库中的源文件进行更改时,已完成的管道会检测对您的技能所做的更改。然后,管道使用 Alexa Skills Kit 部署到 Alexa 技能开发阶段。

重要

作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 Amazon Web Services 账户 ,该存储桶是安全且可靠的。

注意

此功能在亚太地区(香港)或欧洲地区(米兰)区域不可用。要使用该区域可用的其他部署操作,请参阅部署操作集成

要将您的自定义技能创建为 Lambda 函数,请参阅将自定义技能作为 Lambda Amazon 函数托管。您还可以创建一个使用 Lambda 源文件的管道和一个用于为您的技能部署对 Lambda 的更改的 CodeBuild 项目。

先决条件

您必须已经具备以下各项:

步骤 1:创建 Alexa 开发者服务LWA安全配置文件

在本节中,您将创建一个安全配置文件以用于 Login with Amazon (LWA)。如果您已有配置文件,可跳过本步骤。

  • 使用中的步骤generate-lwa-tokens创建安全配置文件。

  • 在您创建配置文件后,请记下客户端 ID客户端密钥

  • 请务必按照说明中的规定输入 “允许退货 URLs”。URLs允许ASKCLI命令重定向刷新令牌请求。

第 2 步:创建 Alexa 技能源文件并推送到你的 CodeCommit 存储库

在本节中,您将创建 Alexa 技能源文件并将其推送到管道用于源阶段的存储库。对于您在 Amazon 开发人员控制台中创建的技能,您可以生成并推送以下内容:

  • 一个 skill.json 文件。

  • 一个 interactionModel/custom 文件夹。

    注意

    此目录结构符合 Alexa Skills Kit 技能包格式要求,如技能包格式中所述。如果您的目录结构未使用正确的技能包格式,则更改不会成功部署到 Alexa Skills Kit 控制台。

为您的技能创建源文件
  1. 从 Alexa Skills Kit 开发人员控制台中检索您的技能 ID。使用此命令:

    ask api list-skills

    按名称查找您的技能,然后在 skillId 字段中复制关联的 ID。

  2. 生成一个 skill.json 文件,其中包含您的技能详细信息。使用此命令:

    ask api get-skill -s skill-ID > skill.json
  3. (可选)创建一个 interactionModel/custom 文件夹。

    使用此命令可在文件夹中生成交互模型文件。对于区域设置,本教程使用 en-US 作为文件名中的区域设置。

    ask api get-model --skill-id skill-ID --locale locale > ./interactionModel/custom/locale.json
将文件推送到存储 CodeCommit 库
  1. 将文件推送或上传到您的 CodeCommit 存储库。这些文件是由创建管道向导针对您在 Amazon CodePipeline中的部署操作创建的源项目。您的文件在本地目录中应如下所示:

    skill.json /interactionModel /custom |en-US.json
  2. 选择要用于上传文件的方法:

    1. 在本地计算机上从克隆的存储库使用 Git 命令行:

      1. 运行以下命令以立即暂存您的所有文件:

        git add -A
      2. 运行以下命令以提交带有提交消息的文件:

        git commit -m "Added Alexa skill files"
      3. 运行以下命令将本地存储库中的文件推送到存储 CodeCommit 库:

        git push
    2. 要使用 CodeCommit 控制台上传文件,请执行以下操作:

      1. 打开 CodeCommit 控制台,然后从 “存储库” 列表中选择您的存储库

      2. 选择添加文件,然后选择上传文件

      3. 选择选择文件,然后浏览以找到您的文件。通过输入您的用户名和电子邮件地址来提交更改。选择提交更改

      4. 对要上传的每个文件重复此步骤。

步骤 3:使用ASKCLI命令创建刷新令牌

CodePipeline 根据您的亚马逊开发者账户中的客户端 ID 和密钥使用刷新令牌来授权其代表您执行的操作。在本节中,您将使用ASKCLI来创建令牌。您将在使用创建管道向导时使用这些凭证。

使用您的 Amazon 开发人员账户凭据创建刷新令牌
  1. 使用以下命令:

    ask util generate-lwa-tokens
  2. 在系统提示时,输入您的客户端 ID 和密钥,如下例所示:

    ? Please type in the client ID: amzn1.application-client.example112233445566 ? Please type in the client secret: example112233445566
  3. 将显示登录浏览器页面。使用 Amazon 开发人员账户凭证进行登录。

  4. 返回到命令行屏幕。会在输出中生成访问令牌和刷新令牌。复制在输出中返回的刷新令牌。

步骤 4:创建管道

在此部分中,您将使用以下操作创建管道:

  • 一个源舞台,其 CodeCommit 动作源工件是支持你技能的 Alexa 技能文件。

  • 具有 Alexa Skills Kit 部署操作的部署阶段。

使用向导创建管道
  1. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

  2. 选择要在其中创建项目及其资源的 Amazon 区域。Alexa 技能运行时仅在以下区域可用:

    • 亚太地区(东京)

    • 欧洲地区(爱尔兰)

    • 美国东部(弗吉尼亚州北部)

    • 美国西部(俄勒冈州)

  3. 欢迎页面、入门页面或管道页面上,选择创建管道

  4. 步骤 1:选择管道设置管道名称中,输入 MyAlexaPipeline

  5. 管道类型中,选择 V2。有关更多信息,请参阅 管道类型。选择下一步

  6. 服务角色中,选择新建服务角色 CodePipeline 以允许在中创建服务角色IAM。

  7. 高级设置中的各项设置保留为默认值,然后选择下一步

  8. 步骤 2:添加源阶段源提供程序中,选择 Amazon CodeCommit。在存储库名称中,选择您在中创建的 CodeCommit存储库的名称步骤 1:创建 CodeCommit 存储库。在分支名称中,选择包含最新的代码更新的分支的名称。

    选择存储库名称和分支后,将显示一条消息,显示要为此管道创建的 Amazon Ev CloudWatch ents 规则。

    选择下一步

  9. 步骤 3:添加构建阶段中,选择跳过构建阶段,并通过再次选择跳过接受警告消息。

    选择下一步

  10. 步骤 4:添加部署阶段中:

    1. 部署提供程序中,选择 Alexa Skills Kit

    2. Alexa skill ID 中,输入在 Alexa Skills Kit 开发人员控制台中分配给您的技能的技能 ID。

    3. 客户端 ID 中,输入您注册的应用程序的 ID。

    4. 客户端密钥中,输入您在注册时选择的密钥。

    5. 刷新令牌中,输入您在步骤 3 中生成的令牌。

      Alexa Skills Kit 操作的步骤 4:部署页面
    6. 选择下一步

  11. 步骤 5:审核中,查看信息,然后选择创建管道

步骤 5:对任何源文件进行更改并验证部署

对您的技能进行更改,然后将更改推送至您的存储库。这将触发您的管道运行。验证您的技能已在 Alexa Skills Kit 开发人员控制台中更新。