

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

# Image Builder 이미지에 대한 사용자 지정 구성 요소 개발
<a name="create-custom-components"></a>

고유한 구성 요소를 생성하여 정확한 사양에 따라 Image Builder 이미지를 사용자 지정할 수 있습니다. 다음 단계를 사용하여 Image Builder 이미지 또는 컨테이너 레시피에 대한 사용자 지정 구성 요소를 개발합니다.

1. 구성 요소 문서를 개발하고 로컬에서 검증하려면 AWS Task Orchestrator and Executor (AWSTOE) 애플리케이션을 설치하고 로컬 시스템에 설정할 수 있습니다. 자세한 내용은 [를 사용하여 사용자 지정 구성 요소를 개발하도록 수동 설정 AWSTOE](toe-get-started.md) 단원을 참조하십시오.

1. 구성 요소 문서 프레임워크를 사용하는 AWSTOE 구성 요소 문서를 생성합니다. 문서 프레임워크에 대한 자세한 내용은 [사용자 지정 AWSTOE 구성 요소에 구성 요소 문서 프레임워크 사용](toe-use-documents.md) 섹션을 참조하세요.

1. 사용자 지정 구성 요소를 생성할 때 구성 요소 문서를 지정합니다. 자세한 내용은 [Image Builder로 사용자 지정 구성 요소 생성](create-component.md) 단원을 참조하십시오.

**Topics**
+ [Image Builder에서 사용자 지정 구성 요소에 대한 YAML 구성 요소 문서 생성](create-component-yaml.md)
+ [Image Builder로 사용자 지정 구성 요소 생성](create-component.md)

# 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이 제대로 구성되어 있는지 확인하십시오.

------

# Image Builder로 사용자 지정 구성 요소 생성
<a name="create-component"></a>

구성 요소 문서를 완료한 후 이를 사용하여 Image Builder 레시피가 사용할 수 있는 사용자 지정 구성 요소를 생성할 수 있습니다. Image Builder 콘솔, API 또는 SDK 또는 명령줄에서 사용자 지정 구성 요소를 생성할 수 있습니다. 입력 파라미터를 사용하여 사용자 지정 구성 요소를 생성하고 레시피에 사용하는 방법에 대한 자세한 내용은 [자습서: 입력 파라미터를 사용하여 사용자 지정 구성 요소 만들기](tutorial-component-parameters.md) 섹션을 참조하세요.

다음 섹션에서는 콘솔 또는 AWS CLI에서 구성 요소를 생성하는 방법을 보여줍니다.

