

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

# 配置 AWSTOE 运行命令的输入
<a name="toe-run-config-input"></a>

要简化命令的命令行输入，可以在文件 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设置会覆盖在输入配置文件中为相同设置定义的任何值。

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

1. 如果没有将其他设置传递到组件文档，则它可以应用默认值（如果存在）。

此规则有两个例外：文档和参数。这些设置在输入配置中和作为命令参数时的工作方式有所不同。如果使用输入配置文件，则不得直接向 **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--: component/ /2021.12.02/1）。*2:123456789012* *my-example-component*
  + **parameters**（对象数组）-键值对对象的数组，每个代表 **run** 命令在运行组件文档时传入的特定于组件的参数。组件的参数是可选的。组件文档可能定义参数，也可能没有定义参数。

    对象由以下字段组成：
    + **name**（字符串，必填）-组件参数的名称。
    + **value**（字符串，必填）-要传递到组件文档的命名参数的值。

    要了解有关组件参数的更多信息，请参阅 [在自定义组件文档中使用变量](toe-user-defined-variables.md) 页面的**参数**一节。
+ **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.yaml` 和 `conversation-intro.yaml` 运行 `build` 和 `test` 阶段。每个组件文档都有一个仅适用于其自身的参数，并且两者都使用一个共享参数。`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>"
 }
```