워크플로 문서에 동적 변수 사용 - 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 }} - 현재 빌드 타임스탬프로 해결됩니다. 사용할 수 있는 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>

문자열

/aws/imagebuilder/sampleImageRecipe

cloudWatchLogStream

출력 로그에서 CloudWatch Logs 스트림의 이름입니다.

문자열

1.0.0/1

collectImageMetadata

인스턴스 메타데이터를 수집할지 여부를 Image Builder에 지시하는 설정입니다.

불린(Boolean)

true | false

collectImageScanFindings

Image Builder가 이미지 스캔 결과를 수집할 수 있도록 지원하는 설정의 현재 값입니다.

불린(Boolean)

true | false

imageBuildNumber

이미지의 빌드 버전 번호입니다.

Integer

1

imageId

기본 이미지의 AMI id입니다.

문자열

ami-1234567890abcdef1

imageName

이미지의 이름입니다.

문자열

sampleImage

imageType

이미지 출력 유형입니다.

문자열

AMI | Docker

imageVersionNumber

이미지의 버전 번호입니다.

문자열

1.0.0

instanceProfileName

Image Builder가 빌드 및 테스트 인스턴스를 시작하는 데 사용하는 인스턴스 프로파일 역할의 이름입니다.

문자열

SampleImageBuilderInstanceProfileRole

platform

빌드된 이미지의 운영 체제 플랫폼입니다.

문자열

Linux | Windows | MacOS

s3Logs

Image Builder가 작성하는 S3 로그의 구성을 포함하는 JSON 객체입니다.

JSON 객체

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

securityGroups

빌드 및 테스트 인스턴스에 적용되는 보안 그룹 ID입니다.

목록[문자열]

[sg-1234567890abcdef1, sg-11112222333344445]

sourceImageARN

워크플로가 빌드 및 테스트 단계에 사용하는 Image Builder 이미지 리소스의 Amazon 리소스 이름(ARN)입니다.

문자열

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

subnetId

빌드 및 테스트 인스턴스를 시작할 서부넷의 ID입니다.

문자열

subnet-1234567890abcdef1

terminateInstanceOnFailure

실패 시 Image Builder에서 인스턴스를 종료하거나 문제 해결을 위해 인스턴스를 유지하도록 지시하는 설정의 현재 값입니다.

불린(Boolean)

true | false

workflowPhase

워크플로 실행을 위해 실행 중인 현재 단계입니다.

문자열

Build | Test

workingDirectory

작업 디렉터리에 대한 경로입니다.

문자열

/tmp