**Topics**
+ [콘솔에서 사용자 지정 구성 요소 생성](#create-component-ib-console)
+ [에서 사용자 지정 구성 요소 생성 AWS CLI](#create-component-ib-cli)
+ [스크립트를 가져와에서 구성 요소를 생성합니다. AWS CLI](#import-component-cli)
+ [자동 빌드 버전 관리](#auto-build-version-management)
+ [버전 참조 사용](#using-version-references)

## 콘솔에서 사용자 지정 구성 요소 생성
<a name="create-component-ib-console"></a>

Image Builder 콘솔에서 AWSTOE 애플리케이션 구성 요소를 생성하려면 다음 단계를 따릅니다.

1. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)에서 EC2 Image Builder 콘솔을 엽니다.

1. 탐색 창에서 **구성 요소**를 선택합니다. 그런 다음 **구성 요소 생성하기**를 선택합니다.

1. **구성 요소 생성하기** 페이지의 **구성 요소 세부 정보** 아래에서 다음을 입력합니다.

   1. **이미지 운영 체제(OS)**. 구성 요소와 호환되는 운영 체제를 지정합니다.

   1. **구성 요소 범주**. 드롭다운에서 생성 중인 빌드 또는 테스트 구성 요소의 유형을 선택합니다.

   1. **구성 요소 이름**. 구성 요소의 이름을 입력합니다.

   1. **구성 요소 버전**. 구성 요소의 버전에 대한 번호를 입력합니다.

   1. **설명**. 구성 요소를 식별할 수 있도록 선택적 설명을 제공합니다.

   1. **설명 변경하기**. 이 버전의 구성 요소에 적용된 변경 사항을 이해하는 데 도움이 되는 선택적 설명을 제공합니다.

1. **정의 문서** 섹션의 기본 옵션은 **문서 콘텐츠 정의하기**입니다. 구성 요소 문서는 Image Builder가 빌드 및 테스트 인스턴스에서 이미지를 생성하기 위해 수행하는 작업을 정의합니다.

   **콘텐츠** 상자에서 YAML 구성 요소 문서 콘텐츠를 입력합니다. Linux용 *Hello World* 예제로 시작하려면 **예제 사용하기** 옵션을 선택합니다. YAML 구성 요소 문서를 생성하거나 해당 페이지에서 *UpdateOS* 예제를 복사하여 붙여넣는 방법에 대해 자세히 알아보려면 [Image Builder에서 사용자 지정 구성 요소에 대한 YAML 구성 요소 문서 생성](create-component-yaml.md)(을)를 참조합니다.

1. 구성 요소 세부 정보를 입력한 후 **구성 요소 생성하기**를 선택합니다.
**참고**  
레시피를 생성하거나 업데이트할 때 새 구성 요소를 보려면 **내 소유** 필터를 빌드 또는 테스트 구성 요소 목록에 적용합니다. 필터는 검색 상자 옆의 구성 요소 목록의 상단에 있습니다.

1. 구성 요소를 삭제하려면 **구성 요소** 페이지에서 삭제할 구성 요소 옆에 있는 확인란을 선택합니다. **작업** 드롭다운에서 **구성 요소 삭제하기**를 선택합니다.

**구성 요소 업데이트**  
새 구성 요소 버전을 생성하려면 다음 단계를 따릅니다.

1. 시작 위치에 따라:
   + **구성 요소** 목록 페이지에서 구성 요소 이름 옆의 확인란을 선택한 다음 **작업** 메뉴에서 **새 버전 생성하기**를 선택합니다.
   + 구성 요소 세부 정보 페이지에서 제목의 오른쪽 상단에 있는 **새 버전 생성하기** 버튼을 선택합니다.

1. **구성 요소 생성하기** 페이지가 표시되면 구성 요소 정보가 이미 현재 값으로 채워져 있습니다. 구성 요소 생성하기 단계에 따라 구성 요소를 업데이트합니다. 이렇게 하면 **구성 요소 버전**에 고유한 시맨틱 버전을 입력할 수 있습니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.

## 에서 사용자 지정 구성 요소 생성 AWS CLI
<a name="create-component-ib-cli"></a>

이 섹션에서는 다음과 같이에서 Image Builder 명령을 설정하고 사용하여 AWSTOE 애플리케이션 구성 요소를 AWS CLI 생성하는 방법을 알아봅니다.
+ YAML 구성 요소 문서를 명령줄에서 참조할 수 있는 S3 버킷에 업로드합니다.
+ **create-component** 명령을 사용하여 AWSTOE 애플리케이션 구성 요소를 생성합니다.
+ **list-components** 명령과 이름 필터를 사용하여 구성 요소 버전을 나열하여 이미 존재하는 버전을 확인합니다. 출력을 사용하여 업데이트에 사용할 다음 버전을 결정할 수 있습니다.

입력 YAML 문서에서 AWSTOE 애플리케이션 구성 요소를 생성하려면 이미지 운영 체제 플랫폼과 일치하는 단계를 따릅니다.

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

**Amazon S3에 애플리케이션 구성 요소 문서 저장**

S3 버킷을 AWSTOE 애플리케이션 구성 요소 소스 문서의 리포지토리로 사용할 수 있습니다. 구성 요소 문서를 저장하려면 다음 단계를 수행합니다.
+ 

**Amazon S3에 문서 업로드**

  *문서가 64KB 미만인 경우 이 단계를 건너뛸 수 있습니다.* 크기가 64KB 이상인 문서는 Amazon S3에 저장해야 합니다.

  ```
  aws s3 cp update-linux-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml
  ```

**YAML 문서에서 구성 요소 생성**

에서 사용하는 **create-component** 명령을 간소화하려면 명령에 전달하려는 모든 구성 요소 파라미터가 포함된 JSON 파일을 AWS CLI생성합니다. 이전에 만든 `update-linux-os.yaml` 문서의 위치를 포함하십시오. `uri` 키-값 페어에는 파일 참조가 포함됩니다.
**참고**  
JSON 파일의 데이터 값에 대한 이름 지정 규칙은 Image Builder API 작업 요청 파라미터에 지정된 패턴을 따릅니다. API 명령 요청 파라미터를 검토하려면 *EC2 Image Builder API 참조*의 [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) 명령을 참조하십시오.  
데이터 값을 명령줄 파라미터로 제공하려면 *AWS CLI 명령 참조*에 지정된 파라미터 이름을 참조하십시오.

1. 

**CLI 입력 JSON 파일 생성**

   파일 편집 도구를 사용하여 `create-update-linux-os-component.json`(이)라는 이름의 파일을 생성합니다. 다음 콘텐츠를 포함합니다.

   ```
   {
   	"name": "update-linux-os",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that updates the Linux operating system",
   	"changeDescription": "Initial version.",
   	"platform": "Linux",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "security-updates"
   	}
   }
   ```

1. 

**구성 요소 생성**

   이전 단계에서 만든 JSON 파일의 파일 이름을 참조하여 다음 명령을 사용하여 구성 요소를 생성합니다.

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-linux-os-component.json
   ```
**참고**  
JSON 파일 경로의 시작 부분에 `file://` 표기법을 포함시켜야 합니다.
JSON 파일의 경로는 명령을 실행하는 기본 운영 체제에 대한 적절한 규칙을 따라야 합니다. 예를 들어 Windows에서는 디렉터리 경로를 참조하기 위해 백슬래시(\$1)를 사용하고 Linux 및 macOS에서는 슬래시(/)를 사용합니다.

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

**Amazon S3에 애플리케이션 구성 요소 문서 저장**

S3 버킷을 AWSTOE 애플리케이션 구성 요소 소스 문서의 리포지토리로 사용할 수 있습니다. 구성 요소 문서를 저장하려면 다음 단계를 수행합니다.
+ 

**Amazon S3에 문서 업로드**

  *문서가 64KB 미만인 경우 이 단계를 건너뛸 수 있습니다.* 크기가 64KB 이상인 문서는 Amazon S3에 저장해야 합니다.

  ```
  aws s3 cp update-windows-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml
  ```

**YAML 문서에서 구성 요소 생성**

에서 사용하는 **create-component** 명령을 간소화하려면 명령에 전달하려는 모든 구성 요소 파라미터가 포함된 JSON 파일을 AWS CLI생성합니다. 이전에 만든 `update-windows-os.yaml` 문서의 위치를 포함하십시오. `uri` 키-값 페어에는 파일 참조가 포함됩니다.
**참고**  
JSON 파일의 데이터 값에 대한 이름 지정 규칙은 Image Builder API 작업 요청 파라미터에 지정된 패턴을 따릅니다. API 명령 요청 파라미터를 검토하려면 *EC2 Image Builder API 참조*의 [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) 명령을 참조하십시오.  
데이터 값을 명령줄 파라미터로 제공하려면 *AWS CLI 명령 참조*에 지정된 파라미터 이름을 참조하십시오.

1. 

**CLI 입력 JSON 파일 생성**

   파일 편집 도구를 사용하여 `create-update-windows-os-component.json`(이)라는 이름의 파일을 생성합니다. 다음 콘텐츠를 포함합니다.

   ```
   {
   	"name": "update-windows-os",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that updates the Windows operating system.",
   	"changeDescription": "Initial version.",
   	"platform": "Windows",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "security-updates"
   	}
   }
   ```
**참고**  
JSON 파일 경로의 시작 부분에 `file://` 표기법을 포함시켜야 합니다.
JSON 파일의 경로는 명령을 실행하는 기본 운영 체제에 대한 적절한 규칙을 따라야 합니다. 예를 들어 Windows에서는 디렉터리 경로를 참조하기 위해 백슬래시(\$1)를 사용하고 Linux 및 macOS에서는 슬래시(/)를 사용합니다.

1. 

**구성 요소 생성**

   이전 단계에서 만든 JSON 파일의 파일 이름을 참조하여 다음 명령을 사용하여 구성 요소를 생성합니다.

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-windows-os-component.json
   ```
**참고**  
JSON 파일 경로의 시작 부분에 `file://` 표기법을 포함시켜야 합니다.
JSON 파일의 경로는 명령을 실행하는 기본 운영 체제에 대한 적절한 규칙을 따라야 합니다. 예를 들어 Windows에서는 디렉터리 경로를 참조하기 위해 백슬래시(\$1)를 사용하고 Linux 및 macOS에서는 슬래시(/)를 사용합니다.

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

**Amazon S3에 애플리케이션 구성 요소 문서 저장**

S3 버킷을 AWSTOE 애플리케이션 구성 요소 소스 문서의 리포지토리로 사용할 수 있습니다. 구성 요소 문서를 저장하려면 다음 단계를 수행합니다.
+ 

**Amazon S3에 문서 업로드**

  *문서가 64KB 미만인 경우 이 단계를 건너뛸 수 있습니다.* 크기가 64KB 이상인 문서는 Amazon S3에 저장해야 합니다.

  ```
  aws s3 cp wget-macos.yaml s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml
  ```

**YAML 문서에서 구성 요소 생성**

에서 사용하는 **create-component** 명령을 간소화하려면 명령에 전달하려는 모든 구성 요소 파라미터가 포함된 JSON 파일을 AWS CLI생성합니다. 이전에 만든 `wget-macos.yaml` 문서의 위치를 포함하십시오. `uri` 키-값 페어에는 파일 참조가 포함됩니다.
**참고**  
JSON 파일의 데이터 값에 대한 이름 지정 규칙은 Image Builder API 작업 요청 파라미터에 지정된 패턴을 따릅니다. API 명령 요청 파라미터를 검토하려면 *EC2 Image Builder API 참조*의 [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) 명령을 참조하십시오.  
데이터 값을 명령줄 파라미터로 제공하려면 *AWS CLI 명령 참조*에 지정된 파라미터 이름을 참조하십시오.

1. 

**CLI 입력 JSON 파일 생성**

   파일 편집 도구를 사용하여 `install-wget-macos-component.json`(이)라는 이름의 파일을 생성합니다. 다음 콘텐츠를 포함합니다.

   ```
   {
   	"name": "install install-wget-macos-component",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that installs and verifies the wget utility on macOS.",
   	"changeDescription": "Initial version.",
   	"platform": "macOS",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "install-software"
   	}
   }
   ```

1. 

**구성 요소 생성**

   이전 단계에서 만든 JSON 파일의 파일 이름을 참조하여 다음 명령을 사용하여 구성 요소를 생성합니다.

   ```
   aws imagebuilder create-component --cli-input-json file://install-wget-macos-component.json
   ```
**참고**  
JSON 파일 경로의 시작 부분에 `file://` 표기법을 포함시켜야 합니다.
JSON 파일의 경로는 명령을 실행하는 기본 운영 체제에 대한 적절한 규칙을 따라야 합니다. 예를 들어 Windows에서는 디렉터리 경로를 참조하기 위해 백슬래시(\$1)를 사용하고 Linux 및 macOS에서는 슬래시(/)를 사용합니다.

------

### AWSTOE 의 업데이트를 위한 구성 요소 버전 관리 AWS CLI
<a name="component-update-cli"></a>

AWSTOE 구성 요소 이름과 버전은 구성 요소 접두사 뒤에 구성 요소의 Amazon 리소스 이름(ARN)에 포함됩니다. 구성 요소의 새 버전마다 고유한 ARN이 있습니다. 새 버전을 생성하는 단계는 새 구성 요소를 만드는 단계와 완전히 동일합니다. 단, 시맨틱 버전이 해당 구성 요소 이름에 고유해야 합니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.

다음 논리적 버전을 할당하려면 먼저 변경하려는 구성 요소의 기존 버전 목록을 가져오십시오. **list-components** 명령을 AWS CLI와 함께 사용하고 이름을 필터링합니다.

이 예제에서는 이전 Linux 예제에서 만든 구성 요소의 이름을 기준으로 필터링합니다. 생성한 구성 요소를 나열하려면 **create-component** 명령에서 사용한 JSON 파일의 `name` 파라미터 값을 사용합니다.

```
aws imagebuilder list-components --filters name="name",values="update-linux-os"	
{
    "requestId": "123a4567-b890-123c-45d6-ef789ab0cd1e",
    "componentVersionList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.0",
            "name": "update-linux-os",
            "version": "1.0.0",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2020-09-24T16:58:24.444Z"
        },
        {
            "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.1",
            "name": "update-linux-os",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2021-07-10T03:38:46.091Z"
        }
    ]
}
```

결과를 바탕으로 다음 버전을 결정할 수 있습니다.

## 스크립트를 가져와에서 구성 요소를 생성합니다. AWS CLI
<a name="import-component-cli"></a>

일부 시나리오에서는 기존 스크립트로 시작하는 것이 더 쉬울 수 있습니다. 이 시나리오의 경우 다음 예제를 사용할 수 있습니다.

이 예제에서는 `import-component.json`(그림 참조)이라는 파일이 있다고 가정합니다. 파일은 `amzn-s3-demo-source-bucket`에 이미 업로드되어 있는 `AdminConfig.ps1`이라는 PowerShell 스크립트를 직접 참조한다는 점에 유의합니다. 현재 `SHELL`(은)는 구성 요소 `format`에 의해 지원됩니다.

```
{
"name": "MyImportedComponent",
"semanticVersion": "1.0.0",
"description": "An example of how to import a component",
"changeDescription": "First commit message.",
"format": "SHELL",
"platform": "Windows",
"type": "BUILD",
"uri": "s3://amzn-s3-demo-source-bucket/AdminConfig.ps1",
"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/60763706-b131-418b-8f85-3420912f020c"
}
```

가져온 스크립트에서 구성 요소를 생성하려면 다음 명령을 실행합니다.

```
aws imagebuilder import-component --cli-input-json file://import-component.json
```

## 자동 빌드 버전 관리
<a name="auto-build-version-management"></a>

기존 구성 요소와 이름 및 의미 체계 버전이 동일한 구성 요소를 생성하면 Image Builder는 빌드 버전을 자동으로 증가시킵니다(예:에서 `/1` `/2`, `/3`에서 등). 이렇게 하면 버전 번호를 수동으로 관리하지 않고도 구성 요소를 반복적으로 업데이트할 수 있습니다. 이는 CI/CD 파이프라인 및 infrastructure-as-code 배포에 특히 유용합니다. 구성 요소 콘텐츠가 이전 빌드 버전과 동일한 경우 Image Builder는 중복 구성 요소가 서비스 할당량을 소비하지 않도록 `ResourceAlreadyExistsException`를 반환합니다.

## 버전 참조 사용
<a name="using-version-references"></a>

구성 요소를 생성하거나 검색하면 Image Builder는 latestVersionReferences 객체에 와일드카드 버전 패턴이 포함된 사전 구성된 ARNs을 자동으로 제공합니다. 이러한 참조를 사용하면 ARNs.

**올바른 버전 참조 선택**
+ latestVersionArn(x.x.x) - 항상 절대 최신 구성 요소 버전을 사용합니다.
+ atestMajorVersionArn(1.x.x) - 메이저 버전 내에서 최신 마이너 및 패치 버전을 사용합니다.
+ latestMinorVersionArn(1.2.x) - 최신 패치 버전만 사용합니다.
+ latestPatchVersionArn(1.2.3) - 특정 의미 체계 버전을 참조하지만 최신 빌드 버전을 가져옵니다.

**참고**  
예상치 못한 요금이 부과되지 않도록 하려면 이 가이드의 예제에서 만든 리소스와 파이프라인을 정리하세요. Image Builder에서 리소스 삭제에 대한 자세한 내용은 [오래되거나 사용되지 않는 Image Builder 리소스 삭제](delete-resources.md)(을)를 참조하세요.