建立YAML工作流程文件 - EC2 映像建置器

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

建立YAML工作流程文件

YAML 格式定義文件會設定映像建置程序建置和測試階段的輸入、輸出和工作流程步驟。您可以從包含標準化步驟的範本開始,也可以從頭開始定義自己的工作流程。無論您使用範本還是從頭開始,都可以自訂工作流程以符合您的需求。

YAML 工作流程文件的結構

Image Builder 用來執行映像建置和測試動作的YAML工作流程文件結構如下。

工作流程文件識別

唯一識別工作流程。本節可包含下列屬性。

欄位

Description (描述)

Type

必要

name

工作流程文件的名稱。

字串

description

文件描述。

字串

schemaVersion

文件結構描述版本,目前為 1.0。

字串

範例

--- name: sample-test-image description: Workflow for a sample image, with extra configuration options exposed through workflow parameters. schemaVersion: 1.0

工作流程文件輸入參數

工作流程文件的此部分會定義呼叫者可指定的輸入參數。如果您沒有任何參數,則可以將此區段保留出來。如果您確實指定參數,則每個參數都可以包含下列屬性。

欄位

Description (描述)

Type

必要

限制

name

參數名稱。

字串

description

參數描述。

字串

預設

如果未提供值,則參數的預設值。如果您未在參數定義中包含預設值,則需要在執行時間輸入參數值。

符合參數資料類型。

type

參數的資料類型。如果您未在參數定義中包含資料類型,則參數類型會預設為執行時間所需的字串值。

字串

參數的資料類型必須是下列其中一項:

  • string

  • integer

  • boolean

  • stringList

範例

在工作流程文件中指定 參數。

parameters: - name: waitForActionAtEnd type: boolean default: true description: "Wait for an external action at the end of the workflow"

使用工作流程文件中的參數值。

$.parameters.waitForActionAtEnd

工作流程文件步驟

為工作流程指定最多 15 個步驟動作。步驟會以工作流程文件中定義的順序執行。發生故障時,復原會以相反順序執行,從失敗的步驟開始,然後反向執行先前的步驟。

每個步驟都可以參考任何先前步驟動作的輸出。這稱為鏈結,或參考 。若要參考先前步驟動作的輸出,您可以使用JSONPath選取器。例如:

$.stepOutputs.step-name.output-name

如需詳細資訊,請參閱在工作流程文件中使用動態變數

注意

即使步驟本身沒有輸出屬性,步驟動作的任何輸出都會包含在 stepOutput 中。

每個步驟都可以包含下列屬性。

欄位

Description (描述)

Type

必要

預設值

限制

動作

此步驟執行的工作流程動作。

字串

必須是 Image Builder 工作流程文件的支援步驟動作。

if,後面接著一組修改if運算子的條件陳述式。

條件式陳述式會將控制決策點的流程新增至工作流程步驟的內文。

口述

Image Builder 支援下列條件式陳述式作為if運算子的修改器:

  • 分支條件和修飾條件:ifandornot。分支條件會自行在行上指定。

  • 比較運算子:booleanEqualsnumberEqualsnumberGreaterThannumberGreaterThanEqualsnumberLessThannumberLessThanEqualsstringEquals

description

步驟描述。

字串

不允許空白字串。如果包含,長度必須為 1-1024 個字元。

inputs

包含步驟動作需要執行的參數。您可以將索引鍵值指定為靜態值,或使用解析為正確資料類型的JSONPath變數。

口述

name

步驟的名稱。此名稱在工作流程文件中必須是唯一的。

字串

長度必須介於 3-128 個字元之間。

可以包含英數字元 和 _。沒有空格。

onFailure

設定步驟失敗時要採取的動作,如下所示。

Behavior (行為)
  • Abort – 未通過步驟、未通過工作流程,且在失敗的步驟後不會執行任何剩餘的步驟。如果啟用復原,復原會從失敗的步驟開始,並持續到允許復原的所有步驟為止。

  • Continue – 未通過步驟,但在失敗的步驟之後繼續執行剩餘的步驟。在此情況下,不會復原。

字串

Abort

Abort | Continue

rollbackEnabled

設定在發生失敗時是否復原該步驟。您可以使用靜態布林值或解析為布林值的動態JSONPath變數。

Boolean

true

true | false

| 或解析為 true 或 false 的JSONPath變數。

timeoutSeconds

如果重試適用,則在失敗和重試之前執行步驟的最長時間,以秒為單位。

Integer

視步驟動作定義的預設而定,如適用。

介於 1-86400 秒之間 (最多 24 小時)

範例

steps: - name: LaunchTestInstance action: LaunchInstance onFailure: Abort inputs: waitFor: "ssmAgent" - name: ApplyTestComponents action: ExecuteComponents onFailure: Abort inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" - name: TerminateTestInstance action: TerminateInstance onFailure: Continue inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" - name: WaitForActionAtEnd action: WaitForAction if: booleanEquals: true value: "$.parameters.waitForActionAtEnd"

工作流程文件輸出

定義工作流程的輸出。每個輸出都是一個索引鍵值對,可指定輸出的名稱和值。您可以使用輸出,在執行期匯出後續工作流程可以使用的資料。此區段為選用。

您定義的每個輸出都包含下列屬性。

欄位

Description (描述)

Type

必要

name

輸出的名稱。名稱在管道中包含的工作流程中必須是唯一的。

字串

value

輸出的值。字串的值可以是正負值變數,例如來自步驟動作的輸出檔案。如需詳細資訊,請參閱在工作流程文件中使用動態變數

字串

範例

為工作流程文件建立輸出映像 ID,其中包含步驟輸出createProdImage

outputs: - name: 'outputImageId' value: '$.stepOutputs.createProdImage.imageId'

請參閱下一個工作流程中的工作流程輸出。

$.workflowOutputs.outputImageId