AWS TOE 元件管理員支援的動作模組 - EC2 Image Builder

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

AWS TOE 元件管理員支援的動作模組

映像建置服務 (例如 EC2 Image Builder) 會使用 AWS TOE 動作模組協助設定用於建置和測試自訂機器映像的 EC2 執行個體。本節說明常用 AWS TOE 動作模組的功能,以及如何設定它們,包括範例。

AWS TOE 元件是使用純文字 YAML 文件建立的。如需文件語法的詳細資訊,請參閱使用自訂 AWS TOE 元件的元件文件架構

注意

所有動作模組在執行時都會使用與系統管理員代理程式相同的帳戶 (root在 Linux 和 Windows NT Authority\SYSTEM 上)。

一般執行模組

下節包含執行一般執行命令和指示之動作模組的詳細資訊。

ExecuteBash

ExecuteBash動作模塊允許您使用內聯 shell 代碼/命令運行 bash 腳本。這個模組支援 Linux 系統。

您在命令塊中指定的所有命令和指令都會轉換為一個文件(例如,input.sh)並使用 bash shell 運行。運行 shell 文件的結果是步驟的退出代碼。

如果指令碼以結束代碼結束,則ExecuteBash模組會處理系統重新啟動194。啟動時,應用程式會執行下列其中一個動作:

  • 如果系統管理員代理程式執行,應用程式會將結束代碼交給呼叫者。Systems Manager 代理程式會處理系統重新開機,並執行與起始重新啟動相同的步驟,如從指令碼重新啟動受控執行個體中所述。

  • 該應用程序保存當前executionstate,配置重新啟動觸發器以重新運行應用程序,然後重新啟動系統。

系統重新啟動後,應用程式會執行與起始重新啟動相同的步驟。如果您需要此功能,則必須撰寫可處理相同 shell 命令的多次叫用的冪等指令碼。

輸入
原始 Description (描述) Type 必要
commands 包含要按照 bash 語法運行的指令或命令列表。允許使用多行 YAML。 清單

輸入範例:重新開機前後

name: ExitCode194Example description: This shows how the exit code can be used to restart a system with ExecuteBash schemaVersion: 1.0 phases: - name: build steps: - name: RestartTrigger action: ExecuteBash inputs: commands: - | REBOOT_INDICATOR=/var/tmp/reboot-indicator if [ -f "${REBOOT_INDICATOR}" ]; then echo 'The reboot file exists. Deleting it and exiting with success.' rm "${REBOOT_INDICATOR}" exit 0 fi echo 'The reboot file does not exist. Creating it and triggering a restart.' touch "${REBOOT_INDICATOR}" exit 194
輸出
欄位 Description (描述) Type
stdout 命令執行的標準輸出。 string

如果您啟動重新啟動並返回退出代碼作194為操作模塊的一部分,則構建將在啟動重新啟動的相同操作模塊步驟中恢復。如果您在沒有結束代碼的情況下啟動重新開機,建置程序可能會失敗。

輸出示例:重新啟動之前(第一次通過文檔)

