手动设置以使用 EC2 TOE 开发自定义组件
EC2 Task Orchestrator and Executor(EC2 TOE) 应用程序是一个独立的应用程序,用于在组件定义框架内创建、验证和运行命令。Amazon 服务可使用 EC2 TOE 编排工作流程、安装软件、修改系统配置和测试映像构建。
按照以下步骤手动安装 EC2 TOE 应用程序,并将其用作独立应用程序以开发自定义组件。如果您使用 Image Builder 控制台或 Amazon CLI 命令创建自定义组件,Image Builder 会为您完成这些步骤。有关更多信息,请参阅 使用 Image Builder 创建自定义组件。
步骤 1:安装 EC2 TOE
要在本地开发组件,请下载并安装 EC2 TOE 应用程序。
-
下载 EC2 TOE 应用程序
要安装 EC2 TOE,请选择适合您的架构和平台的下载链接。有关应用程序下载链接的完整列表,请参阅 EC2 TOE 下载
重要
Amazon 正在逐步取消对 TLS 版本 1.0 和 1.1 的支持。要访问 S3 存储桶进行 EC2 TOE 下载,您的客户端软件必须使用 TLS 版本 1.2 或更高版本。有关更多信息,请参阅此 Amazon 安全博客文章
。 -
验证签名
验证下载的步骤取决于安装 EC2 TOE 应用程序后在其中运行应用程序的服务器平台。要在 Linux 服务器上验证您的下载,请参阅 在 Linux 或 macOS 上验证签名。要在 Windows 服务器上验证您的下载,请参阅 在 Windows 上验证签名。
注意
EC2 TOE 直接从其下载位置调用。无需单独执行安装步骤。这也意味着 EC2 TOE 可以对本地环境进行更改。
为确保在组件开发过程中隔离更改,我们建议您使用 EC2 实例来开发和测试 EC2 TOE 组件。
步骤 2:设置 Amazon 凭证
在运行如下任务时,EC2 TOE 需要 Amazon 凭证才能连接到其他Amazon Web Services 服务,例如 Amazon S3 和 Amazon CloudWatch:
-
从用户提供的 Amazon S3 路径下载 EC2 TOE 文档。
-
运行
S3Download
或S3Upload
操作模块。 -
启用后,将日志流式传输到 CloudWatch。
如果您在 EC2 实例上运行 EC2 TOE,则运行 EC2 TOE 使用的权限与附加到 EC2 实例的 IAM 角色相同。
有关适用于 EC2 的 IAM 角色的更多信息,请参阅适用于 Amazon EC2 的 IAM 角色。
以下示例说明如何使用 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
环境变量设置 Amazon 凭证。
要在 Linux、macOS 或 Unix 上设置这些变量,请使用 export
。
export AWS_ACCESS_KEY_ID=your_access_key_id
export AWS_SECRET_ACCESS_KEY=your_secret_access_key
要在 Windows 上使用 PowerShell 设置这些变量,请使用 $env
。
$env:AWS_ACCESS_KEY_ID=your_access_key_id
$env:AWS_SECRET_ACCESS_KEY=your_secret_access_key
要在 Windows 上使用命令提示设置这些变量,请使用 set
。
set AWS_ACCESS_KEY_ID=your_access_key_id
set AWS_SECRET_ACCESS_KEY=your_secret_access_key
第 3 步:在本地开发组件文档
组件是用纯文本 YAML 文档编写的。有关文档语法的更多信息,请参阅 将 EC2 TOE 组件文档框架用于自定义组件。
以下是 Hello World 组件文档示例,可帮助您快速入门。
步骤 4:验证 EC2 TOE 组件
您可以使用 EC2 TOE 应用程序在本地验证 EC2 TOE 组件的语法。以下示例显示了无需运行组件即可验证其语法的 EC2 TOE 应用程序 validate
命令。
注意
EC2 TOE 应用程序只能验证当前操作系统的组件语法。例如,在 Windows 上运行 awstoe.exe
时,您无法验证使用 ExecuteBash
操作模块的 Linux 文档的语法。
Linux 或 macOS
awstoe validate --documents /home/user/hello-world.yml
Windows
awstoe.exe validate --documents C:\Users\user\Documents\hello-world.yml
步骤 5:运行 EC2 TOE 组件
EC2 TOE 应用程序可以使用 --phases
命令行参数运行指定文档的一个或多个阶段。--phases
支持的值有 build
、validate
和 test
。可以用逗号分隔的值形式输入多个阶段值。
当您提供阶段列表时,EC2 TOE 应用程序会按顺序运行每个文档的指定阶段。例如,EC2 TOE 运行 document1.yaml
的 build
和 validate
阶段,然后运行 document2.yaml
的 build
和 validate
阶段。
为了确保您的日志安全存储并保留以供故障排除,我们建议您在 Amazon S3 中配置日志存储。在 Image Builder 中,用于发布日志的 Amazon S3 位置是在基础设施配置中指定的。有关基础设施配置的更多信息,请参阅 管理 Image Builder 基础设施配置
如果未提供阶段列表,则 EC2 TOE 应用程序将按照 YAML 文档中列出的顺序运行所有阶段。
要在单个或多个文档中运行特定阶段,请使用以下命令。
单个阶段
awstoe run --documents hello-world.yml --phases build
多个阶段
awstoe run --documents
hello-world.yml
--phases build,test
文档运行
在单个文档中运行所有阶段
awstoe run --documents
documentName.yaml
在多个文档中运行所有阶段
awstoe run --documents
documentName1.yaml
,documentName2.yaml
输入 Amazon S3 信息以从用户定义的本地路径上传 EC2 TOE 日志(推荐)
awstoe run --documents
documentName.yaml
--log-s3-bucket-nameamzn-s3-demo-destination-bucket
--log-s3-key-prefixS3KeyPrefix
--log-s3-bucket-ownerS3BucketOwner
--log-directorylocal_path
在单个文档中运行所有阶段,并在控制台上显示所有日志
awstoe run --documents
documentName.yaml
--trace
示例命令
awstoe run --documents
s3://bucket/key/doc.yaml
--phasesbuild,validate
运行具有唯一 ID 的文档
awstoe run --documents
documentName.yaml
--execution-iduser-provided-id
--phasesbuild,test
获取有关 EC2 TOE 的帮助
awstoe --help