

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 AWS TOE 執行命令的輸入
<a name="toe-run-config-input"></a>

若要簡化命令的 AWS TOE **run**命令列輸入，您可以在具有`.json`副檔名的 JSON 格式輸入組態檔案中包含命令參數和選項的設定。 AWS TOE 可以從下列其中一個位置讀取檔案：
+ 本機檔案路徑 (*./config.json)。*
+ S3 儲存貯體 (*s3：//<bucket-path>/<bucket-name>/config.json)。*

當您輸入 **run**命令時，您可以使用 **--config** 參數指定輸入組態檔案。例如：

```
awstoe run --config <file-path>/config.json
```

**輸入組態檔案**  
輸入組態 JSON 檔案包含您可以直接透過**run**命令參數和選項提供的所有設定的鍵/值對。如果您在輸入組態檔案和 **run**命令中指定設定，做為參數或選項，則適用下列優先順序規則：

**優先順序規則**

1. 透過 AWS CLI參數或選項直接提供給 中**run**命令的設定，會覆寫輸入組態檔案中針對相同設定定義的任何值。

1. 輸入組態檔案中的設定會覆寫元件預設值。

1. 如果沒有其他設定傳遞到元件文件中，則可以套用預設值，如果有的話。

此規則有兩個例外狀況：文件和參數。這些設定在輸入組態和命令參數中運作方式不同。如果您使用輸入組態檔案，則不得將這些參數直接指定給 **run**命令。這樣做會產生錯誤。

**元件設定**  
輸入組態檔案包含下列設定。若要簡化檔案，您可以捨棄任何不需要的選用設定。除非另有說明，否則所有設定都是選用的。
+ **cwIgnoreFailures** （布林值） – 忽略 CloudWatch Logs 中的記錄失敗。
+ **cwLogGroup** （字串） – CloudWatch Logs `LogGroup`的名稱。
+ **cwLogRegion** （字串） – 適用於 CloudWatch Logs AWS 的區域。
+ **cwLogStream** （字串） – CloudWatch Logs `LogStream`的名稱，指示 AWS TOE 在何處串流`console.log`檔案。
+ **documentS3BucketOwner** （字串） – S3 URI 型文件儲存貯體擁有者的帳戶 ID。
+ **文件** （物件陣列，必要） – 代表 AWS TOE **run**命令正在執行之 YAML 元件文件的 JSON 物件陣列。至少必須指定一個元件文件。

  每個物件都包含下列欄位：
  + **path** （字串，必要） – YAML 元件文件的檔案位置。這必須是下列其中一項：
    + 本機檔案路徑 (*./component-doc-example.yaml)。*
    + S3 URI (`s3://bucket/key`)。
    + Image Builder 元件建置版本 ARN (arn：aws：imagebuilder：us-west-*2：123456789012*：component/*my-example-component*/2021.12.02/1)。
  + **參數** （物件陣列） – 鍵值對物件的陣列，每個物件代表**run**命令在執行元件文件時傳入的元件特定參數。元件的參數是選用的。元件文件不一定會定義參數。

    每個物件都包含下列欄位：
    + **name** （字串，必要） – 元件參數的名稱。
    + **value** （字串，必要） – 要傳入具名參數元件文件的值。

    若要進一步了解元件參數，請參閱 [在自訂元件文件中使用變數](toe-user-defined-variables.md)頁面中的**參數**一節。
+ **executonId** （字串） – 這是套用至目前**run**命令執行的唯一 ID。此 ID 包含在輸出和日誌檔案名稱中，以唯一識別這些檔案，並將其連結至目前的命令執行。如果沒有此設定， AWS TOE 會產生 GUID。
+ **logDirectory** （字串） – AWS TOE 儲存此命令執行中所有日誌檔案的目的地目錄。根據預設，此目錄位於下列父目錄內：`TOE_<DATETIME>_<EXECUTIONID>`。如果您未指定日誌目錄， AWS TOE 會使用目前的工作目錄 (`.`)。
+ **logS3BucketName** （字串） – 如果元件日誌存放在 Amazon S3 （建議） 中，請將元件應用程式日誌 AWS TOE 上傳到此參數中名為 的 S3 儲存貯體。
+ **logS3BucketOwner** （字串） – 如果元件日誌存放在 Amazon S3 （建議），這是 AWS TOE 寫入日誌檔案之儲存貯體的擁有者帳戶 ID。
+ **logS3KeyPrefix** （字串） – 如果元件日誌存放在 Amazon S3 （建議） 中，這是儲存貯體中日誌位置的 S3 物件金鑰字首。
+ **參數** （物件陣列） – 代表全域套用至目前**run**命令執行中所有元件之參數的鍵值對物件陣列。
  + **name** （字串，必要） – 全域參數的名稱。
  + **value** （字串，必要） – 要傳遞至具名參數之所有元件文件的值。
+ **階段** （字串） – 以逗號分隔的清單，指定要從 YAML 元件文件執行的階段。如果元件文件包含其他階段，則不會執行這些階段。
+ **stateDirectory** （字串） – 存放狀態追蹤檔案的檔案路徑。
+ **trace** （布林值） – 啟用主控台的詳細記錄。

**範例**  
下列範例顯示為兩個元件文件執行 `build`和 `test`階段的輸入組態檔案：`sampledoc.yaml`、 和 `conversation-intro.yaml`。每個元件文件都有一個參數，僅適用於其本身，而且兩者都使用一個共用參數。`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>"
 }
```