{ “stdout”: “The reboot file does not exist. Creating it and triggering a restart." }

輸出示例:重新啟動後,(第二次通過文檔)

{ “stdout”: “The reboot file exists. Deleting it and exiting with success." }

ExecuteBinary

ExecuteBinary動作模塊允許您運行帶有命令行參數列表的二進製文件。

如果二進位檔案以 194 (Linux) 或 3010 (Windows) 的結束代碼結束,則ExecuteBinary模組會處理系統重新啟動。發生這種情況時,應用程式會執行下列其中一個動作:

  • 如果系統管理員代理程式執行,應用程式會將結束代碼交給呼叫者。Systems Manager 代理程式會處理重新啟動系統,並執行與起始重新啟動相同的步驟,如從指令碼重新啟動受控執行個體中所述。

  • 該應用程序保存當前executionstate,配置重新啟動觸發器以重新運行應用程序,然後重新啟動系統。

系統重新啟動後,應用程式會執行與起始重新啟動相同的步驟。如果您需要此功能,則必須撰寫可處理相同 shell 命令的多次叫用的冪等指令碼。

輸入
原始 Description (描述) Type 必要
path 要執行的二進位檔案的路徑。 字串
arguments 包含執行二進位檔時要使用的命令列引數清單。 字串清單

輸入範例:安裝 .NET

- name: "InstallDotnet" action: ExecuteBinary inputs: path: C:\PathTo\dotnet_installer.exe arguments: - /qb - /norestart
輸出
欄位 Description (描述) Type
stdout 命令執行的標準輸出。 string

輸出範例

{ "stdout": "success" }

ExecuteDocument

ExecuteDocument動作模組增加了對巢狀元件文件的支援,從一個文件執行多個元件文件。 AWS TOE 驗證在執行階段傳入輸入參數的文件。

限制
  • 此操作模塊運行一次,不允許重試,也沒有設置超時限制的選項。ExecuteDocument設定下列預設值,如果您嘗試變更它們,則會傳回錯誤。

    • timeoutSeconds:-1

    • maxAttempts:1

    注意

    您可以將這些值保留空白,並 AWS TOE 使用預設值。

  • 允許文檔嵌套,最多三層深,但不超過此。三個巢狀層級會轉換為四個文件層級,因為頂層不是巢狀的。在這個案例中,最低層級的文件不得呼叫任何其他文件。

  • 不允許循環執行元件文件。任何在迴圈結構之外呼叫本身的文件,或是在目前的執行鏈中呼叫另一個較高層級的文件,都會啟動可能導致無限迴圈的循環。當 AWS TOE 檢測到循環執行時,它會停止執行並記錄失敗。

ExecuteDocument 動作模組的巢狀層級限制。

如果元件文件嘗試自行執行,或執行目前執行鏈結中較高的任何元件文件,則執行會失敗。

輸入

原始 Description (描述) Type 必要
document

元件文件的路徑。有效的選項包含:

  • 本機檔案路徑

  • S3 URI

  • EC2 Image Builder 元件建置版本 ARN

字串
document-s3-bucket-owner

存放元件文件之 S3 儲存貯體的 S3 儲存貯體擁有者帳戶識別碼。(如果您在元件文件中使用 S3 URI,則建議使用此選項)。

字串
phases

要在元件文件中執行的階段,以逗號分隔的清單表示。如果未指定階段,則會執行所有階段。

字串
parameters

在執行階段作為索引鍵值配對傳入至組件文件的輸入參數。

參數對映清單

參數對映輸入

原始 Description (描述) Type 必要
name

要傳遞至ExecuteDocument動作模組執行之元件文件的輸入參數名稱。

字串
value

輸入參數的值。

字串
輸入範例

下列範例會根據您的安裝路徑,顯示元件文件的輸入變化。

輸入範例:本機文件路徑

# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument inputs: document: Sample-1.yaml phases: build parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2

輸入範例:S3 URI 作為文件路徑

# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument inputs: document: s3://my-bucket/Sample-1.yaml document-s3-bucket-owner: 123456789012 phases: build,validate parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2

輸入範例:EC2 Image Builder 元件 ARN 做為文件路徑

# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument inputs: document: arn:aws:imagebuilder:us-west-2:aws:component/Sample-Test/1.0.0 phases: test parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2

使用 ForEach 循環運行文檔

# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument loop: name: 'myForEachLoop' forEach: - Sample-1.yaml - Sample-2.yaml inputs: document: "{{myForEachLoop.value}}" phases: test parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2

使用 For 迴圈執行文件

# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument loop: name: 'myForLoop' for: start: 1 end: 2 updateBy: 1 inputs: document: "Sample-{{myForLoop.value}}.yaml" phases: test parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2
輸出

AWS TOE 建立detailedoutput.json每次執行時呼叫的輸出檔案。該文件包含有關在運行時調用的每個組件文檔的每個階段和步驟的詳細信息。對於ExecuteDocument動作模組,您可以在outputs欄位中找到簡短的執行階段摘要,以及它在中執行的階段、步驟和文件的詳細資訊detailedOutput

{ \"executedStepCount\":1,\"executionId\":\"97054e22-06cc-11ec-9b14-acde48001122\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\" }",

每個組件文件的輸出摘要物件都包含下列詳細資訊,如下所示,以及範例值:

  • executedStepCount「:1

  • 「執行識別碼」:"12345a67-89BC-01-二三四四

  • 「failedStepCount「: 0

  • 「失敗消息」:「」

  • 「ignoredFailedStep計數」:0

  • 「日誌網址」:「」

  • 「狀態」:「成功」

輸出範例

下列範例會顯示執行巢狀執行時ExecuteDocument動作模組的輸出。在此範例中,main.yaml元件文件成功執行Sample-1.yaml元件文件。

{ "executionId": "12345a67-89bc-01de-2f34-abcd56789012", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "documents": [ { "name": "", "filePath": "main.yaml", "status": "success", "description": "", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "phases": [ { "name": "build", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "steps": [ { "name": "ExecuteNestedDocument", "status": "success", "failureMessage": "", "timeoutSeconds": -1, "onFailure": "Abort", "maxAttempts": 1, "action": "ExecuteDocument", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "inputs": "[{\"document\":\"Sample-1.yaml\",\"document-s3-bucket-owner\":\"\",\"phases\":\"\",\"parameters\":null}]", "outputs": "[{\"executedStepCount\":1,\"executionId\":\"98765f43-21ed-09cb-8a76-fedc54321098\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]", "loop": null, "detailedOutput": [ { "executionId": "98765f43-21ed-09cb-8a76-fedc54321098", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "documents": [ { "name": "", "filePath": "Sample-1.yaml", "status": "success", "description": "", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "phases": [ { "name": "build", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "steps": [ { "name": "ExecuteBashStep", "status": "success", "failureMessage": "", "timeoutSeconds": 7200, "onFailure": "Abort", "maxAttempts": 1, "action": "ExecuteBash", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "inputs": "[{\"commands\":[\"echo \\\"Hello World!\\\"\"]}]", "outputs": "[{\"stdout\":\"Hello World!\"}]", "loop": null, "detailedOutput": null }] }] }] }] }] }] }] }

ExecutePowerShell

ExecutePowerShell動作模塊允許您使用內聯 shell 代碼/命 PowerShell 令運行腳本。此模組支援視窗平台和視窗 PowerShell。

在命令塊中指定的所有命令/指令都轉換為腳本文件(例如,input.ps1)並使用 Windows 運行。PowerShell運行 shell 文件的結果是退出代碼。

如果 shell 命令以的結束代碼結束,則ExecutePowerShell模組會處理系統重新啟動3010。啟動時,應用程式會執行下列其中一個動作:

  • 如果由系統管理員代理程式執行,請將結束代碼交給呼叫者。Systems Manager 代理程式會處理系統重新開機,並執行與起始重新啟動相同的步驟,如從指令碼重新啟動受控執行個體中所述。

  • 儲存目前的項目executionstate、設定重新啟動觸發程式以重新執行應用程式,然後重新啟動系統。

系統重新啟動後,應用程式會執行與起始重新啟動相同的步驟。如果您需要此功能,則必須撰寫可處理相同 shell 命令的多次叫用的冪等指令碼。

輸入
原始 Description (描述) Type 必要
commands 包含要依照PowerShell 語法執行的指示或命令清單。允許使用多行 YAML。 字串清單

是。必須指定commandsfile,不能同時指定兩者。

file 包含 PowerShell 腳本檔案的路徑。 PowerShell 將使用-file命令行參數對此文件運行。路徑必須指向.ps1檔案。 字串

是。必須指定commandsfile,不能同時指定兩者。

輸入範例:重新開機前後

name: ExitCode3010Example description: This shows how the exit code can be used to restart a system with ExecutePowerShell schemaVersion: 1.0 phases: - name: build steps: - name: RestartTrigger action: ExecutePowerShell inputs: commands: - | $rebootIndicator = Join-Path -Path $env:SystemDrive -ChildPath 'reboot-indicator' if (Test-Path -Path $rebootIndicator) { Write-Host 'The reboot file exists. Deleting it and exiting with success.' Remove-Item -Path $rebootIndicator -Force | Out-Null [System.Environment]::Exit(0) } Write-Host 'The reboot file does not exist. Creating it and triggering a restart.' New-Item -Path $rebootIndicator -ItemType File | Out-Null [System.Environment]::Exit(3010)
輸出
欄位 Description (描述) Type
stdout 命令執行的標準輸出。 string

如果您執行重新開機並傳回結束代碼3010做為動作模組的一部分,建置將會在啟動重新開機的相同動作模組步驟中繼續執行。如果您在沒有結束代碼的情況下執行重新開機,建置程序可能會失敗。

輸出示例:重新啟動之前(第一次通過文檔)

{ “stdout”: “The reboot file does not exist. Creating it and triggering a restart." }

輸出示例:重新啟動後,(第二次通過文檔)

{ “stdout”: “The reboot file exists. Deleting it and exiting with success." }

文件下載和上傳模塊

下節包含執行下載和上載命令和指示的動作模組的詳細資訊。

下載並上傳動作模組

S3 下載

使用S3Download動作模組,您可以將 Amazon S3 物件或一組物件下載到您使用destination路徑指定的本機檔案或資料夾。如果指定位置中已有任何檔案,且overwrite旗標設定為 true,則S3Download會覆寫檔案。

您的source位置可以指向 Amazon S3 中的特定物件,或者您可以使用帶有星號萬用字元 (*) 的 key prefix 置詞來下載符合 key prefix 路徑的一組物件。當您在您的source位置指定 key prefix 時,S3Download操作模塊將下載與前綴匹配的所有內容(包括的文件和文件夾)。請確定 key prefix 以正斜線結尾,後面接著星號 (/*),以便下載符合前置詞的所有項目。例如:s3://my-bucket/my-folder/*

注意

下載前,目標路徑中的所有資料夾都必須存在,否則下載失敗。

如果指定 key prefix 的S3Download動作在下載期間失敗,資料夾內容不會回復到失敗前的狀態。目的地資料夾會維持在失敗時的狀態。

支援的使用案例

S3Download作模組支援下列使用案例:

  • Amazon S3 物件會按照下載路徑中的指定,下載到本機資料夾。

  • Amazon S3 物件 (在 Amazon S3 檔案路徑中具有 key prefix) 會下載到指定的本機資料夾,該資料夾會遞歸地將符合 key prefix 的所有 Amazon S3 物件複製到本機資料夾。

IAM 要求

您與執行個體設定檔相關聯的 IAM 角色必須具有執行S3Download動作模組的權限。下列 IAM 政策必須附加至與執行個體設定檔相關聯的 IAM 角色:

  • 單一檔案s3:GetObject針對值區/物件 (例如,)。arn:aws:s3:::BucketName/*

  • 多個檔案s3:ListBucket針對值區/物件 (例如,arn:aws:s3:::BucketName) 和s3:GetObject儲存貯體/物件 (例如,)。arn:aws:s3:::BucketName/*

輸入

原始

Description (描述)

Type

必要

預設

source

作為您下載的來源的 Amazon S3 存儲桶。您可以指定特定物件的路徑,或使用以正斜線結尾的 key prefix 置詞,後面接著星號萬用字元 (/*),以下載符合金鑰前置詞的一組物件。

字串

N/A

destination

下載 Amazon S3 物件的本機路徑。若要下載單一檔案,您必須指定檔案名稱做為路徑的一部分。例如 /myfolder/package.zip

字串

N/A

expectedBucketOwner

source路徑中提供之值區的預期擁有者帳號 ID。我們建議您驗證來源中指定的 Amazon S3 儲存貯體的擁有權。

字串

N/A

overwrite

設定為 true 時,如果指定本機路徑的目標資料夾中已存在相同名稱的檔案,則下載檔案會覆寫本機檔案。設定為 false 時,本機系統上的現有檔案不會遭到覆寫,且動作模組會因下載錯誤而失敗。

例如:Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.

Boolean

true

注意

在下列範例中,您可以使用 Linux 路徑取代 Windows 資料夾路徑。例如,C:\myfolder\package.zip可以替換為/myfolder/package.zip

輸入範例:將 Amazon S3 物件複製到本機檔案

下列範例顯示如何將 Amazon S3 物件複製到本機檔案。

- name: DownloadMyFile action: S3Download inputs: - source: s3://mybucket/path/to/package.zip destination: C:\myfolder\package.zip expectedBucketOwner: 123456789022 overwrite: false - source: s3://mybucket/path/to/package.zip destination: C:\myfolder\package.zip expectedBucketOwner: 123456789022 overwrite: true - source: s3://mybucket/path/to/package.zip destination: C:\myfolder\package.zip expectedBucketOwner: 123456789022
輸入範例:將具有 key prefix 的 Amazon S3 儲存貯體中的所有 Amazon S3 物件複製到本機資料夾

下列範例顯示如何將具有 key prefix 的 Amazon S3 儲存貯體中的所有 Amazon S3 物件複製到本機資料夾。Amazon S3 沒有資料夾的概念,因此會複製符合 key prefix 的所有物件。可下載的物件數目上限為 1000 個。

- name: MyS3DownloadKeyprefix action: S3Download maxAttempts: 3 inputs: - source: s3://mybucket/path/to/* destination: C:\myfolder\ expectedBucketOwner: 123456789022 overwrite: false - source: s3://mybucket/path/to/* destination: C:\myfolder\ expectedBucketOwner: 123456789022 overwrite: true - source: s3://mybucket/path/to/* destination: C:\myfolder\ expectedBucketOwner: 123456789022
輸出

無。

第 3 頁上傳

使用 S3Upload 動作模組,您可以將檔案從來源檔案或資料夾上傳到 Amazon S3 位置。您可以在為來源位置指定的路徑中使用萬用字元 (*),以上傳路徑符合萬用字元模式的所有檔案。

如果遞迴 S3Upload 動作失敗,則任何已上傳的檔案都會保留在目的地 Amazon S3 儲存貯體中。

支援的使用案例
  • 本地文件到 Amazon S3 對象。

  • 資料夾中的本機檔案 (使用萬用字元) 至 Amazon S3 key prefix。

  • 將本機資料夾 (必須recurse設定為true) 複製到 Amazon S3 key prefix。

IAM 要求

您與執行個體設定檔相關聯的 IAM 角色必須具有執行S3Upload動作模組的權限。下列 IAM 政策必須附加至與執行個體設定檔相關聯的 IAM 角色。該政策必須將s3:PutObject許可授予目標 Amazon S3 儲存貯體。例如,arn:aws:s3:::BucketName/*)。

輸入

原始

Description (描述)

Type

必要

預設

source

來源檔案/資料夾起源的本機路徑。source支援星號萬用字元 (*)。

字串

N/A

destination

上傳來源檔案/資料夾之目的地 Amazon S3 儲存貯體的路徑。

字串

N/A

recurse

當設定為時true,遞迴執行 S3 上傳

字串

false

expectedBucketOwner

目標路徑中指定之 Amazon S3 儲存貯體的預期擁有者帳戶 ID。我們建議您驗證目標中指定的 Amazon S3 儲存貯體的擁有權。

字串

N/A

輸入範例:將本機檔案複製到 Amazon S3 物件

下列範例顯示如何將本機檔案複製到 Amazon S3 物件。

- name: MyS3UploadFile action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\myfolder\package.zip destination: s3://mybucket/path/to/package.zip expectedBucketOwner: 123456789022
輸入範例:將本機資料夾中的所有檔案複製到具有 key prefix 的 Amazon S3 儲存貯體

下列範例顯示如何將本機資料夾中的所有檔案複製到具有 key prefix 的 Amazon S3 儲存貯體。此範例不會複製子資料夾或其內容,因recurse為未指定,且預設為false

- name: MyS3UploadMultipleFiles action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\myfolder\* destination: s3://mybucket/path/to/ expectedBucketOwner: 123456789022
輸入範例:將所有檔案和資料夾從本機資料夾遞迴複製到 Amazon S3 儲存貯體

下列範例顯示如何將所有檔案和資料夾從本機資料夾遞迴複製到具有 key prefix 的 Amazon S3 儲存貯體。

- name: MyS3UploadFolder action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\myfolder\* destination: s3://mybucket/path/to/ recurse: true expectedBucketOwner: 123456789022
輸出

無。

WebDownload

WebDownload操作模塊允許您通過 HTTP/HTTPS 協議從遠程位置下載文件和資源(建議使用 HTTPS)。下載的數量或大小沒有限制。該模塊處理重試和指數輪詢邏輯。

根據使用者輸入,每個下載作業最多會分配 5 次嘗試成功。這些嘗試與文件maxAttempts欄位中指定的嘗試不同steps,這些嘗試與動作模組失敗有關。

此操作模塊隱式處理重定向。除了以外的所有 HTTP 狀態碼都會導致錯誤。200

輸入
原始 Description (描述) Type 必要 預設
source 有效的 HTTP/HTTPS 網址 (建議使用 HTTPS),它遵循 RFC 3986 標準。允許鏈結運算式。 字串

N/A
destination 本機系統上的絕對或相對檔案或資料夾路徑。資料夾路徑必須以結尾/。如果它們不以結尾/,則會將它們視為檔案路徑。該模塊創建任何成功下載所需的文件或文件夾。允許鏈結運算式。 字串 N/A
overwrite 啟用時,會使用下載的檔案或資源覆寫本機系統上的任何現有檔案。如果未啟用,則不會覆寫本機系統上的任何現有檔案,並且動作模組會失敗並顯示錯誤。啟用覆寫並指定總和檢查碼和演算法時,只有在任何預先存在檔案的總和檢查碼和雜湊不符時,動作模組才會下載檔案。 Boolean true
checksum 當您指定總和檢查碼時,會根據提供的演算法產生的下載檔案的雜湊進行檢查。若要啟用檔案驗證,必須同時提供總和檢查碼和演算法。允許鏈結運算式。 字串 N/A
algorithm 用來計算總和檢查碼的演算法。選項包括 MD5、SHA1、SHA256 和 SHA512。若要啟用檔案驗證,必須同時提供總和檢查碼和演算法。允許鏈結運算式。 字串 N/A
ignoreCertificateErrors 啟用時會忽略 SSL 憑證驗證。 Boolean false
輸出
原始 Description (描述) Type
destination 以換行字元分隔的字串,指定儲存下載檔案或資源的目標路徑。 字串

輸入範例:將遠端檔案下載到本機目的地

- name: DownloadRemoteFile action: WebDownload maxAttempts: 3 inputs: - source: https://testdomain/path/to/java14.zip destination: C:\testfolder\package.zip

輸出:

{ "destination": "C:\\testfolder\\package.zip" }

輸入範例:將多個遠端檔案下載至多個本機目的地

- name: DownloadRemoteFiles action: WebDownload maxAttempts: 3 inputs: - source: https://testdomain/path/to/java14.zip destination: /tmp/java14_renamed.zip - source: https://testdomain/path/to/java14.zip destination: /tmp/create_new_folder_and_add_java14_as_zip/

輸出:

{ "destination": "/tmp/create_new_folder/java14_renamed.zip\n/tmp/create_new_folder_and_add_java14_as_zip/java14.zip" }

輸入示例:下載一個遠程文件而不覆蓋本地目的地,並通過文件驗證下載另一個遠程文件

- name: DownloadRemoteMultipleProperties action: WebDownload maxAttempts: 3 inputs: - source: https://testdomain/path/to/java14.zip destination: C:\create_new_folder\java14_renamed.zip overwrite: false - source: https://testdomain/path/to/java14.zip destination: C:\create_new_folder_and_add_java14_as_zip\ checksum: ac68bbf921d953d1cfab916cb6120864 algorithm: MD5 overwrite: true

輸出:

{ "destination": "C:\\create_new_folder\\java14_renamed.zip\nC:\\create_new_folder_and_add_java14_as_zip\\java14.zip" }

輸入範例:下載遠端檔案並忽略 SSL 認證驗證

- name: DownloadRemoteIgnoreValidation action: WebDownload maxAttempts: 3 inputs: - source: https://www.bad-ssl.com/resource destination: /tmp/downloads/ ignoreCertificateErrors: true

輸出:

{ "destination": "/tmp/downloads/resource" }

檔案系統作業模組

下節包含執行檔案系統作業指令和指示之動作模組的詳細資訊。

AppendFile

AppendFile操作模塊將指定的內容添加到文件的預先存在的內容。

如果檔案編碼值與預設的 encoding (utf-8) 值不同,您可以使用encoding選項來指定檔案編碼值。默認情況下,utf-16utf-32假定使用小端編碼。

當發生以下情況時,動作模塊返回一個錯誤:

  • 指定的檔案在執行階段不存在。

  • 您沒有修改檔案內容的寫入權限。

  • 該模塊在文件操作過程中遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A
content 要附加到文件的內容。 字串 空字串 N/A
encoding 編碼標準。 字串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LEutf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE、和 utf-32-BE。編碼選項的值不區分大小寫。

輸入範例:不使用編碼追加檔案 (Linux)

- name: AppendingFileWithOutEncodingLinux action: AppendFile inputs: - path: ./Sample.txt content: "The string to be appended to the file"

輸入範例:不使用編碼方式追加檔案 (Windows)

- name: AppendingFileWithOutEncodingWindows action: AppendFile inputs: - path: C:\MyFolder\MyFile.txt content: "The string to be appended to the file"

輸入範例:使用編碼追加檔案 (Linux)

- name: AppendingFileWithEncodingLinux action: AppendFile inputs: - path: /FolderName/SampleFile.txt content: "The string to be appended to the file" encoding: UTF-32

輸入範例:使用編碼追加檔案 (Windows)

- name: AppendingFileWithEncodingWindows action: AppendFile inputs: - path: C:\MyFolderName\SampleFile.txt content: "The string to be appended to the file" encoding: UTF-32

輸入示例:使用空字符串附加文件(Linux)

- name: AppendingEmptyStringLinux action: AppendFile inputs: - path: /FolderName/SampleFile.txt

輸入範例:使用空字串附加檔案 (Windows)

- name: AppendingEmptyStringWindows action: AppendFile inputs: - path: C:\MyFolderName\SampleFile.txt
輸出

無。

CopyFile

CopyFile操作模塊將文件從指定源複製到指定的目的地。默認情況下,如果模塊在運行時不存在,則遞歸地創建目標文件夾。

如果具有指定名稱的文件已經存在於指定的文件夾中,默認情況下,操作模塊將覆蓋現有文件。您可以將覆寫選項設定為來覆寫此預設行為false。當覆蓋選項設置為false,並且在指定位置已經存在具有指定名稱的文件時,操作模塊將返回一個錯誤。此選項的工作方式與 Linux 中的cp命令相同,默認情況下會覆蓋該命令。

來源檔案名稱可以包含萬用字元 (*)。只有在最後一個檔案路徑分隔符號 (/\) 之後才接受萬用字元。如果來源檔案名稱中包含萬用字元,則所有符合萬用字元的檔案都會複製到目標資料夾。如果您要使用萬用字元移動多個檔案,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束,表示目的地輸入為資料夾。

如果目標檔案名稱與來源檔案名稱不同,您可以使用destination選項指定目標檔案名稱。如果您未指定目標檔案名稱,則會使用來源檔案的名稱來建立目標檔案。最後一個檔案路徑分隔符號 (/\) 之後的任何文字都會被視為檔案名稱。如果您要使用與來源檔案相同的檔案名稱,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有在指定資料夾中建立檔案的權限。

  • 來源檔案在執行階段不存在。

  • 已存在具有指定檔案名稱的資料夾,且overwrite選項設定為false

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
source 來源檔案路徑。 字串 N/A N/A
destination 目標檔案路徑。 字串 N/A N/A
overwrite 設定為 false 時,如果指定位置已存在具有指定名稱的檔案,則不會取代目標檔案。 Boolean true N/A

輸入範例:複製檔案 (Linux)

- name: CopyingAFileLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt

輸入範例:複製檔案 (視窗)

- name: CopyingAFileWindows action: CopyFile inputs: - source: C:\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt

輸入範例:使用來源檔案名稱複製檔案 (Linux)

- name: CopyingFileWithSourceFileNameLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/

輸入範例:使用來源檔案名稱複製檔案 (Windows)

- name: CopyingFileWithSourceFileNameWindows action: CopyFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\

輸入範例:使用萬用字元 (Linux) 複製檔案

- name: CopyingFilesWithWildCardLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

輸入範例:使用萬用字元複製檔案 (Windows)

- name: CopyingFilesWithWildCardWindows action: CopyFile inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder\

輸入示例:複製文件而不覆蓋(Linux)

- name: CopyingFilesWithoutOverwriteLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt overwrite: false

輸入範例:複製檔案而不覆寫 (Windows)

- name: CopyingFilesWithoutOverwriteWindows action: CopyFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt overwrite: false
輸出

無。

CopyFolder

CopyFolder操作模塊將文件夾從指定的源複製到指定的目標。source選項的輸入是要複製的資料夾,而選destination項的輸入是複製來源資料夾內容的資料夾。默認情況下,如果模塊在運行時不存在,則遞歸地創建目標文件夾。

如果指定的資料夾中已存在具有指定名稱的資料夾,動作模組預設會覆寫現有資料夾。您可以將覆寫選項設定為來覆寫此預設行為false。當覆蓋選項設置為false,並且在指定位置中已經存在具有指定名稱的文件夾時,操作模塊將返回錯誤。

來源資料夾名稱可以包含萬用字元 (*)。只有在最後一個檔案路徑分隔符號 (/\) 之後才接受萬用字元。如果來源資料夾名稱中包含萬用字元,則符合萬用字元的所有資料夾都會複製到目標資料夾。如果要使用萬用字元複製多個資料夾,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束,表示目的地輸入為資料夾。

如果目標資料夾名稱與來源資料夾名稱不同,您可以使用destination選項指定目標資料夾名稱。如果您未指定目標資料夾名稱,則會使用來源資料夾的名稱來建立目標資料夾。最後一個檔案路徑分隔符號 (/\) 之後的任何文字都會被視為資料夾名稱。如果您想要使用與來源資料夾相同的資料夾名稱,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有在指定資料夾中建立資料夾的權限。

  • 來源資料夾在執行階段不存在。

  • 已有具有指定資料夾名稱的資料夾,且overwrite選項設定為false

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
source 來源資料夾路徑。 字串 N/A N/A
destination 目標資料夾路徑。 字串 N/A N/A
overwrite 設定為 false 時,如果指定位置中已存在具有指定名稱的資料夾,則不會取代目標資料夾。 Boolean true N/A

輸入範例:複製資料夾 (Linux)

- name: CopyingAFolderLinux action: CopyFolder inputs: - source: /Sample/MyFolder/SampleFolder destination: /MyFolder/destinationFolder

輸入範例:複製資料夾 (視窗)

- name: CopyingAFolderWindows action: CopyFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\destinationFolder

輸入範例:使用來源資料夾名稱複製資料夾 (Linux)

- name: CopyingFolderSourceFolderNameLinux action: CopyFolder inputs: - source: /Sample/MyFolder/SourceFolder destination: /MyFolder/

輸入範例:使用來源資料夾名稱複製資料夾 (Windows)

- name: CopyingFolderSourceFolderNameWindows action: CopyFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\

輸入範例:使用萬用字元 (Linux) 複製資料夾

- name: CopyingFoldersWithWildCardLinux action: CopyFolder inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

輸入範例:使用萬用字元複製資料夾 (Windows)

- name: CopyingFoldersWithWildCardWindows action: CopyFolder inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder\

輸入示例:複製文件夾而不覆蓋(Linux)

- name: CopyingFoldersWithoutOverwriteLinux action: CopyFolder inputs: - source: /Sample/MyFolder/SourceFolder destination: /MyFolder/destinationFolder overwrite: false

輸入示例:複製文件夾而不覆蓋(Windows)

- name: CopyingFoldersWithoutOverwrite action: CopyFolder inputs: - source: C:\Sample\MyFolder\SourceFolder destination: C:\MyFolder\destinationFolder overwrite: false
輸出

無。

CreateFile

CreateFile作模塊在指定位置創建一個文件。默認情況下,如果需要,該模塊還遞歸創建父文件夾。

如果文件已經存在於指定的文件夾中,默認情況下,操作模塊會截斷或覆蓋現有文件。您可以將覆寫選項設定為來覆寫此預設行為false。當覆蓋選項設置為false,並且在指定位置已經存在具有指定名稱的文件時,操作模塊將返回一個錯誤。

如果檔案編碼值與預設的 encoding (utf-8) 值不同,您可以使用encoding選項來指定檔案編碼值。默認情況下,utf-16utf-32假定使用小端編碼。

ownergroup、和permissions是選擇性輸入。的輸入permissions必須是字串值。如果未提供檔案,則會使用預設值建立檔案。這些選項在 Windows 平台上不受支援。如果、和permissions選項在 Windows 平台上使用 ownergroup,則此動作模組會驗證並傳回錯誤。

該操作模塊可以創建一個文件與操作系統的默認umask值定義的權限。如果要覆寫預設umask值,則必須設定值。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有在指定父資料夾中建立檔案或資料夾的權限。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A
content 檔案的文字內容。 字串 N/A N/A
encoding 編碼標準。 字串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LEutf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE、和 utf-32-BE。編碼選項的值不區分大小寫。
owner 使用者名稱或 ID。 字串 N/A N/A 在視窗上不支援。
group 群組名稱或識別碼。 字串 目前的使用者。 N/A 在視窗上不支援。
permissions 檔案權限。 字串 0666 N/A 在視窗上不支援。
overwrite 如果指定檔案的名稱已存在,請設定此值以false防止依預設截斷或覆寫檔案。 Boolean true N/A

輸入示例:創建一個不覆蓋的文件(Linux)

- name: CreatingFileWithoutOverwriteLinux action: CreateFile inputs: - path: /home/UserName/Sample.txt content: The text content of the sample file. overwrite: false

輸入示例:創建一個文件而不覆蓋(Windows)

- name: CreatingFileWithoutOverwriteWindows action: CreateFile inputs: - path: C:\Temp\Sample.txt content: The text content of the sample file. overwrite: false

輸入示例:創建具有文件屬性的文件

- name: CreatingFileWithFileProperties action: CreateFile inputs: - path: SampleFolder/Sample.txt content: The text content of the sample file. encoding: UTF-16 owner: Ubuntu group: UbuntuGroup permissions: 0777 - path: SampleFolder/SampleFile.txt permissions: 755 - path: SampleFolder/TextFile.txt encoding: UTF-16 owner: root group: rootUserGroup

輸入示例:創建一個沒有文件屬性的文件

- name: CreatingFileWithoutFileProperties action: CreateFile inputs: - path: ./Sample.txt - path: Sample1.txt

輸入示例:創建一個空文件以跳過 Linux 清理腳本中的某個部分

- name: CreateSkipCleanupfile action: CreateFile inputs: - path: <skip section file name>

如需更多資訊,請參閱覆寫 Linux 清理指令碼

輸出

無。

CreateFolder

CreateFolder動作模塊在指定位置創建一個文件夾。默認情況下,如果需要,該模塊還遞歸創建父文件夾。

如果該文件夾已經存在於指定的文件夾中,默認情況下,操作模塊會截斷或覆蓋現有文件夾。您可以將覆寫選項設定為來覆寫此預設行為false。當覆蓋選項設置為false,並且在指定位置中已經存在具有指定名稱的文件夾時,操作模塊將返回錯誤。

ownergroup、和permissions是選擇性輸入。的輸入permissions必須是字串值。這些選項在 Windows 平台上不受支援。如果、和permissions選項在 Windows 平台上使用 ownergroup,則此動作模組會驗證並傳回錯誤。

此操作模塊可以創建一個文件夾與操作系統的默認umask值定義的權限。如果要覆寫預設umask值,則必須設定值。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有在指定位置建立資料夾的權限。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 資料夾路徑。 字串 N/A N/A
owner 使用者名稱或 ID。 字串 目前的使用者。 N/A 在視窗上不支援。
group 群組名稱或識別碼。 字串 目前使用者的群組。 N/A 在視窗上不支援。
permissions 資料夾權限。 字串 0777 N/A 在視窗上不支援。
overwrite 如果指定檔案的名稱已存在,請設定此值以false防止依預設截斷或覆寫檔案。 Boolean true N/A

輸入範例:建立資料夾 (Linux)

- name: CreatingFolderLinux action: CreateFolder inputs: - path: /Sample/MyFolder/

輸入範例:建立資料夾 (視窗)

- name: CreatingFolderWindows action: CreateFolder inputs: - path: C:\MyFolder

輸入示例:創建一個文件夾指定文件夾屬性

- name: CreatingFolderWithFolderProperties action: CreateFolder inputs: - path: /Sample/MyFolder/Sample/ owner: SampleOwnerName group: SampleGroupName permissions: 0777 - path: /Sample/MyFolder/SampleFoler/ permissions: 777

輸入範例:建立覆寫現有資料夾的資料夾 (如果有的話)。

- name: CreatingFolderWithOverwrite action: CreateFolder inputs: - path: /Sample/MyFolder/Sample/ overwrite: true
輸出

無。

CreateSymlink動作模塊創建符號鏈接,或包含對另一個文件的引用的文件。此模組在視窗平台上不受支援。

pathtarget選項的輸入可以是絕對路徑或相對路徑。如果選path項的輸入是相對路徑,則在建立連結時會以絕對路徑取代該選項。

默認情況下,當指定的文件夾中已經存在具有指定名稱的鏈接時,操作模塊返回一個錯誤。您可以將force選項設定為來覆寫此預設行為true。當選force項設定為時true,模組將覆寫現有的連結。

如果父文件夾不存在,默認情況下,操作模塊遞歸創建該文件夾。

當發生以下情況時,動作模塊返回一個錯誤:

  • 目標檔案在執行階段不存在。

  • 具有指定名稱的非符號連結檔案已存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A 在視窗上不支援。
target 符號連結所指向的目標檔案路徑。 字串 N/A N/A 在視窗上不支援。
force 當具有相同名稱的連結已存在時強制建立連結。 Boolean false N/A 在視窗上不支援。

輸入示例:創建強制創建鏈接的符號鏈接

- name: CreatingSymbolicLinkWithForce action: CreateSymlink inputs: - path: /Folder2/Symboliclink.txt target: /Folder/Sample.txt force: true

輸入範例:建立不強制建立連結的符號連結

- name: CreatingSymbolicLinkWithOutForce action: CreateSymlink inputs: - path: Symboliclink.txt target: /Folder/Sample.txt
輸出

無。

DeleteFile

DeleteFile動作模塊刪除指定位置的一個或多個文件。

的輸入path應為檔案名稱中含有萬用字元 (*) 的有效檔案路徑或檔案路徑。在檔案名稱中指定萬用字元時,同一資料夾中符合萬用字元的所有檔案都將被刪除。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行刪除作業的權限。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A

輸入範例:刪除單一檔案 (Linux)

- name: DeletingSingleFileLinux action: DeleteFile inputs: - path: /SampleFolder/MyFolder/Sample.txt

輸入範例:刪除單一檔案 (視窗)

- name: DeletingSingleFileWindows action: DeleteFile inputs: - path: C:\SampleFolder\MyFolder\Sample.txt

輸入示例:刪除以「日誌」(Linux)結尾的文件

- name: DeletingFileEndingWithLogLinux action: DeleteFile inputs: - path: /SampleFolder/MyFolder/*log

輸入示例:刪除以「日誌」結尾的文件(Windows)

- name: DeletingFileEndingWithLogWindows action: DeleteFile inputs: - path: C:\SampleFolder\MyFolder\*log

輸入範例:刪除指定資料夾中的所有檔案 (Linux)

- name: DeletingAllFilesInAFolderLinux action: DeleteFile inputs: - path: /SampleFolder/MyFolder/*

輸入範例:刪除指定資料夾中的所有檔案 (Windows)

- name: DeletingAllFilesInAFolderWindows action: DeleteFile inputs: - path: C:\SampleFolder\MyFolder\*
輸出

無。

DeleteFolder

DeleteFolder動作模組會刪除資料夾。

如果資料夾不是空的,您必須將選force項設定true為移除資料夾及其內容。如果您未將force選項設定為true,且您嘗試刪除的資料夾不是空的,動作模組會傳回錯誤。force選項的預設值為false

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行刪除作業的權限。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 資料夾路徑。 字串 N/A N/A
force 移除資料夾是否為空的資料夾。 Boolean false N/A

輸入示例:使用force選項(Linux)刪除不為空的文件夾

- name: DeletingFolderWithForceOptionLinux action: DeleteFolder inputs: - path: /Sample/MyFolder/Sample/ force: true

輸入範例:使用force選項刪除不為空的資料夾 (Windows)

- name: DeletingFolderWithForceOptionWindows action: DeleteFolder inputs: - path: C:\Sample\MyFolder\Sample\ force: true

輸入範例:刪除資料夾 (Linux)

- name: DeletingFolderWithOutForceLinux action: DeleteFolder inputs: - path: /Sample/MyFolder/Sample/

輸入範例:刪除資料夾 (視窗)

- name: DeletingFolderWithOutForce action: DeleteFolder inputs: - path: C:\Sample\MyFolder\Sample\
輸出

無。

ListFiles

ListFiles動作模組會列出指定資料夾中的檔案。當遞迴選項設定為時true,它會列出子資料夾中的檔案。默認情況下,此模塊不會列出子文件夾中的文件。

若要列出名稱與指定模式相符的所有檔案,請使用fileNamePattern選項來提供模式。fileNamePattern此選項接受萬用字元 (*) 值。提供時,會傳回符合指定檔案名稱格式的所有檔案。fileNamePattern

當發生以下情況時,動作模塊返回一個錯誤:

  • 指定的資料夾在執行階段不存在。

  • 您沒有在指定父資料夾中建立檔案或資料夾的權限。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 資料夾路徑。 字串 N/A N/A
fileNamePattern 要匹配的模式列出所有名稱與模式匹配的文件。 字串 N/A N/A
recursive 遞迴列出資料夾中的檔案。 Boolean false N/A

輸入範例:列出指定資料夾中的檔案 (Linux)

- name: ListingFilesInSampleFolderLinux action: ListFiles inputs: - path: /Sample/MyFolder/Sample

輸入範例:列出指定資料夾中的檔案 (Windows)

- name: ListingFilesInSampleFolderWindows action: ListFiles inputs: - path: C:\Sample\MyFolder\Sample

輸入示例:列出以「日誌」結尾的文件(Linux)

- name: ListingFilesWithEndingWithLogLinux action: ListFiles inputs: - path: /Sample/MyFolder/ fileNamePattern: *log

輸入示例:列出以「日誌」結尾的文件(Windows)

- name: ListingFilesWithEndingWithLogWindows action: ListFiles inputs: - path: C:\Sample\MyFolder\ fileNamePattern: *log

輸入示例:遞歸列出文件

- name: ListingFilesRecursively action: ListFiles inputs: - path: /Sample/MyFolder/ recursive: true
輸出
原始 Description (描述) Type
files 文件列表。 字串

輸出範例

{ "files": "/sample1.txt,/sample2.txt,/sample3.txt" }

MoveFile

MoveFile操作模塊將文件從指定的源移動到指定的目的地。

如果文件已經存在於指定的文件夾中,默認情況下,操作模塊將覆蓋現有文件。您可以將覆寫選項設定為來覆寫此預設行為false。當覆蓋選項設置為false,並且在指定位置已經存在具有指定名稱的文件時,操作模塊將返回一個錯誤。此選項的工作方式與 Linux 中的mv命令相同,默認情況下會覆蓋該命令。

來源檔案名稱可以包含萬用字元 (*)。只有在最後一個檔案路徑分隔符號 (/\) 之後才接受萬用字元。如果來源檔案名稱中包含萬用字元,則所有符合萬用字元的檔案都會複製到目標資料夾。如果您要使用萬用字元移動多個檔案,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束,表示目的地輸入為資料夾。

如果目標檔案名稱與來源檔案名稱不同,您可以使用destination選項指定目標檔案名稱。如果您未指定目標檔案名稱,則會使用來源檔案的名稱來建立目標檔案。最後一個檔案路徑分隔符號 (/\) 之後的任何文字都會被視為檔案名稱。如果您要使用與來源檔案相同的檔案名稱,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有在指定資料夾中建立檔案的權限。

  • 來源檔案在執行階段不存在。

  • 已存在具有指定檔案名稱的資料夾,且overwrite選項設定為false

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
source 來源檔案路徑。 字串 N/A N/A
destination 目標檔案路徑。 字串 N/A N/A
overwrite 設定為 false 時,如果指定位置已存在具有指定名稱的檔案,則不會取代目標檔案。 Boolean true N/A

輸入範例:移動檔案 (Linux)

- name: MovingAFileLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt

輸入範例:移動檔案 (視窗)

- name: MovingAFileWindows action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt

輸入範例:使用來源檔案名稱 (Linux) 移動檔案

- name: MovingFileWithSourceFileNameLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/

輸入範例:使用來源檔案名稱移動檔案 (Windows)

- name: MovingFileWithSourceFileNameWindows action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder

輸入範例:使用萬用字元 (Linux) 移動檔案

- name: MovingFilesWithWildCardLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

輸入範例:使用萬用字元移動檔案 (Windows)

- name: MovingFilesWithWildCardWindows action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder

輸入範例:移動檔案而不覆寫 (Linux)

- name: MovingFilesWithoutOverwriteLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt overwrite: false

輸入範例:移動檔案而不覆寫 (Windows)

- name: MovingFilesWithoutOverwrite action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt overwrite: false
輸出

無。

MoveFolder

MoveFolder動作模塊將文件夾從指定的源移動到指定的目的地。source選項的輸入是要移動的資料夾,而選destination項的輸入是移動來源資料夾內容的資料夾。

如果目標父資料夾或destination選項的輸入在執行階段不存在,則模組的預設行為是在指定的目的地遞迴建立資料夾。

如果目標資料夾中已存在與來源資料夾相同的資料夾,動作模組預設會覆寫現有資料夾。您可以將覆寫選項設定為來覆寫此預設行為false。當覆蓋選項設置為false,並且在指定位置中已經存在具有指定名稱的文件夾時,操作模塊將返回錯誤。

來源資料夾名稱可以包含萬用字元 (*)。只有在最後一個檔案路徑分隔符號 (/\) 之後才接受萬用字元。如果來源資料夾名稱中包含萬用字元,則符合萬用字元的所有資料夾都會複製到目標資料夾。如果要使用萬用字元移動多個資料夾,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束,表示目的地輸入為資料夾。

如果目標資料夾名稱與來源資料夾名稱不同,您可以使用destination選項指定目標資料夾名稱。如果您未指定目標資料夾名稱,則會使用來源資料夾的名稱來建立目標資料夾。最後一個檔案路徑分隔符號 (/\) 之後的任何文字都會被視為資料夾名稱。如果您想要使用與來源資料夾相同的資料夾名稱,則destination選項的輸入必須以檔案路徑分隔符號 (/\) 結束。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有在目標資料夾中建立資料夾的權限。

  • 來源資料夾在執行階段不存在。

  • 已存在具有指定名稱的資料夾,且overwrite選項設定為false

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
source 來源資料夾路徑。 字串 N/A N/A
destination 目標資料夾路徑。 字串 N/A N/A
overwrite 設定為 false 時,如果指定位置中已存在具有指定名稱的資料夾,則不會取代目標資料夾。 Boolean true N/A

輸入範例:移動資料夾 (Linux)

- name: MovingAFolderLinux action: MoveFolder inputs: - source: /Sample/MyFolder/SourceFolder destination: /MyFolder/destinationFolder

輸入範例:移動資料夾 (視窗)

- name: MovingAFolderWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\SourceFolder destination: C:\MyFolder\destinationFolder

輸入範例:使用來源資料夾名稱移動資料夾 (Linux)

- name: MovingFolderWithSourceFolderNameLinux action: MoveFolder inputs: - source: /Sample/MyFolder/SampleFolder destination: /MyFolder/

輸入範例:使用來源資料夾名稱移動資料夾 (Windows)

- name: MovingFolderWithSourceFolderNameWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\

輸入範例:使用萬用字元移動資料夾 (Linux)

- name: MovingFoldersWithWildCardLinux action: MoveFolder inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

輸入範例:使用萬用字元移動資料夾 (Windows)

- name: MovingFoldersWithWildCardWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder\

輸入範例:移動資料夾而不覆寫 (Linux)

- name: MovingFoldersWithoutOverwriteLinux action: MoveFolder inputs: - source: /Sample/MyFolder/SampleFolder destination: /MyFolder/destinationFolder overwrite: false

輸入範例:移動資料夾而不覆寫 (Windows)

- name: MovingFoldersWithoutOverwriteWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\destinationFolder overwrite: false
輸出

無。

ReadFile

ReadFile動作模塊讀取字符串類型的文本文件的內容。該模塊可用於讀取文件的內容,以便通過鏈接或用於將數據讀取到console.log文件的後續步驟中使用。如果指定的路徑是一個符號鏈接,該模塊返回目標文件的內容。此模塊僅支持文本文件。

如果檔案編碼值與預設的 encoding (utf-8) 值不同,您可以使用encoding選項來指定檔案編碼值。默認情況下,utf-16utf-32假定使用小端編碼。

默認情況下,該模塊無法將文件內容打印到console.log文件中。您可以將性質設定為來取代此printFileContent設定true

該模塊只能返回一個文件的內容。它無法剖析檔案,例如 Excel 或 JSON 檔案。

當發生以下情況時,動作模塊返回一個錯誤:

  • 該文件在運行時不存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A
encoding 編碼標準。 字串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LEutf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE、和 utf-32-BE。編碼選項的值不區分大小寫。
printFileContent 將檔案內容列印至console.log檔案。 Boolean false N/A 是。

輸入範例:讀取檔案 (Linux)

- name: ReadingFileLinux action: ReadFile inputs: - path: /home/UserName/SampleFile.txt

輸入範例:讀取檔案 (視窗)

- name: ReadingFileWindows action: ReadFile inputs: - path: C:\Windows\WindowsUpdate.log

輸入範例:讀取檔案並指定編碼標準

- name: ReadingFileWithFileEncoding action: ReadFile inputs: - path: /FolderName/SampleFile.txt encoding: UTF-32

輸入範例:讀取檔案並列印至console.log檔案

- name: ReadingFileToConsole action: ReadFile inputs: - path: /home/UserName/SampleFile.txt printFileContent: true
輸出
欄位 Description (描述) Type
content 檔案內容。 string

輸出範例

{ "content" : "The file content" }

SetFileEncoding

SetFileEncoding作模塊修改現有文件的編碼屬性。該模塊可以將文件編碼從轉換utf-8為指定的編碼標準。默認情況下,utf-16utf-32假定為小端編碼。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行指定修改的權限。

  • 該文件在運行時不存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A
encoding 編碼標準。 字串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LEutf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE、和 utf-32-BE。編碼選項的值不區分大小寫。

輸入範例:設定檔案編碼屬性

- name: SettingFileEncodingProperty action: SetFileEncoding inputs: - path: /home/UserName/SampleFile.txt encoding: UTF-16
輸出

無。

SetFileOwner

SetFileOwner動作模塊修改現有文件的ownergroup所有者屬性。如果指定的檔案是符號連結,則模組會修改來源檔案的owner屬性。此模組在視窗平台上不受支援。

該模塊接受用戶和組名作為輸入。如果未提供群組名稱,則模組會將檔案的群組擁有者指派給使用者所屬的群組。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行指定修改的權限。

  • 指定的使用者或群組名稱在執行階段不存在。

  • 該文件在運行時不存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A 在視窗上不支援。
owner 使用者名稱。 string N/A N/A 在視窗上不支援。
group 使用者群組的名稱。 字串 使用者所屬群組的名稱。 N/A 在視窗上不支援。

輸入示例:設置文件所有者屬性而不指定用戶組的名稱

- name: SettingFileOwnerPropertyNoGroup action: SetFileOwner inputs: - path: /home/UserName/SampleText.txt owner: LinuxUser

輸入示例:通過指定所有者和用戶組來設置文件所有者屬性

- name: SettingFileOwnerProperty action: SetFileOwner inputs: - path: /home/UserName/SampleText.txt owner: LinuxUser group: LinuxUserGroup
輸出

無。

SetFolderOwner

SetFolderOwner動作模塊遞歸修改現有文件夾的ownergroup所有者屬性。依預設,模組可以修改資料夾中所有內容的所有權。您可以設定recursive選項false來覆寫此行為。此模組在視窗平台上不受支援。

該模塊接受用戶和組名作為輸入。如果未提供群組名稱,則模組會將檔案的群組擁有者指派給使用者所屬的群組。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行指定修改的權限。

  • 指定的使用者或群組名稱在執行階段不存在。

  • 資料夾在執行階段不存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 資料夾路徑。 字串 N/A N/A 在視窗上不支援。
owner 使用者名稱。 string N/A N/A 在視窗上不支援。
group 使用者群組的名稱。 字串 使用者所屬群組的名稱。 N/A 在視窗上不支援。
recursive 當設定為時,會取代修改資料夾所有內容之所有權的預設行為false Boolean true N/A 在視窗上不支援。

輸入示例:設置文件夾所有者屬性而不指定用戶組的名稱

- name: SettingFolderPropertyWithOutGroup action: SetFolderOwner inputs: - path: /SampleFolder/ owner: LinuxUser

輸入示例:設置文件夾 owner 屬性而不覆蓋文件夾中所有內容的所有權

- name: SettingFolderPropertyWithOutRecursively action: SetFolderOwner inputs: - path: /SampleFolder/ owner: LinuxUser recursive: false

輸入示例:通過指定用戶組的名稱來設置文件所有權屬性

- name: SettingFolderPropertyWithGroup action: SetFolderOwner inputs: - path: /SampleFolder/ owner: LinuxUser group: LinuxUserGroup
輸出

無。

SetFilePermissions

SetFilePermissions作模塊修改現有文件permissions的。此模組在視窗平台上不受支援。

的輸入permissions必須是字串值。

該操作模塊可以創建一個文件與操作系統的默認 umask 值定義的權限。如果要覆寫預設umask值,則必須設定值。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行指定修改的權限。

  • 該文件在運行時不存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 檔案路徑。 字串 N/A N/A 在視窗上不支援。
permissions 檔案權限。 字串 N/A N/A 在視窗上不支援。

輸入範例:修改檔案權限

- name: ModifyingFilePermissions action: SetFilePermissions inputs: - path: /home/UserName/SampleFile.txt permissions: 766
輸出

無。

SetFolderPermissions

SetFolderPermissions動作模塊遞歸修改現有文件夾及其所有子文件和子文件夾的。permissions默認情況下,該模塊可以修改指定文件夾的所有內容的權限。您可以設定recursive選項false來覆寫此行為。此模組在視窗平台上不受支援。

的輸入permissions必須是字串值。

該操作模塊可以根據操作系統的默認 umask 值修改權限。如果要覆寫預設umask值,則必須設定值。

當發生以下情況時,動作模塊返回一個錯誤:

  • 您沒有執行指定修改的權限。

  • 資料夾在執行階段不存在。

  • 操作模塊在執行操作時遇到錯誤。

輸入
原始 Description (描述) Type 必要 預設值 可接受值 支援所有平台
path 資料夾路徑。 字串 N/A N/A 在視窗上不支援。
permissions 資料夾權限。 字串 N/A N/A 在視窗上不支援。
recursive 當設定為時,會覆寫資料夾所有內容修改權限的預設行為false Boolean true N/A 在視窗上不支援。

輸入範例:設定資料夾權限

- name: SettingFolderPermissions action: SetFolderPermissions inputs: - path: SampleFolder/ permissions: 0777

輸入示例:設置文件夾權限,而不修改文件夾的所有內容的權限

- name: SettingFolderPermissionsNoRecursive action: SetFolderPermissions inputs: - path: /home/UserName/SampleFolder/ permissions: 777 recursive: false
輸出

無。

軟體安裝動作

本節說明執行軟體安裝動作指令和指示的動作模組。

IAM 要求

如果您的安裝下載路徑是 S3 URI,則與執行個體設定檔相關聯的 IAM 角色必須具有執行S3Download動作模組的權限。若要授予所需權限,請將 S3:GetObject IAM 政策附加到與執行個體設定檔相關聯的 IAM 角色,然後指定值區的路徑。例如,arn:aws:s3:::BucketName/*)。

複雜的 MSI 輸入

如果您的輸入字串包含雙引號字元 ("),您必須使用下列其中一種方法,以確保正確解譯這些字元:

  • 您可以在字串外部使用單引號 (') 來包含它,並在字串內使用雙引號 (「),如下列範例所示。

    properties: COMPANYNAME: '"Acme ""Widgets"" and ""Gizmos."""'

    在這種情況下,如果您需要在字符串中使用撇號,則必須將其轉義。這意味著在撇號之前使用另一個單引號(')。

  • 您可以在字符串外部使用雙引號(「)來包含它。你可以轉義你的字符串內的任何雙引號,使用反斜杠字符(\),如下面的例子。

    properties: COMPANYNAME: "\"Acme \"\"Widgets\"\" and \"\"Gizmos.\"\"\""

這兩種方法都會COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""將值傳遞給命msiexec令。

軟體安裝動作模組

安裝微星

InstallMSI操作模塊使用 MSI 文件安裝 Windows 應用程序。您可以使用本機路徑、S3 物件 URI 或網頁 URL 來指定 MSI 檔案。重新開機選項可設定系統的重新開機行為。

AWS TOE 根據動作模組的輸入參數產生msiexec指令。path(MSI 檔案位置) 和 logFile (記錄檔位置) 輸入參數的值必須以引號 (「) 括住。

下列 MSI 結束代碼視為成功:

  • 0 (成功案例)

  • 1614 (已解除安裝的錯誤產品)

  • 1641 (已啟動重新開機)

  • 3010 (需要重新開機)

輸入
原始 Description (描述) Type 必要 預設值 可接受值
path

使用下列其中一項指定 MSI 檔案位置:

  • 本機檔案路徑。路徑可以是絕對路徑或相對路徑

  • 有效的 S3 物件 URI。

  • 一個遵循 RFC 3986 標準的有效網頁網址 (建議使用 HTTPS)。

允許鏈結運算式。

字串 N/A N/A
reboot

設定成功執行動作模組後的系統重新開機行為。

設定:
  • Forcemsiexec 命令成功執行後,啟動系統重新開機。

  • Allow— 如果msiexec命令傳回指出需要重新開機的結束代碼,則啟動系統重新開機。

  • Skip— 將資訊訊息記錄至console.log檔案,指出已略過重新開機。此選項可防止重新啟動,即使該msiexec命令返回指示需要重新啟動的退出代碼。

字串 Allow Allow, Force, Skip
logOptions

指定用於 MSI 安裝記錄的選項。指定的旗標會傳遞至 MSI 安裝程式,以及啟用記錄的/L命令列參數。如果未指定任何旗標, AWS TOE 會使用預設值。

如需 MSI 記錄檔選項的詳細資訊,請參閱 Microsoft 安裝程式產品文件中的命令列選項

字串 *VX i,w,e,a,r,u,c,m,o,p,v,x,+,!,*
logFile

記錄檔位置的絕對或相對路徑。如果記錄檔路徑不存在,則會建立該路徑。如果未提供記錄檔路徑,則 AWS TOE 不會儲存 MSI 安裝記錄。

字串 N/A N/A
properties

MSI 記錄內容鍵值對,例如:TARGETDIR: "C:\target\location"

 

注意:不允許修改下列屬性:

  • REBOOT="ReallySupress"

  • REINSTALLMODE="ecmus"

  • REINSTALL="ALL"

映射 [字符串] 字符串 N/A N/A
ignoreAuthenticodeSignatureErrors

此旗標可忽略 path 中指定之安裝程式的驗證碼簽章驗證錯誤。該Get-AuthenticodeSignature命令用於驗證安裝程序。

設定:
  • true— 會忽略驗證錯誤並執行安裝程式。

  • false— 不會忽略驗證錯誤。只有在驗證成功時,安裝程式才會執行。這是預設行為。

Boolean false true, false
allowUnsignedInstaller

允許執行路徑中指定的未簽署安裝程式的旗標。該Get-AuthenticodeSignature命令用於驗證安裝程序。

設定:
  • true— 忽略命Get-AuthenticodeSignature令傳回的NotSigned狀態並執行安裝程式。

  • false— 需要簽署安裝程式。未簽署的安裝程式將不會執行。這是預設行為。

Boolean false true, false
範例

下列範例會根據您的安裝路徑,顯示元件文件輸入區段的變化。

輸入範例:本機文件路徑安裝

- name: local-path-install steps: - name: LocalPathInstaller action: InstallMSI inputs: path: C:\sample.msi logFile: C:\msilogs\local-path-install.log logOptions: '*VX' reboot: Allow properties: COMPANYNAME: '"Amazon Web Services"' ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: true

輸入範例:Amazon S3 路徑安裝

- name: s3-path-install steps: - name: S3PathInstaller action: InstallMSI inputs: path: s3://<bucket-name>/sample.msi logFile: s3-path-install.log reboot: Force ignoreAuthenticodeSignatureErrors: false allowUnsignedInstaller: true

輸入範例:Web 路徑安裝

- name: web-path-install steps: - name: WebPathInstaller action: InstallMSI inputs: path: https://<some-path>/sample.msi logFile: web-path-install.log reboot: Skip ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: false
輸出

以下是動InstallMSI作模組輸出的範例。

{ "logFile": "web-path-install.log", "msiExitCode": 0, "stdout": "" }

解除安裝 MSI

UninstallMSI動作模組可讓您使用 MSI 檔案移除 Windows 應用程式。您可以使用本機檔案路徑、S3 物件 URI 或網頁 URL 來指定 MSI 檔案位置。重新開機選項可設定系統的重新開機行為。

AWS TOE 根據動作模組的輸入參數產生msiexec指令。產生msiexec指令時,MSI 檔案位置 (pathlogFile) 和記錄檔位置 () 會明確用雙引號 (「) 括住。

下列 MSI 結束代碼視為成功:

  • 0 (成功案例)

  • 1605 (錯誤 _ 未知的產品)

  • 1614 (已解除安裝的錯誤產品)

  • 1641 (已啟動重新開機)

  • 3010 (需要重新開機)

輸入
原始 Description (描述) Type 必要 預設值 可接受值
path

使用下列其中一項指定 MSI 檔案位置:

  • 本機檔案路徑。路徑可以是絕對路徑或相對路徑。

  • 有效的 S3 物件 URI。

  • 一個遵循 RFC 3986 標準的有效網頁網址 (建議使用 HTTPS)。

允許鏈結運算式。

字串 N/A N/A
reboot

設定成功執行動作模組後的系統重新開機行為。

設定:
  • Forcemsiexec 命令成功執行後,啟動系統重新開機。

  • Allow— 如果msiexec命令傳回指出需要重新開機的結束代碼,則啟動系統重新開機。

  • Skip— 將資訊訊息記錄至console.log檔案,指出已略過重新開機。此選項可防止重新啟動,即使該msiexec命令返回指示需要重新啟動的退出代碼。

字串 Allow Allow, Force, Skip
logOptions

指定用於 MSI 安裝記錄的選項。指定的旗標會傳遞至 MSI 安裝程式,以及啟用記錄的/L命令列參數。如果未指定任何旗標, AWS TOE 會使用預設值。

如需 MSI 記錄檔選項的詳細資訊,請參閱 Microsoft 安裝程式產品文件中的命令列選項

字串 *VX i,w,e,a,r,u,c,m,o,p,v,x,+,!,*
logFile

記錄檔位置的絕對或相對路徑。如果記錄檔路徑不存在,則會建立該路徑。如果未提供記錄檔路徑,則 AWS TOE 不會儲存 MSI 安裝記錄。

字串 N/A N/A
properties

MSI 記錄內容鍵值對,例如:TARGETDIR: "C:\target\location"

 

注意:不允許修改下列屬性:

  • REBOOT="ReallySupress"

  • REINSTALLMODE="ecmus"

  • REINSTALL="ALL"

映射 [字符串] 字符串 N/A N/A
ignoreAuthenticodeSignatureErrors

此旗標可忽略 path 中指定之安裝程式的驗證碼簽章驗證錯誤。該Get-AuthenticodeSignature命令用於驗證安裝程序。

設定:
  • true— 會忽略驗證錯誤並執行安裝程式。

  • false— 不會忽略驗證錯誤。只有在驗證成功時,安裝程式才會執行。這是預設行為。

Boolean false true, false
allowUnsignedInstaller

允許執行路徑中指定的未簽署安裝程式的旗標。該Get-AuthenticodeSignature命令用於驗證安裝程序。

設定:
  • true— 忽略命Get-AuthenticodeSignature令傳回的NotSigned狀態並執行安裝程式。

  • false— 需要簽署安裝程式。未簽署的安裝程式將不會執行。這是預設行為。

Boolean false true, false
範例

下列範例會根據您的安裝路徑,顯示元件文件輸入區段的變化。

輸入範例:移除本機文件路徑安裝

- name: local-path-uninstall steps: - name: LocalPathUninstaller action: UninstallMSI inputs: path: C:\sample.msi logFile: C:\msilogs\local-path-uninstall.log logOptions: '*VX' reboot: Allow properties: COMPANYNAME: '"Amazon Web Services"' ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: true

輸入範例:移除 Amazon S3 路徑安裝

- name: s3-path-uninstall steps: - name: S3PathUninstaller action: UninstallMSI inputs: path: s3://<bucket-name>/sample.msi logFile: s3-path-uninstall.log reboot: Force ignoreAuthenticodeSignatureErrors: false allowUnsignedInstaller: true

輸入示例:刪除 Web 路徑安裝

- name: web-path-uninstall steps: - name: WebPathUninstaller action: UninstallMSI inputs: path: https://<some-path>/sample.msi logFile: web-path-uninstall.log reboot: Skip ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: false
輸出

以下是動UninstallMSI作模組輸出的範例。

{ "logFile": "web-path-uninstall.log", "msiExitCode": 0, "stdout": "" }

系統動作模組

下節說明執行檔案系統動作指令和指示的動作模組。

重新開機

新啟動動作模組會重新啟動執行個體。它有一個可配置的選項來延遲重新啟動的開始。默認情況下delaySeconds,設置為0,這意味著沒有延遲。重新啟動動作模組不支援步驟逾時,因為執行個體重新啟動時不適用。

如果應用程式是由系統管理員代理程式呼叫,它會將結束代碼 (3010適用於 Windows、194 Linux) 交給系統管理員代理程式。系統管理員代理程式會依照從指令碼重新啟動受管理執行個體中所述來處理系統

如果在主機上呼叫應用程式作為獨立處理作業,它會儲存目前的執行狀態、設定重新開機後自動執行觸發程式,以便在重新開機後重新執行應用程式,然後重新啟動系統。

重新啟動後自動運行觸發:

  • 窗戶。 AWS TOE 創建一個 Windows 任務計劃程序條目,該條目具有自動運行的觸發器 SystemStartup

  • Linux. AWS TOE 在 crontab 中添加一個作業,該作業在系統重新啟動後自動運行。

@reboot /download/path/awstoe run --document s3://bucket/key/doc.yaml

應用程式啟動時會清除此觸發程序。

重試

依預設,重試次數上限是設定為「Systems ManagerCommandRetryLimit」。如果重新啟動次數超過重試限制,則自動化會失敗。您可以編輯系統管理員代理程式設定檔 (Mds.CommandRetryLimit) 來變更限制。請參閱系統管理員代理程式開源中的執行階段組態

若要使用「重新開機」動作模組,對於包含重新開機的步驟 exitcode (例如,3010),您必須執行應用程式二進位檔為sudo user

輸入
原始 Description (描述) Type 必要 預設
delaySeconds 在啟動重新開機之前延遲特定的時間。 Integer

0

輸入範例:重新啟動步驟

- name: RebootStep action: Reboot onFailure: Abort maxAttempts: 2 inputs: delaySeconds: 60

輸出

無。

重新啟動模組完成時,Image Builder 會繼續執行組建中的下一個步驟。

SetRegistry

SetRegistry操作模塊接受輸入列表,並允許您設置指定註冊表項的值。如果登錄機碼不存在,則會在定義的路徑中建立該機碼。此功能僅適用於視窗。

輸入
原始 Description (描述) Type 必要
path 登錄機碼的路徑。 字串
name 登錄機碼的名稱。 字串
value 登錄機碼的值。 字串/數字/陣列
type 登錄機碼的值類型。 字串
支援的路徑前置字元
  • HKEY_CLASSES_ROOT / HKCR:

  • HKEY_USERS / HKU:

  • HKEY_LOCAL_MACHINE / HKLM:

  • HKEY_CURRENT_CONFIG / HKCC:

  • HKEY_CURRENT_USER / HKCU:

支援的 類型
  • BINARY

  • DWORD

  • QWORD

  • SZ

  • EXPAND_SZ

  • MULTI_SZ

輸入範例:設定登錄機碼值

- name: SetRegistryKeyValues action: SetRegistry maxAttempts: 3 inputs: - path: HKLM:\SOFTWARE\MySoftWare name: MyName value: FirstVersionSoftware type: SZ - path: HKEY_CURRENT_USER\Software\Test name: Version value: 1.1 type: DWORD

輸出

無。

更新

更新操作模塊添加了對安裝視窗和 Linux 更新的支持。它默認安裝所有可用的更新。或者,您可以為要安裝的動作模組配置一個或多個特定更新的清單。您也可以指定要從安裝中排除的更新。

如果同時提供「包含」和「排除」清單,則產生的更新清單只能包含未列在「排除」清單中的「包含」清單中列出的更新清單。

注意

更新操作系統不支持 Amazon 2023(AL2023)。我們建議您將基礎 AMI 更新為每個發行版本隨附的新版本。如需其他替代方案,請參閱 Amazon Linux 2023 使用者指南中的控制從主要和次要版本接收到的更新

  • 窗戶。更新會從目標電腦上設定的更新來源安裝。

  • Linux. 應用程序檢查 Linux 平台中支持的軟件包管理器,並使用yumapt-get軟件包管理器。如果兩者都不受支援,則會傳回錯誤。您應該擁有執行 UpdateOS 動作模組的sudo權限。如果您沒有sudo權限,error.Input則返回。

輸入
原始 Description (描述) Type 必要
include

對於視窗,您可以指定下列項目:

  • 要包含在可能安裝的更新清單中的一或多個 Microsoft 知識庫 (KB) 文件識別碼。有效格式為 KB12345671234567

  • 使用萬用字元值 (*) 的更新名稱。有效格式為 Security**Security*

對於 Linux,您可以指定一或多個要包含在安裝更新清單中的套件。

字串清單
exclude

對於視窗,您可以指定下列項目:

  • 要包含在要從安裝之外排除的更新清單中的一或多個 Microsoft 知識庫 (KB) 文件識別碼。有效格式為 KB12345671234567

  • 使用萬用字元 (*) 值的更新名稱。有效格式為:Security**Security*

對於 Linux,您可以指定一或多個要從安裝更新清單中排除的套件。

字串清單

輸入示例:添加對安裝 Linux 更新的支持

- name: UpdateMyLinux action: UpdateOS onFailure: Abort maxAttempts: 3 inputs: exclude: - ec2-hibinit-agent

輸入示例:添加對安裝 Windows 更新的支持

- name: UpdateWindowsOperatingSystem action: UpdateOS onFailure: Abort maxAttempts: 3 inputs: include: - KB1234567 - '*Security*'

輸出

無。