

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

# Image Builder에서 사용자 지정 구성 요소에 대한 YAML 구성 요소 문서 생성
<a name="create-component-yaml"></a>

구성 요소를 빌드하려면, YAML 또는 JSON 애플리케이션 구성 요소 문서를 제공하십시오. 문서에는 이미지에 대한 사용자 지정을 제공하기 위해 정의한 단계에서 실행되는 코드가 포함되어 있습니다.

이 섹션의 일부 예제에서는 구성 요소 관리 애플리케이션에서 `UpdateOS` 작업 모듈을 호출하는 빌드 AWSTOE 구성 요소를 생성합니다. 이 모듈은 운영 체제를 업데이트합니다. `UpdateOS` 작업 모듈에 대한 자세한 내용은 [UpdateOS](toe-action-modules.md#action-modules-updateos) 섹션을 참조하십시오.

macOS 운영 체제 예제에서는 `ExecuteBash` 작업 모듈을 사용하여 `wget` 유틸리티를 설치하고 확인합니다. `UpdateOS` 작업 모듈은 macOS를 지원하지 않습니다. `ExecuteBash` 작업 모듈에 대한 자세한 내용은 [ExecuteBash](toe-action-modules.md#action-modules-executebash) 섹션을 참조하십시오. AWSTOE 애플리케이션 구성 요소 문서의 단계 및 구문에 대한 자세한 내용은 [AWSTOE에서 문서 사용](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-use-documents.html)을 참조하십시오.

**참고**  
Image Builder는 구성 요소 문서에 정의된 단계를 기반으로 다음과 같이 구성 요소 유형을 결정합니다.  
**빌드** - 기본 구성 요소 유형입니다. 테스트 구성 요소로 분류되지 않은 모든 것은 빌드 구성 요소입니다. 이 유형의 구성 요소는 이미지 *빌드 단계*에서 실행됩니다. 이 빌드 구성 요소에 `test` 단계가 정의되어 있는 경우 해당 단계는 *테스트 단계*에서 실행됩니다.
**테스트** - 테스트 구성 요소로 적합하려면 구성 요소 문서에 `test`라는 이름의한 단계만 포함되어야 합니다. 빌드 구성 요소 구성과 관련된 테스트의 경우 독립형 테스트 구성 요소를 사용하지 않는 것이 좋습니다. 그보다는 연결된 빌드 구성 요소의 `test` 단계를 사용하십시오.
Image Builder에서 단계를 사용하여 빌드 프로세스에서 구성 요소 워크플로를 관리하는 방법에 대한 자세한 내용은 [구성 요소를 사용하여 Image Builder 이미지 사용자 지정](manage-components.md)(을)를 참조하십시오.

샘플 애플리케이션에 대해 YAML 애플리케이션 구성 요소 문서를 만들려면 이미지 운영 체제에 맞는 탭의 단계를 따르십시오.

------
#### [ Linux ]

**YAML 구성 요소 파일 생성**  
파일 편집 도구를 사용하여 구성 요소 문서를 생성합니다. 설명서 예제에서는 `update-linux-os.yaml`라는 파일을 다음 내용과 함께 사용합니다.

```
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-linux-os
description: Updates Linux with the latest security updates.
schemaVersion: 1
phases:
  - name: build
    steps:
    - name: UpdateOS
      action: UpdateOS
# Document End
```

**작은 정보**  
이 온라인 [YAML 검사기](https://jsonformatter.org/yaml-validator)와 같은 도구나 코드 환경의 YAML Lint 확장을 사용하여 YAML이 제대로 구성되어 있는지 확인하십시오.

------
#### [ Windows ]

**YAML 구성 요소 파일 생성**  
파일 편집 도구를 사용하여 구성 요소 문서를 생성합니다. 설명서 예제에서는 `update-windows-os.yaml`라는 파일을 다음 내용과 함께 사용합니다.

```
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-windows-os
description: Updates Windows with the latest security updates.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: UpdateOS
        action: UpdateOS
# Document End
```

**작은 정보**  
이 온라인 [YAML 검사기](https://jsonformatter.org/yaml-validator)와 같은 도구나 코드 환경의 YAML Lint 확장을 사용하여 YAML이 제대로 구성되어 있는지 확인하십시오.

------
#### [ macOS ]

**YAML 구성 요소 파일 생성**  
파일 편집 도구를 사용하여 구성 요소 문서를 생성합니다. 설명서 예제에서는 `wget-macos.yaml`라는 파일을 다음 내용과 함께 사용합니다.

```
name: WgetInstallDocument
description: This is wget installation document.
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: WgetBuildStep
        action: ExecuteBash
        inputs:
          commands:
            - |
              PATH=/usr/local/bin:$PATH
              sudo -u ec2-user brew install wget


  - name: validate
    steps:
      - name: WgetValidateStep
        action: ExecuteBash
        inputs:
          commands:
            - |
              function error_exit {
                echo $1
                echo "{\"failureMessage\":\"$2\"}"
                exit 1
              }

              type wget
              if [ $? -ne 0 ]; then
                error_exit "$stderr" "Wget installation failed!"
              fi

  - name: test
    steps:
      - name: WgetTestStep
        action: ExecuteBash
        inputs:
          commands:
            - wget -h
```

**작은 정보**  
이 온라인 [YAML 검사기](https://jsonformatter.org/yaml-validator)와 같은 도구나 코드 환경의 YAML Lint 확장을 사용하여 YAML이 제대로 구성되어 있는지 확인하십시오.

------