配置 EC2 TOE 运行命令的输入 - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 EC2 TOE 运行命令的输入

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

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

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

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

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

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

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

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

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

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

组件设置

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

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

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

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

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

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

  • 文档(对象数组,必填)— 一个 JSON 对象数组,代表 EC2 TOE 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(字符串,必填)-要传递到组件文档的命名参数的值。

      要了解有关组件参数的更多信息,请参阅 在中定义和引用变量 EC2 TOE 页面的参数一节。

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

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

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

  • LogS3 BucketOwner(字符串)-如果组件日志存储在 Amazon S3 中(推荐),则这是 EC2 TOE 写入日志文件的存储桶的所有者账户 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>" }