配置 AWSTOE 运行命令的输入 - EC2 Image Builder

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

配置 AWSTOE 运行命令的输入

要简化命令的命令行输入,可以在文件 AWSTOE run扩展名为 JSON 格式的输入配置文件中包含命令参数和选项的.json设置。 AWSTOE 可以从以下位置之一读取您的文件:

  • 本地文件路径 (./config.json)。

  • S3 存储桶 (s3://<bucket-path>/<bucket-name>/config.json)。

输入 run 命令时,您可以使用 --config 参数指定输入配置文件。例如:

awstoe run --config <file-path>/config.json
输入配置文件

输入配置 JSON 文件中包含所有设置的键值对,您可以通过 run 命令参数和选项直接提供这些设置。如果您在输入配置文件和 run 命令中都指定了一个设置作为参数或选项,则以下优先规则适用:

优先规则
  1. 通过参数或选项直接提供给run命令的 AWS CLI设置会覆盖在输入配置文件中为相同设置定义的任何值。

  2. 输入配置文件中的设置会覆盖组件的默认值。

  3. 如果没有将其他设置传递到组件文档,则它可以应用默认值(如果存在)。

此规则有两个例外:文档和参数。这些设置在输入配置中和作为命令参数时的工作方式有所不同。如果使用输入配置文件,则不得直接向 run 命令指定这些参数。这样做会产生错误。

组件设置

输入配置文件包含以下设置。要简化文件,可以省略任何不需要的可选设置。除非另有说明,否则所有设置均为可选设置。

  • cwIgnoreFailures(布尔值)-忽略日志中的 CloudWatch 日志失败。

  • cwLogGroup(字符串)- CloudWatch 日志的LogGroup名称。

  • cwLogRegion(字符串)-适用于 CloudWatch 日志的 AWS 区域。

  • cwLogStream(字符串)- CloudWatch 日志的LogStream名称,用于指示将console.log文件流式传输到 AWSTOE 何处。

  • d@@ ocumentS3 BucketOwner(字符串)— 基于 URI 的 S3 文档的存储桶所有者的账户 ID。

  • 文档(对象数组,必填)— 一个 JSON 对象数组,代表 AWSTOE run命令正在运行的 YAML 组件文档。必须指定至少一个组件文档。

    对象由以下字段组成:

    • 路径(字符串,必填)-YAML 组件文档的文件位置。其必须是以下内容之一:

      • 本地文件路径 (. /component-doc-example.yaml)

      • 一个 S3; URI (s3://bucket/key)。

      • Image Builder 组件构建版本 ARN(arn: aws: imagebuilder: us-west-2:123456789012: component/ /2021.12.02/1)。my-example-component

    • parameters(对象数组)-键值对对象的数组,每个代表 run 命令在运行组件文档时传入的特定于组件的参数。组件的参数是可选的。组件文档可能定义参数,也可能没有定义参数。

      对象由以下字段组成:

      • name(字符串,必填)-组件参数的名称。

      • value(字符串,必填)-要传递到组件文档的命名参数的值。

      要了解有关组件参数的更多信息,请参阅 在自定义组件文档中使用变量 页面的参数一节。

  • executonId(字符串)-这是适用于执行当前 run 命令的唯一 ID。此 ID 包含在输出和日志文件名中,用于唯一标识这些文件,并将它们链接到当前的命令执行。如果省略此设置,则 AWSTOE 生成 GUID。

  • LogDire ctory(字符串)- AWSTOE 存储此命令执行的所有日志文件的目标目录。默认情况下,该目录位于以下父目录中:TOE_<DATETIME>_<EXECUTIONID>。如果未指定日志目录,则 AWSTOE 使用当前工作目录 (.)。

  • LogS3 BucketName(字符串)-如果组件日志存储在 Amazon S3 中(推荐),则将组件应用程序日志 AWSTOE 上传到此参数中命名的 S3 存储桶。

  • LogS3 BucketOwner(字符串)-如果组件日志存储在 Amazon S3 中(推荐),则这是 AWSTOE 写入日志文件的存储桶的所有者账户 ID。

  • LogS3 KeyPrefix(字符串)— 如果组件日志存储在 Amazon S3 中(推荐),则这是存储桶中日志位置的 S3 对象密钥前缀。

  • parameters(对象数组)-键值对对象的数组,表示全局应用于当前 run 命令执行中包含的所有组件的参数。

    • name(字符串,必填)-全局参数的名称。

    • (字符串,必填)-要传递到所有组件文档的命名参数的值。

  • phases(字符串)-以逗号分隔的列表,它指定要从 YAML 组件文档中运行哪些阶段。如果组件文档包含其他阶段,则这些阶段将无法运行。

  • stateDirectory(字符串)-存储状态跟踪文件的文件路径。

  • trace(布尔值)-启用对控制台的详细日志记录。

示例

以下示例显示了一个输入配置文件,该文件为两个组件文档 sampledoc.yamlconversation-intro.yaml 运行 buildtest 阶段。每个组件文档都有一个仅适用于其自身的参数,并且两者都使用一个共享参数。project 参数对两个组件文档均适用。

{ "documents": [ { "path": "<file path>/awstoe/sampledoc.yaml>", "parameters": [ { "name": "dayofweek", "value": "Monday" } ] }, { "path": "<file path>/awstoe/conversation-intro.yaml>", "parameters": [ { "name": "greeting", "value": "Hello, HAL." } ] } ], "phases": "build,test", "parameters": [ { "name": "project", "value": "examples" } ], "cwLogGroup": "<log_group_name>", "cwLogStream": "<log_stream_name>", "documentS3BucketOwner": "<owner_aws_account_number>", "executionId": "<id_number>", "logDirectory": "<local_directory_path>", "logS3BucketName": "<bucket_name_for_log_files>", "logS3KeyPrefix": "<key_prefix_for_log_files>", "logS3BucketOwner": "<owner_aws_account_number>" }