本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建部署 Amazon Alexa 技能的管道
在本教程中,您将使用 Alexa Skills Kit 作为部署阶段中的部署提供程序来配置一个连续提供 Alexa 技能的管道。当您对源存储库中的源文件进行更改时,已完成的管道会检测对您的技能所做的更改。然后,管道使用 Alexa Skills Kit 部署到 Alexa 技能开发阶段。
重要
作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 AWS 账户 ,该存储桶是安全且可靠的。
注意
此功能在亚太地区(香港)或欧洲地区(米兰)区域不可用。要使用该区域可用的其他部署操作,请参阅部署操作集成。
要将您的自定义技能创建为 Lambda 函数,请参阅将自定义技能作为 Lambda AWS 函数托管
先决条件
您必须已经具备以下各项:
-
存储 CodeCommit 库。您可以使用您在中创建的 AWS CodeCommit 存储库教程:创建简单的管道(CodeCommit存储库)。
-
一个 Amazon 开发人员账户。此账户拥有您的 Alexa 技能。您可以在 Alexa Skills Kit
免费创建一个账户。 -
一个 Alexa 技能。您可以使用获取自定义技能示例代码
教程创建示例技能。 -
安装ASKCLI并使用您的
ask init
AWS 凭据进行配置。请参阅安装和初始化ASKCLI。
步骤 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 控制台。
为您的技能创建源文件
-
从 Alexa Skills Kit 开发人员控制台中检索您的技能 ID。使用此命令:
ask api list-skills
按名称查找您的技能,然后在
skillId
字段中复制关联的 ID。 -
生成一个
skill.json
文件,其中包含您的技能详细信息。使用此命令:ask api get-skill -s
skill-ID
> skill.json -
(可选)创建一个
interactionModel/custom
文件夹。使用此命令可在文件夹中生成交互模型文件。对于区域设置,本教程使用 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 控制台,然后从 “存储库” 列表中选择您的存储库。
-
选择添加文件,然后选择上传文件。
-
选择选择文件,然后浏览以找到您的文件。通过输入您的用户名和电子邮件地址来提交更改。选择提交更改。
-
对要上传的每个文件重复此步骤。
-
-
步骤 3:使用ASKCLI命令创建刷新令牌
CodePipeline 根据您的亚马逊开发者账户中的客户端 ID 和密钥使用刷新令牌来授权其代表您执行的操作。在本节中,您将使用ASKCLI来创建令牌。您将在使用创建管道向导时使用这些凭证。
使用您的 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 Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home
。 -
选择要在其中创建项目及其资源的 AWS 区域。Alexa 技能运行时仅在以下区域可用:
-
亚太地区(东京)
-
欧洲地区(爱尔兰)
-
美国东部(弗吉尼亚州北部)
-
美国西部(俄勒冈州)
-
-
在欢迎页面、入门页面或管道页面上,选择创建管道。
-
在步骤 1:选择管道设置的管道名称中,输入
MyAlexaPipeline
。 -
在管道类型中,选择 V2。有关更多信息,请参阅 管道类型。选择下一步。
-
在服务角色中,选择新建服务角色 CodePipeline 以允许在中创建服务角色IAM。
-
将高级设置中的各项设置保留为默认值,然后选择下一步。
-
在步骤 2:添加源阶段的源提供程序中,选择 AWS CodeCommit。在存储库名称中,选择您在中创建的 CodeCommit存储库的名称步骤 1:创建 CodeCommit 存储库。在分支名称中,选择包含最新的代码更新的分支的名称。
选择存储库名称和分支后,将显示一条消息,显示要为此管道创建的 Amazon Ev CloudWatch ents 规则。
选择下一步。
-
在步骤 3:添加构建阶段中,选择跳过构建阶段,并通过再次选择跳过接受警告消息。
选择下一步。
-
在步骤 4:添加部署阶段中:
-
在部署提供程序中,选择 Alexa Skills Kit。
-
在 Alexa skill ID 中,输入在 Alexa Skills Kit 开发人员控制台中分配给您的技能的技能 ID。
-
在客户端 ID 中,输入您注册的应用程序的 ID。
-
在客户端密钥中,输入您在注册时选择的密钥。
-
在刷新令牌中,输入您在步骤 3 中生成的令牌。
-
选择下一步。
-
-
在步骤 5:审核中,查看信息,然后选择创建管道。
步骤 5:对任何源文件进行更改并验证部署
对您的技能进行更改,然后将更改推送至您的存储库。这将触发您的管道运行。验证您的技能已在 Alexa Skills Kit 开发人员控制台