本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Task Orchestrator and Executor (AWSTOE) 应用程序是一个独立的应用程序,用于在组件定义框架内创建、验证和运行命令。 AWS 服务可用于 AWSTOE 协调工作流程、安装软件、修改系统配置和测试映像构建。
按照以下步骤手动安装 AWSTOE 应用程序,并将其用作独立应用程序来开发自定义组件。如果您使用 Image Builder 控制台或 AWS CLI 命令创建自定义组件,Image Builder 会为您完成这些步骤。有关更多信息,请参阅 使用 Image Builder 创建自定义组件。
步骤 1:安装 AWSTOE
要在本地开发组件,请下载并安装该 AWSTOE 应用程序。
-
下载 AWSTOE 应用程序
要进行安装 AWSTOE,请选择适合您的架构和平台的下载链接。有关应用程序下载链接的完整列表,请参阅 AWSTOE 下载
重要
AWS 正在逐步取消对 TLS 版本 1.0 和 1.1 的支持。要访问 S3 存储桶进行 AWSTOE 下载,您的客户端软件必须使用 TLS 版本 1.2 或更高版本。有关更多信息,请参阅此 AWS 安全博客文章
。 -
验证签名
验证下载的步骤取决于安装 AWSTOE 应用程序后在其中运行应用程序的服务器平台。要在 Linux 服务器上验证您的下载,请参阅 在 Linux 或 macOS 上验证签名。要在 Windows 服务器上验证您的下载,请参阅 在 Windows 上验证签名。
注意
AWSTOE 直接从其下载位置调用。无需单独执行安装步骤。这也意味着 AWSTOE 可以对本地环境进行更改。
为确保在组件开发过程中隔离更改,我们建议您使用 EC2 实例来开发和测试 AWSTOE 组件。
步骤 2:设置 AWS 凭证
AWSTOE 运行任务时需要 AWS 凭证才能连接到其他任务 AWS 服务,例如 Amazon S3 和 Amazon CloudWatch,例如:
-
从用户提供的 Amazon S3 路径下载 AWSTOE 文档。
-
运行
S3Download
或S3Upload
操作模块。 -
启用后 CloudWatch,将日志流式传输到。
如果您 AWSTOE 在 EC2 实例上运行,则运行 AWSTOE 使用的权限与附加到该 EC2 实例的 IAM 角色相同。
有关的 IAM 角色的更多信息 EC2,请参阅适用于 A mazon 的 IAM 角色EC2。
以下示例说明如何使用AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量设置 AWS 凭证。
要在 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 文档编写的。有关文档语法的更多信息,请参阅 使用 AWSTOE 组件文档框架创建自定义组件。
以下是 Hello World 组件文档示例,可帮助您快速入门。
本指南中的某些 Linux 组件示例引用名为 hello-world-linux.yml
的组件文档文件。您可以使用下面的文档来着手这些示例。
name: Hello World
description: This is hello world testing document for Linux.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: HelloWorldStep
action: ExecuteBash
inputs:
commands:
- echo 'Hello World from the build phase.'
- name: validate
steps:
- name: HelloWorldStep
action: ExecuteBash
inputs:
commands:
- echo 'Hello World from the validate phase.'
- name: test
steps:
- name: HelloWorldStep
action: ExecuteBash
inputs:
commands:
- echo 'Hello World from the test phase.'
步骤 4:验证 AWSTOE 组件
您可以使用 AWSTOE
应用程序在本地验证 AWSTOE 组件的语法。以下示例显示了无需运行组件即可验证其语法的 AWSTOE 应用程序validate
命令。
注意
AWSTOE 应用程序只能验证当前操作系统的组件语法。例如,在 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:运行 AWSTOE 组件
AWSTOE 应用程序可以使用--phases
命令行参数运行指定文档的一个或多个阶段。--phases
支持的值有 build
、validate
和 test
。可以用逗号分隔的值形式输入多个阶段值。
当您提供阶段列表时, AWSTOE 应用程序会按顺序运行每个文档的指定阶段。例如, AWSTOE 运行的build
和validate
阶段document1.yaml
,然后运行的build
和validate
阶段document2.yaml
。
为了确保您的日志安全存储并保留以供故障排除,我们建议您在 Amazon S3 中配置日志存储。在 Image Builder 中,用于发布日志的 Amazon S3 位置是在基础设施配置中指定的。有关基础设施配置的更多信息,请参阅 管理 Image Builder 基础设施配置
如果未提供阶段列表,则 AWSTOE 应用程序将按照 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 信息以从用户定义的本地路径上传 AWSTOE 日志(推荐)
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
获取以下方面的帮助 AWSTOE
awstoe --help