ワークフロードキュメントでは動的変数を使用します - EC2 イメージビルダー

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ワークフロードキュメントでは動的変数を使用します

ワークフロードキュメントで動的変数を使用して、イメージ作成プロセスのランタイム時に変化する値を表すことができます。動的変数の文字列補間を使用すると、JSON 文字列などの構造化コンテンツ内に JSONPath 式を埋め込むことができます。これは、複雑なペイロード内のランタイム値を ExecuteStateMachineや などのステップアクションに渡す必要がある場合に特に便利ですWaitForAction

動的変数に文字列補間を使用するには、文字列コンテンツ"{{...}}"内の二重中括弧で JSONPath 式をラップします。二重中括弧でラップされた JSONPath 式のみが変数として処理されます。二重中括弧でラップされていない JSONPath 式は、リテラル文字列コンテンツとして扱われます。

JSONPath 動的ワークフロー変数構文

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

動的変数値は、ターゲット変数を一意に識別する構造ノードを備えた JSONPath セレクターとして表されます。ルート ($) の後の最初のノードは、stepOutputs または Image Builder システム変数の場合は、imageBuilder などのワークフロードキュメント構造を表します。以下のリストには、サポートされている JSONPath ワークフロードキュメント構造ノードが含まれています。

ドキュメント構造ノード
  • parameters – ワークフローパラメータ

  • stepOutputs – 同じワークフロードキュメント内のステップからの出力

  • workflowOutputs – すでに実行されているワークフロードキュメントからの出力

  • imagebuilder – Image Builder システム変数

parameters および stepOutputs ドキュメント構造ノードには、ステップ名のオプションノードが含まれます。これにより、すべてのステップで変数名が一意になるようになります。

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 }} - 現在のビルドタイムスタンプを解決します。使用できる Image Builder システム変数のリストImage Builder システム変数を使用するについては、「」を参照してください。

  • {{ $.stepOutputs.LaunchStep.instanceType }} - LaunchStep で使用されるインスタンスタイプを解決します

のようなリテラル文字列"region": "us-east-1"は変更されません。

注記

文字列補間は、YAML パイプ (|) 演算子を使用した複数行文字列など、ワークフロードキュメント内の任意の文字列コンテンツで機能します。中括弧要件は、JSONPath 変数とリテラルテキストコンテンツを明確に区別するためのエスケープメカニズムとして機能します。

Image Builder システム変数を使用する

Image Builder には、ワークフロードキュメントで使用できる以下のシステム変数があります。

変数名

説明

タイプ

値の例

cloudWatchLogGroup

出力ログの CloudWatch Logs グループの名前。

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

String

/aws/imagebuilder/sampleImageRecipe

cloudWatchLogStream

出力ログの CloudWatch Logs ストリームの名前。

String

1.0.0/1

collectImageMetadata

インスタンスメタデータを収集するかどうかを Image Builder に指示する設定。

ブール値

true | false

collectImageScanFindings

Image Builder が画像スキャン検出結果を収集できるようにする設定の現在の値。

ブール値

true | false

imageBuildNumber

イメージのビルドバージョン番号。

整数

1

imageId

ベースイメージの AMI ID。

String

ami-1234567890abcdef1

imageName

イメージの名前。

String

sampleImage

imageType

画像出力タイプ。

String

AMI | Docker

imageVersionNumber

イメージのバージョン番号。

String

1.0.0

instanceProfileName

Image Builder がビルドインスタンスとテストインスタンスを起動するために使用するインスタンスプロファイルロールの名前。

String

SampleImageBuilderInstanceProfileRole

platform

ビルドされたイメージのオペレーティングシステムプラットフォーム。

String

Linux | Windows | MacOS

s3Logs

Image Builder が書き込む S3 ログの設定を含む JSON オブジェクト。

JSON オブジェクト

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

securityGroups

ビルドインスタンスとテストインスタンスに適用されるセキュリティグループ ID。

List [String]

[sg-1234567890abcdef1, sg-11112222333344445]

sourceImageARN

ワークフローがビルドステージとテストステージに使用する Image Builder イメージリソースの Amazon リソースネーム (ARN)。

String

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

subnetId

ビルドインスタンスとテストインスタンスを起動するサブネットの ID。

String

subnet-1234567890abcdef1

terminateInstanceOnFailure

障害発生時にインスタンスを終了するか、トラブルシューティングのために保持するよう Image Builder に指示する設定の現在の値。

ブール値

true | false

workflowPhase

ワークフロー実行のために実行中の現在のステージ。

String

Build | Test

workingDirectory

作業ディレクトリへのパス。

String

/tmp