在工作流程文件中使用動態變數 - EC2 Image Builder

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

在工作流程文件中使用動態變數

您可以使用工作流程文件中的動態變數來表示影像建立程序在執行時間變化的值。動態變數的字串插補可讓您在 JSON 字串等結構化內容中嵌入 JSONPath 表達式。當您需要在複雜的承載中將執行時間值傳遞至 ExecuteStateMachine或 等步驟動作時,此功能特別有用WaitForAction

若要對動態變數使用字串插補,請在字串內容"{{...}}"中以雙大括號包裝 JSONPath 運算式。只有以雙大括號包裝的 JSONPath 表達式才會處理為變數。任何未包裝在雙大括號中的 JSONPath 表達式都會視為常值字串內容。

JSONPath 動態工作流程變數語法

$.<document structure>.[<step name>.]<variable name>

動態變數值以 JSONPath 選擇器表示,具有可唯一識別目標變數的結構節點。根目錄 ($) 之後的第一個節點是指工作流程文件結構,例如 stepOutputs,若為 Image Builder 系統變數,則為 imageBuilder。下列清單包含支援的 JSONPath 工作流程文件結構節點。

文件結構節點
  • 參數 - 工作流程參數

  • stepOutputs - 來自相同工作流程文件中步驟的輸出

  • workflowOutputs - 從已執行的工作流程文件輸出

  • imagebuilder - Image Builder 系統變數

parametersstepOutputs 文件結構節點包含步驟名稱的選用節點。這有助於確保所有步驟的唯一變數名稱。

JSONPath 中的最後一個節點是目標變數的名稱,例如 instanceId

每個步驟都可以使用這些 JSONPath 動態變數來參考任何先前步驟動作的輸出。這也稱為鏈結或參考。若要參考先前步驟動作的輸出,您可以使用下列動態變數。

$.stepOutputs.step-name.output-name
重要

當輸入參數參考動態變數時,鏈結指標 (.$) 必須連接到參數名稱的結尾。

範例 1:輸入參數鏈結指標

下列範例顯示輸入參數,其使用字串插補在執行時間解析參數值中的動態變數。

- name: ApplyTestComponents action: ExecuteComponents onFailure: Abort inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

範例 2:動態變數中的字串插補

下列範例示範動態變數如何使用字串插補來判斷執行時間的值。

- name: ValidateImageConfiguration action: ExecuteStateMachine inputs: stateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:ImageValidation input: | { "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}", "region": "us-east-1", "buildDate": "{{ $.imagebuilder.dateTime }}", "instanceType": "{{ $.stepOutputs.LaunchStep.instanceType }}" }

在此範例中,以雙大括號包裝的 JSONPath 表達式會在執行時間解析:

  • {{ $.stepOutputs.CreateImageFromInstance.imageId }} - 從 CreateImageFromInstance 步驟解析為實際影像 ID

  • {{ $.imagebuilder.dateTime }} - 解決目前建置時間戳記的問題。使用映像建置器系統變數 如需您可以使用的映像建置器系統變數清單,請參閱 。

  • {{ $.stepOutputs.LaunchStep.instanceType }} - 解決 LaunchStep 中使用的執行個體類型

像 的文字字串"region": "us-east-1"保持不變。

注意

字串插補適用於工作流程文件中的任何字串內容,包括使用 YAML 管道 (|) 運算子的多行字串。大括弧需求可做為逸出機制,以清楚區分 JSONPath 變數和文字內容。

使用映像建置器系統變數

Image Builder 提供下列系統變數,您可以在工作流程文件中使用:

變數名稱

Description (描述)

類型

範例值

cloudWatchLogGroup

輸出日誌的 CloudWatch Logs 群組名稱。

格式:/aws/imagebuilder/<recipe-name>

String

/aws/imagebuilder/sampleImageRecipe

cloudWatchLogStream

輸出日誌的 CloudWatch Logs 串流名稱。

String

1.0.0/1

collectImageMetadata

指示 Image Builder 是否收集執行個體中繼資料的設定。

Boolean

true | false

collectImageScanFindings

可讓映像建置器收集映像掃描問題清單的設定的目前值。

Boolean

true | false

imageBuildNumber

映像的建置版本編號。

Integer

1

imageId

基礎映像的 AMI ID。

String

ami-1234567890abcdef1

imageName

影像的名稱。

String

sampleImage

imageType

影像輸出類型。

String

AMI | Docker

imageVersionNumber

映像的版本編號。

String

1.0.0

instanceProfileName

Image Builder 用來啟動建置和測試執行個體的執行個體描述檔角色名稱。

String

SampleImageBuilderInstanceProfileRole

平台

所建置映像的作業系統平台。

String

Linux | Windows | MacOS

s3Logs

包含映像建置器寫入之 S3 日誌組態的 JSON 物件。

JSON 物件

{'s3Logs':{'s3BucketName': 'sample-bucket', 's3KeyPrefix': 'ib-logs'}}

securityGroups

適用於建置和測試執行個體的安全群組 IDs。

清單 【字串】

【sg-1234567890abcdef1、sg-11112222333344445】

sourceImageARN

工作流程用於建置和測試階段之映像建置器映像資源的 Amazon Resource Name (ARN)。

String

arn:aws:imagebuilder:us-east-1111122223333:image/sampleImage/1.0.0/1

subnetId

要啟動建置和測試執行個體的子網路 ID。

String

subnet-1234567890abcdef1

terminateInstanceOnFailure

指示 Image Builder 在故障時終止執行個體或保留執行個體以進行故障診斷的設定的目前值。

Boolean

true | false

workflowPhase

正在執行工作流程的目前階段。

String

Build | Test

workingDirectory

工作目錄的路徑。

String

/tmp