

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 워크플로 문서에 동적 변수 사용
<a name="wfdoc-dynamic-vars"></a>

워크플로 문서에서 동적 변수를 사용하여 이미지 생성 프로세스의 런타임에 변하는 값을 표현할 수 있습니다. 동적 변수의 문자열 보간을 사용하면 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 시스템 변수

`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 시스템 변수 사용](#wfdoc-ib-vars) 섹션을 참조하세요.
+ `{{ $.stepOutputs.LaunchStep.instanceType }}` - LaunchStep에 사용된 인스턴스 유형으로 해결합니다.

와 같은 리터럴 문자열은 `"region": "us-east-1"` 변경되지 않습니다.

**참고**  
문자열 보간은 YAML 파이프(`|`) 연산자를 사용하는 여러 줄 문자열을 포함하여 워크플로 문서의 모든 문자열 콘텐츠와 함께 작동합니다. 중괄호 요구 사항은 JSONPath 변수와 리터럴 텍스트 콘텐츠를 명확하게 구분하는 이스케이프 메커니즘 역할을 합니다.

## Image Builder 시스템 변수 사용
<a name="wfdoc-ib-vars"></a>

Image Builder는 워크플로 문서에서 사용할 수 있는 다음과 같은 시스템 변수를 제공합니다.


|  변수 이름  |  설명  |  형식  |  예시 값  | 
| --- | --- | --- | --- | 
| cloudWatchLogGroup | 출력 로그에서 CloudWatch Logs 그룹의 이름입니다.<br />형식: `/aws/imagebuilder/{{<recipe-name>}}` | 문자열 | `/aws/imagebuilder/{{sampleImageRecipe}}` | 
| cloudWatchLogStream | 출력 로그에서 CloudWatch Logs 스트림의 이름입니다. | 문자열 | {{1.0.0/1}} | 
| collectImageMetadata | 인스턴스 메타데이터를 수집할지 여부를 Image Builder에 지시하는 설정입니다. | 부울 | `true` \| `false` | 
| collectImageScanFindings | Image Builder가 이미지 스캔 결과를 수집할 수 있도록 지원하는 설정의 현재 값입니다. | 부울 | `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에서 인스턴스를 종료하거나 문제 해결을 위해 인스턴스를 유지하도록 지시하는 설정의 현재 값입니다. | 부울 | `true` \| `false` | 
| workflowPhase | 워크플로 실행을 위해 실행 중인 현재 단계입니다. | 문자열 | `Build` \| `Test` | 
| workingDirectory | 작업 디렉터리에 대한 경로입니다. | 문자열 | `/tmp` | 