

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

# 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) - 특정 의미 체계 버전을 참조하지만 최신 빌드 버전을 가져옵니다.