設定 AWS TOE 執行命令的輸入 - EC2 Image Builder

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

設定 AWS TOE 執行命令的輸入

若要簡化命令的 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命令的設定,會覆寫輸入組態檔案中針對相同設定定義的任何值。

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

  3. 如果沒有其他設定傳遞到元件文件中,則可以套用預設值,如果存在預設值。

此規則有兩個例外狀況:文件和參數。這些設定在輸入組態和 做為命令參數時的運作方式不同。如果您使用輸入組態檔案,則不得將這些參數直接指定給 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 (字串,必要) – 要傳遞至具名參數元件文件的值。

      若要進一步了解元件參數,請參閱 在自訂元件文件中使用變數頁面中的參數一節。

  • 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 (布林值) – 啟用主控台的詳細記錄。

範例

下列範例顯示輸入組態檔案,其會針對兩個元件文件執行 buildtest階段: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>" }