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

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

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

重要

作为创建管道的一部分,CodePipeline 将使用客户提供的 S3 构件存储桶来存放构件。(这与用于 S3 源操作的存储桶不同。) 如果 S3 构件存储桶所在的账户与您的管道账户不同,请确保 S3 构件存储桶归 Amazon Web Services 账户所有,并且安全可靠。

注意

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

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

先决条件

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

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

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

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

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

  • 确保您按照说明中提供的内容输入允许的返回 URL。该 URL 允许 ASK CLI 命令重定向刷新令牌请求。

步骤 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:使用 ASK CLI 命令来创建刷新令牌

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

使用您的 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 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

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

    • 亚太地区(东京)

    • 欧洲地区(爱尔兰)

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

    • 美国西部(俄勒冈州)

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

  4. 步骤 1:选择创建选项页面上的创建选项下,选择构建自定义管道选项。选择下一步

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

  6. CodePipeline 提供 V1 和 V2 类型的管道,它们在特性和价格上有所不同。在控制台中,您只能选择 V2 类型。有关更多信息,请参阅管道类型。有关 CodePipeline 的定价信息,请参阅定价

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

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

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

    在选择存储库名称和分支后,将出现一条消息,其中显示为该管道创建的 Amazon CloudWatch Events 规则。

    选择下一步

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

    选择下一步

  11. 步骤 5:添加测试阶段中,选择跳过测试阶段,并通过再次选择跳过接受警告消息。

    选择下一步

  12. 步骤 6:添加部署阶段中:

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

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

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

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

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

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

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

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

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