

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

# Image Builder를 사용하여 사용자 지정 이미지 구성
<a name="manage-resources"></a>

구성 리소스는 이미지 파이프라인을 구성하는 구성 요소이자 해당 파이프라인이 생성하는 이미지입니다. 이 장에서는 인프라 구성 및 배포 설정과 함께 구성 요소, 레시피, 이미지를 비롯한 이미지 빌더 리소스를 생성, 유지 관리 및 공유하는 방법을 다룹니다.

**참고**  
이미지 빌더 리소스를 관리하는 데 도움이 되도록 각 리소스에 고유한 메타데이터를 할당할 수 있습니다. 태그를 사용하여 AWS 리소스를 용도, 소유자, 환경 등으로 다양하게 분류할 수 있습니다. 이는 동일한 유형의 리소스가 많을 때 유용합니다. 지정한 태그를 기반으로 특정 리소스를 더 쉽게 식별할 수 있습니다.  
에서 Image Builder 명령을 사용하여 리소스에 태그를 지정하는 방법에 대한 자세한 내용은이 가이드의 [리소스 태깅](tag-resources.md) 섹션을 AWS CLI참조하세요.

**Topics**
+ [Image Builder에서 레시피 관리](manage-recipes.md)
+ [Image Builder 인프라 구성 관리](manage-infra-config.md)
+ [Image Builder 배포 설정 관리](manage-distribution-settings.md)

# Image Builder에서 레시피 관리
<a name="manage-recipes"></a>

EC2 Image Builder 레시피는 새 이미지를 생성하기 위한 출발점으로 사용할 기본 이미지를 정의합니다. 새 이미지를 정의하는 동시에 이미지를 사용자 정의하고 모든 것이 예상대로 작동하는지 확인하기 위해 사용자가 추가하는 구성 요소 집합도 정의합니다. Image Builder는 각 구성 요소에 대한 자동 버전 선택 기능을 제공합니다. 기본적으로 레시피에 최대 20개의 구성 요소를 적용할 수 있습니다. 여기에는 빌드 구성 요소와 테스트 구성 요소가 모두 포함됩니다.

레시피를 생성한 후에는 수정하거나 이를 대체할 수 없습니다. 레시피를 생성한 후 구성 요소를 업데이트하려면 새 레시피 또는 레시피 버전을 생성해야 합니다. 기존 레시피에 언제든지 태그를 적용할 수 있습니다. 에서 Image Builder 명령을 사용하여 리소스에 태그를 지정하는 방법에 대한 자세한 내용은이 가이드의 [리소스 태깅](tag-resources.md) 섹션을 AWS CLI참조하세요.

**작은 정보**  
레시피에서 Amazon 관리형 구성 요소를 사용하거나 자체 사용자 지정 구성 요소를 개발할 수 있습니다. 자세한 내용은 [Image Builder 이미지에 대한 사용자 지정 구성 요소 개발](create-custom-components.md) 단원을 참조하십시오. 출력 AMIs를 생성하는 이미지 레시피의 경우 AWS Marketplace 이미지 제품 및 구성 요소를 사용할 수도 있습니다. AWS Marketplace 제품과의 통합에 대한 자세한 내용은 단원을 참조하십시오[AWS Marketplace Image Builder의 통합](integ-marketplace.md).

이 섹션에서는 레시피를 나열하고, 보고, 생성하는 방법을 설명합니다.

**Topics**
+ [이미지 레시피 세부 정보 나열 및 보기](image-recipe-details.md)
+ [컨테이너 레시피 세부 정보 나열 및 보기](container-recipe-details.md)
+ [이미지 레시피의 새 버전 생성](create-image-recipes.md)
+ [컨테이너 레시피의 새 버전 생성](create-container-recipes.md)
+ [리소스 정리](#recipes-cleanup)

# 이미지 레시피 세부 정보 나열 및 보기
<a name="image-recipe-details"></a>

이 섹션에서는 EC2 Image Builder 이미지 레시피에 대한 정보를 찾고 세부 정보를 볼 수 있는 다양한 방법을 설명합니다.

**Topics**
+ [콘솔에서 이미지 레시피 나열](#list-image-recipes-console)
+ [에서 이미지 레시피 나열 AWS CLI](#cli-list-image-recipes)
+ [콘솔에서 이미지 레시피 세부 정보 보기](#view-image-recipe-details-console)
+ [에서 이미지 레시피 세부 정보 가져오기 AWS CLI](#cli-get-image-recipe)
+ [에서 이미지 레시피 정책 세부 정보 가져오기 AWS CLI](#cli-get-image-recipe-policy)

## 콘솔에서 이미지 레시피 나열
<a name="list-image-recipes-console"></a>

Image Builder 콘솔에서 사용자 계정으로 생성된 이미지 레시피 목록을 보려면 다음 단계를 따르세요.

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

1. 탐색 창에서 **이미지 레시피**를 선택합니다. 계정에서 생성된 이미지 레시피 목록이 표시됩니다.

1. 세부 정보를 보거나 새 레시피 버전을 만들려면 **레시피 이름** 링크를 선택합니다. 레시피의 세부 정보 보기가 열립니다.
**참고**  
또한 **레시피 이름** 옆에 있는 확인란을 선택한 다음 **세부 정보 보기**를 선택할 수 있습니다.

## 에서 이미지 레시피 나열 AWS CLI
<a name="cli-list-image-recipes"></a>

다음 예제에서는 AWS CLI(을)를 사용하여 모든 이미지 레시피를 나열하는 방법을 보여 줍니다.

```
aws imagebuilder list-image-recipes
```

## 콘솔에서 이미지 레시피 세부 정보 보기
<a name="view-image-recipe-details-console"></a>

Image Builder 콘솔을 사용해서 특정 이미지 레시피의 세부 정보를 보려면 검토할 이미지 레시피를 선택하고 [콘솔에서 이미지 레시피 나열](#list-image-recipes-console)에 설명된 단계를 사용하십시오.

레시피 세부 정보 페이지에서 다음을 수행할 수 있습니다.
+ 레시피를 삭제합니다. Image Builder에서 리소스 삭제에 대한 자세한 내용은 [오래되거나 사용되지 않는 Image Builder 리소스 삭제](delete-resources.md)(을)를 참조하세요.
+ 새로운 버전을 생성합니다.
+ 레시피에서 파이프라인을 생성하십시오. **이 레시피에서 파이프라인 생성**을 선택하면 파이프라인 마법사로 이동합니다. 파이프라인 마법사를 이용한 Image Builder 파이프라인을 생성에 대한 자세한 내용은 [자습서: Image Builder 콘솔 마법사에서 출력 AMI를 사용하여 이미지 파이프라인 생성](start-build-image-pipeline.md)(을)를 참조하세요.
**참고**  
기존 레시피로 파이프라인을 생성하는 경우 새 레시피를 생성하는 옵션을 사용할 수 없습니다.

## 에서 이미지 레시피 세부 정보 가져오기 AWS CLI
<a name="cli-get-image-recipe"></a>

다음 예제는 **imagebuilder** CLI 명령을 사용하여 Amazon 리소스 이름(ARN)을 지정하여 이미지 레시피의 세부 정보를 가져오는 방법을 보여줍니다.

```
aws imagebuilder get-image-recipe --image-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-recipe/2020.12.03
```

## 에서 이미지 레시피 정책 세부 정보 가져오기 AWS CLI
<a name="cli-get-image-recipe-policy"></a>

다음 예제는 **imagebuilder** CLI 명령을 사용하여 ARN을 지정하여 이미지 레시피 정책의 세부 정보를 가져오는 방법을 보여줍니다.

```
aws imagebuilder get-image-recipe-policy --image-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-recipe/2020.12.03
```

# 컨테이너 레시피 세부 정보 나열 및 보기
<a name="container-recipe-details"></a>

이 섹션에서는 EC2 Image Builder 컨테이너 레시피에 대한 정보를 찾고 세부 정보를 볼 수 있는 방법을 설명합니다.

**Topics**
+ [콘솔에 컨테이너 레시피 나열](#list-container-recipes-console)
+ [를 사용하여 컨테이너 레시피 나열 AWS CLI](#cli-list-container-recipes)
+ [콘솔에서 컨테이너 레시피 세부 정보 보기](#view-container-recipe-details-console)
+ [를 사용하여 컨테이너 레시피 세부 정보 가져오기 AWS CLI](#cli-get-container-recipe)
+ [를 사용하여 컨테이너 레시피 정책 세부 정보 가져오기 AWS CLI](#cli-get-container-recipe-policy)

## 콘솔에 컨테이너 레시피 나열
<a name="list-container-recipes-console"></a>

Image Builder 콘솔에서 사용자 계정으로 생성된 컨테이너 레시피 목록을 보려면 다음 단계를 따르십시오.

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

1. 탐색 창에서 **컨테이너 레시피**를 선택합니다. 계정에서 생성된 컨테이너 레시피 목록이 표시됩니다.

1. 세부 정보를 보거나 새 레시피 버전을 만들려면 **레시피 이름** 링크를 선택합니다. 레시피의 세부 정보 보기가 열립니다.
**참고**  
또한 **레시피 이름** 옆에 있는 확인란을 선택한 다음 **세부 정보 보기**를 선택할 수 있습니다.

## 를 사용하여 컨테이너 레시피 나열 AWS CLI
<a name="cli-list-container-recipes"></a>

다음 예제에서는 AWS CLI(을)를 사용하여 모든 컨테이너 레시피를 나열하는 방법을 보여 줍니다.

```
aws imagebuilder list-container-recipes
```

## 콘솔에서 컨테이너 레시피 세부 정보 보기
<a name="view-container-recipe-details-console"></a>

Image Builder 콘솔에서 특정 컨테이너 레시피의 세부 정보를 보려면 검토할 컨테이너 레시피를 선택하고 [콘솔에 컨테이너 레시피 나열](#list-container-recipes-console)에 설명된 단계를 사용하십시오.

레시피 세부 정보 페이지에서 다음을 수행할 수 있습니다.
+ 레시피를 삭제합니다. Image Builder에서 리소스를 삭제하는 방법에 대한 자세한 내용은 [오래되거나 사용되지 않는 Image Builder 리소스 삭제](delete-resources.md)(을)를 참조하십시오.
+ 새로운 버전을 생성합니다.
+ 레시피에서 파이프라인을 생성하십시오. **이 레시피에서 파이프라인 생성**을 선택하면 파이프라인 마법사로 이동합니다. 파이프라인 마법사를 이용해 Image Builder 파이프라인을 생성하는 방법에 대한 자세한 내용은 [자습서: Image Builder 콘솔 마법사에서 출력 AMI를 사용하여 이미지 파이프라인 생성](start-build-image-pipeline.md)(을)를 참조하십시오.
**참고**  
기존 레시피로 파이프라인을 생성하는 경우 새 레시피를 생성하는 옵션을 사용할 수 없습니다.

## 를 사용하여 컨테이너 레시피 세부 정보 가져오기 AWS CLI
<a name="cli-get-container-recipe"></a>

다음 예제는 **imagebuilder** CLI 명령을 사용하여 ARN을 지정하여 컨테이너 레시피의 세부 정보를 가져오는 방법을 보여줍니다.

```
aws imagebuilder get-container-recipe --container-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03
```

## 를 사용하여 컨테이너 레시피 정책 세부 정보 가져오기 AWS CLI
<a name="cli-get-container-recipe-policy"></a>

다음 예제는 **imagebuilder** CLI 명령을 사용하여 ARN을 지정하여 컨테이너 레시피 정책의 세부 정보를 가져오는 방법을 보여줍니다.

```
aws imagebuilder get-container-recipe-policy --container-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03
```

# 이미지 레시피의 새 버전 생성
<a name="create-image-recipes"></a>

이 섹션에서는 새 버전의 이미지 레시피를 만드는 방법을 설명합니다.

**Topics**
+ [콘솔에서 새 이미지 레시피 버전 생성](#create-image-recipe-version-console)
+ [를 사용하여 이미지 레시피 생성 AWS CLI](#create-image-recipe-cli)
+ [콘솔에서 VM을 기본 이미지로 가져옵니다.](#import-vm-recipes)

## 콘솔에서 새 이미지 레시피 버전 생성
<a name="create-image-recipe-version-console"></a>

새 레시피 버전을 만드는 것은 새 레시피를 만드는 것과 거의 같습니다. 차이점은 대부분의 경우 기본 레시피와 일치하도록 특정 세부 정보가 미리 선택된다는 것입니다. 다음 목록은 새 레시피 생성과 기존 레시피의 새 버전 생성 간의 차이점을 설명합니다.

**새 버전의 기본 레시피 세부 정보**
+ **이름** – *편집할 수 없습니다*.
+ **버전** – 필수입니다. *<major>.<minor>.<patch>* 형식으로 생성하려는 버전 번호를 입력합니다. Image Builder는 레시피에 대한 자동 버전 증분을 지원하므로 레시피 버전에서 와일드카드 패턴을 사용할 수 있습니다. 와 같은 와일드카드 버전으로 레시피를 생성하면 `1.0.x`Image Builder는 버전(예: , `1.0.1``1.0.2``1.0.3`, 등)을 자동으로 증가시킵니다. 이렇게 하면 레시피 버전을 수동으로 추적하고 증분할 필요가 없습니다.
+ **이미지 선택** 옵션 - 미리 선택되어 있지만 편집할 수 있습니다. 기본 이미지의 소스 선택을 변경하면 선택한 원본 옵션에 따라 달라지는 기타 세부 정보가 손실될 수 있습니다.

  기본 이미지 선택과 관련된 세부 정보를 보려면 선택 항목과 일치하는 탭을 선택하십시오.

------
#### [ Managed image ]
  + **이미지 운영 체제(OS)** - *편집할 수 없습니다*.
  + **이미지 이름** - 기존 레시피에 대해 선택한 기본 이미지 조합을 기반으로 미리 선택됩니다. 하지만 **이미지 선택** 옵션을 변경하면 미리 선택한 **이미지 이름**을 잃게 됩니다.
  + **자동 버전 관리 옵션** - 기본 레시피와 일치하지 *않습니다*. 이 이미지 옵션의 기본값은 **선택한 OS 버전 사용** 옵션입니다.
**중요**  
시맨틱 버전 관리를 사용하여 파이프라인 빌드를 시작하는 경우 이 값을 **사용 가능한 최신 OS 버전 사용**으로 변경해야 합니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.

------
#### [ AWS Marketplace image ]
  + **구독 **-이 탭은 열려 있어야 하며 기본 레시피와 일치하도록에서 구독한 이미지를 미리 선택해야 AWS Marketplace 합니다. 레시피가 기본 이미지로 사용하는 이미지를 변경하면 선택한 원본 이미지에 의존하는 기타 세부 정보가 손실될 수 있습니다.

   AWS Marketplace 제품에 대한 자세한 내용은 *AWS Marketplace 구매자 안내서*의 [제품 구매를](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-subscribing-to-products.html) 참조하세요.

------
#### [ Custom AMI ]

  **AMI 소스**(필수) - 기본 이미지로 사용할 AMI ID 또는 AMI ID가 포함된 AWS Systems Manager (SSM) 파라미터 스토어 파라미터를 입력합니다. SSM 에이전트는 선택한 AMI에 사전 설치되어 있어야 합니다.
  + **AMI ID** -이 설정은 원래 항목으로 미리 채워지지 않습니다. 기본 이미지의 AMI ID를 입력합니다. 예시: `ami-1234567890abcdef1`.
  + **SSM 파라미터** - 기본 이미지의 AMI ID가 포함된 SSM 파라미터 스토어 파라미터의 이름 또는 ARN을 입력합니다. 예: `/ib/test/param` 또는 `arn:aws:ssm:us-east-1:111122223333:parameter/ib/test/param`.

------
+ **인스턴스 구성** - 설정이 미리 선택되어 있지만 편집할 수 있습니다.
  + **Systems Manager 에이전트** - 이 확인란을 선택하거나 선택 취소하여 새 이미지에 Systems Manager 에이전트 설치를 제어할 수 있습니다. 새 이미지에 Systems Manager 에이전트를 포함하도록 기본적으로 확인란이 선택되어 있지 않습니다. 최종 이미지에서 Systems Manager 에이전트를 제거하려면 에이전트가 AMI에 포함되지 않도록 확인란을 선택합니다.
  + **사용자 데이터** – 이 영역을 사용하여 빌드 인스턴스를 시작할 때 실행할 명령 또는 명령 스크립트를 제공합니다. 하지만 이 값은 Systems Manager가 설치되었는지 확인하기 위해 Image Builder가 추가했을 수 있는 모든 명령을 대체합니다. 이러한 명령에는 새 이미지를 생성하기 전에 Image Builder가 Linux 이미지에 대해 일반적으로 실행하는 정리 스크립트가 포함됩니다.

    Image Builder가 인스턴스를 시작하면 구성 요소 실행이 시작되기 전에 Cloud-init 단계에서 사용자 데이터 스크립트가 실행됩니다. 이 단계는 인스턴스의 파일에 로깅됩니다`var/log/cloud-init.log`.
**참고**  
사용자 데이터를 입력하는 경우 기본 이미지에 Systems Manager 에이전트가 사전 설치되어 있거나 사용자 데이터에 설치를 포함해야 합니다.
Linux 이미지의 경우 사용자 데이터 스크립트에 `perform_cleanup`(이)라는 이름이 지정된 빈 파일을 만드는 명령을 포함하여 정리 단계를 실행해야 합니다. Image Builder는 이 파일을 탐지하고 새 이미지를 만들기 전에 정리 스크립트를 실행합니다. 자세한 내용과 샘플 스크립트는 [Image Builder의 보안 모범 사례](security-best-practices.md) 섹션을 참조하세요.
+ **작업 디렉토리** - 미리 선택되어 있지만 편집할 수 있습니다.
+ **구성 요소** - 레시피에 이미 포함된 구성 요소는 각 구성 요소 목록(빌드 및 테스트) 끝에 있는 **선택된 구성 요소** 섹션에 표시됩니다. 필요에 맞게 선택한 구성 요소를 제거하거나 재정렬할 수 있습니다.

  CIS 강화 구성 요소는 Image Builder 레시피의 표준 구성 요소 순서 지정 규칙을 따르지 않습니다. 출력 이미지에 대해 벤치마크 테스트가 실행되도록 하기 위해 CIS 강화 구성 요소는 항상 마지막에 실행됩니다.
**참고**  
빌드 및 테스트 구성 요소 목록에는 구성 요소 소유자 유형에 따라 사용 가능한 구성 요소가 표시됩니다. 구성 요소를 추가하려면 **빌드 구성 요소 추가**를 선택하고 적용되는 소유권 필터를 선택합니다. 예를 들어 AWS Marketplace 제품과 연결된 빌드 구성 요소를 추가하려면를 선택합니다`AWS Marketplace`. 그러면 구성 요소를 나열 AWS Marketplace 하는 콘솔 인터페이스 오른쪽에 선택 패널이 열립니다.  
CIS 구성 요소에서를 선택합니다`Third party managed`.

  선택한 구성 요소에 대해 다음 설정을 구성할 수 있습니다.
  + **버전 관리 옵션** - 미리 선택되어 있지만 변경할 수 있습니다. 이미지 빌드가 항상 최신 버전의 구성 요소를 사용하도록 하려면 **사용 가능한 최신 구성 요소 버전 사용** 옵션을 선택하는 것이 좋습니다. 레시피에서 특정 구성 요소 버전을 사용해야 하는 경우 **구성 요소 버전 지정**을 선택하고 나타나는 **구성 요소 버전** 상자에 버전을 입력할 수 있습니다.
  + **입력 파라미터** - 구성 요소가 받아들이는 입력 파라미터를 표시합니다. **값**은 이전 버전의 레시피 값으로 미리 채워집니다. 이 레시피에서 이 구성 요소를 처음 사용하고 입력 파라미터에 대해 기본값이 정의된 경우 기본값이 **값** 상자에 회색으로 표시된 텍스트와 함께 나타납니다. 값을 입력하지 않으면 Image Builder에서 기본값을 사용합니다.

    입력 파라미터가 필요하지만 구성 요소에 기본값이 정의되어 있지 않은 경우 값을 제공해야 합니다. 누락된 필수 파라미터가 있고 기본값이 정의되지 않은 경우 Image Builder는 레시피 버전을 생성하지 않습니다.
**중요**  
구성 요소 파라미터는 일반 텍스트 값이며 AWS CloudTrail에 기록됩니다. AWS Secrets Manager 또는 AWS Systems Manager 파라미터 스토어를 사용하여 보안 암호를 저장하는 것이 좋습니다. Secrets Manager에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [Secrets Manager란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하십시오. AWS Systems Manager Parameter Store에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) 섹션을 참조하십시오.

  **버전 관리 옵션** 또는 **입력 파라미터** 설정을 확장하려면 설정 이름 옆에 있는 화살표를 선택하면 됩니다. 선택한 모든 구성 요소의 모든 설정을 확장하려면 **모두 확장** 스위치를 끄고 켤 수 있습니다.
+ **스토리지(볼륨)** — 미리 채워져 있습니다. 루트 볼륨 **디바이스 이름**, **스냅샷** 및 **IOPS** 선택은 편집할 수 없습니다. 하지만 **크기**와 같은 나머지 설정은 모두 변경할 수 있습니다. 새 볼륨을 추가하고 새 볼륨 또는 기존 볼륨을 암호화할 수도 있습니다.

  Image Builder가 소스 리전((빌드가 실행되는 리전)의 사용자 계정으로 생성한 이미지의 볼륨을 암호화하려면 이미지 레시피의 스토리지 볼륨 암호화를 사용해야 합니다. 빌드의 배포 단계에서 실행되는 암호화는 다른 계정이나 리전에 배포되는 이미지에만 적용됩니다.
**참고**  
볼륨에 암호화를 사용하는 경우 키가 루트 볼륨에 사용된 것과 같더라도 각 볼륨에 대해 키를 개별적으로 선택해야 합니다.

**새 이미지 레시피 버전을 만들려면**

1. 레시피 세부정보 페이지 상단에서 **새 버전 생성**을 선택합니다. 그러면 **이미지 레시피 만들기** 페이지로 이동합니다.

1. 새 버전을 만들려면 변경한 다음 **레시피 생성**을 선택합니다.

   최종 이미지에는 AWS Marketplace 이미지 제품 및 구성 요소의 제품 코드가 최대 4개까지 포함될 수 있습니다. 선택한 기본 이미지와 구성 요소에 4개 이상의 제품 코드가 포함된 경우 레시피를 생성하려고 하면 Image Builder가 오류를 반환합니다.

이미지 파이프라인을 생성할 때 이미지 레시피를 생성하는 방법에 대한 자세한 내용은 이 가이드의 **시작하기** 섹션의 [2단계: 레시피 선택](start-build-image-pipeline.md#start-build-image-step2)(을)를 참조하십시오.

## 를 사용하여 이미지 레시피 생성 AWS CLI
<a name="create-image-recipe-cli"></a>

에서 Image Builder `create-image-recipe` 명령을 사용하여 이미지 레시피를 생성하려면 다음 단계를 AWS CLI따릅니다.

**사전 조건**  
이 섹션의 Image Builder 명령을 실행하여에서 이미지 레시피를 생성하기 전에 선택적으로 레시피가 사용하는 구성 요소를 생성할 AWS CLI수 있습니다. 다음 단계의 이미지 레시피 예제는 이 가이드의 [에서 사용자 지정 구성 요소 생성 AWS CLI](create-component.md#create-component-ib-cli) 섹션에서 만든 예제 구성 요소를 참조합니다.

레시피에 구성 요소를 포함하려면 포함하려는 ARNs을 기록해 둡니다. 기존 AMIs 또는 배포 전용 워크플로를 테스트하기 위해 구성 요소 없이 레시피를 생성할 수도 있습니다.

1. 

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

   **create-image-recipe** 명령의 모든 입력을 인라인 명령 파라미터로 제공할 수 있습니다. 하지만 결과로 생성되는 명령은 상당히 길 수 있습니다. 명령을 간소화하기 위해 모든 레시피 설정이 포함된 JSON 파일을 대신 제공할 수 있습니다.
**참고**  
JSON 파일의 데이터 값에 대한 이름 지정 규칙은 Image Builder API 작업 요청 파라미터에 지정된 패턴을 따릅니다. API 작업 요청 파라미터를 검토하려면 *EC2 Image Builder API* 참조의 [CreateImageRecipe](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateImageRecipe.html) 명령을 참조하세요.  
데이터 값을 명령줄 파라미터로 제공하려면 *AWS CLI 명령 참조*에 지정된 파라미터 이름을 참조하십시오.

   다음은 이러한 예제에서 지정하는 파라미터를 요약한 것입니다.
   + **이름**(문자열, 필수) — 이미지 레시피의 이름입니다.
   + **설명**(문자열) – 이미지 레시피에 대한 설명입니다.
   + **parentImage**(문자열, 필수) — 이미지 레시피가 사용자 지정 이미지의 기본으로 사용하는 이미지입니다. 다음 옵션 중 하나를 사용하여 상위 이미지를 지정할 수 있습니다.
     + AMI ID
     + Image Builder 이미지 리소스 ARN
     + AWS Systems Manager (SSM) 파라미터 스토어 파라미터 앞에 접두사가 붙고 `ssm:`파라미터 이름 또는 ARN이 옵니다.
     + AWS Marketplace 제품 ID
**참고**  
Linux 및 macOS 예제에서는 Image Builder AMI를 사용하고 Windows 예제에서는 ARN을 사용합니다.
   + **semanticVersion**(문자열, 필수) - 생성하려는 버전 번호를 *<major>.<minor>.<patch>* 형식으로 입력합니다. Image Builder는 레시피에 대한 자동 버전 증분을 지원하므로 레시피 버전에서 와일드카드 패턴을 사용할 수 있습니다. 와 같은 와일드카드 버전으로 레시피를 생성하면 `1.0.x`Image Builder는 버전(예: , `1.0.1``1.0.2``1.0.3`, 등)을 자동으로 증가시킵니다. 이렇게 하면 레시피 버전을 수동으로 추적하고 증분할 필요가 없습니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.
   + **구성 요소**(배열, 선택 사항) - `ComponentConfiguration` 객체 배열을 포함합니다. 구성 요소는 선택 사항입니다. 테스트 또는 배포 워크플로를 위한 구성 요소 없이 레시피를 생성할 수 있습니다.
**참고**  
Image Builder는 레시피에 지정한 순서대로 구성 요소를 설치합니다. 하지만 CIS 하드닝 구성 요소는 출력 이미지에 대해 벤치마크 테스트가 실행되도록 하기 위해 항상 마지막에 실행됩니다.
     + **componentARN**(문자열, 필수) – 구성 요소 ARN입니다.
**작은 정보**  
예제 중 하나를 사용하여 고유한 이미지 레시피를 만들려면 예제 ARN을 레시피에 사용 중인 구성 요소의 ARN으로 바꿔야 합니다.
     + **파라미터**(객체 배열) - `ComponentParameter` 객체 배열을 포함합니다. 입력 파라미터가 필요하지만 구성 요소에 기본값이 정의되어 있지 않은 경우 값을 제공해야 합니다. 누락된 필수 파라미터가 있고 기본값이 정의되지 않은 경우 Image Builder는 레시피 버전을 생성하지 않습니다.
**중요**  
구성 요소 파라미터는 일반 텍스트 값이며 AWS CloudTrail에 기록됩니다. AWS Secrets Manager 또는 AWS Systems Manager 파라미터 스토어를 사용하여 보안 암호를 저장하는 것이 좋습니다. Secrets Manager에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [Secrets Manager란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하십시오. AWS Systems Manager Parameter Store에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) 섹션을 참조하십시오.
       + **이름**(문자열, 필수) — 설정할 구성 요소 파라미터의 이름입니다.
       + **값**(문자열 배열, 필수) - 명명된 구성 요소 파라미터의 값을 설정하는 문자열 배열을 포함합니다. 구성 요소에 대해 정의된 기본값이 있고 다른 값이 제공되지 않는 경우는 기본값을 AWSTOE 사용합니다.
   + **additionalInstanceConfiguration**(객체) - 빌드 인스턴스에 대한 추가 설정을 지정하고 스크립트를 시작합니다.
     + **systemsManagerAgent**(객체) - 빌드 인스턴스의 Systems Manager 에이전트에 대한 설정을 포함합니다.
       + **uninstallAfterBuild**(부울) - 새 AMI를 생성하기 전에 최종 빌드 이미지에서 Systems Manager 에이전트를 제거할지 여부를 제어합니다. 이 옵션을 `true`(으)로 설정하면 에이전트가 최종 이미지에서 제거됩니다. 이 옵션을 `false`(으)로 설정하면 에이전트가 그대로 남아 있으므로 새 AMI에 포함됩니다. 기본값은 `false`입니다.
**참고**  
`uninstallAfterBuild` 속성이 JSON 파일에 포함되어 있지 않고 다음 조건에 해당하는 경우 Image Builder는 최종 이미지에서 Systems Manager 에이전트를 제거하여 AMI에서 사용할 수 없도록 합니다.  
이 `userDataOverride` 파일이 비어 있거나 JSON 파일에서 생략되었습니다.
Image Builder는 기본 이미지에 에이전트가 사전 설치되어 있지 않은 운영 체제의 빌드 인스턴스에 Systems Manager 에이전트를 자동으로 설치했습니다.
     + **userDataOverride**(문자열) — 빌드 인스턴스를 시작할 때 실행할 명령 또는 명령 스크립트를 제공합니다.
**참고**  
사용자 데이터는 항상 base 64로 인코딩됩니다. 예를 들어, 다음 명령은 `IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==`(으)로 인코딩됩니다.  

       ```
       #!/bin/bash
       mkdir -p /var/bb/
       touch /var
       ```
Linux 예제에서는 이 인코딩된 값을 사용합니다.

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

   다음 예제의 기본 이미지(`parentImage` 속성)는 AMI입니다. AMI를 사용하는 경우 AMI에 액세스할 수 있어야 하며 AMI는 소스 지역(Image Builder가 명령을 실행하는 동일한 지역)에 있어야 합니다. 파일을 **create-image-recipe**(으)로 저장하고 `create-image-recipe.json` 명령에 사용합니다. 

   ```
   {
   "name": "BB Ubuntu Image recipe",
   "description": "Hello World image recipe for Linux.",
   "parentImage": "ami-1234567890abcdef1",
   "semanticVersion": "1.0.0",
   "components": [
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/bb$"
   	}
   ],
   "additionalInstanceConfiguration": {
   	"systemsManagerAgent": {
   	 	"uninstallAfterBuild": true
   	},
   	"userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg=="
   }
   }
   ```

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

   다음 예제는 최신 버전의 Windows Server 2016 영어 풀 베이스 이미지를 참조합니다. 이 예제의 ARN은 지정한 의미 체계 버전 필터를 기반으로 최신 이미지를 참조합니다`arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x`.

   ```
   {
   "name": "MyBasicRecipe",
   "description": "This example image recipe creates a Windows 2016 image.",
   "parentImage": "arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x",
   "semanticVersion": "1.0.0",
   "components": [
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/my-example-component/2019.12.02/1"
   	},
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/my-imported-component/1.0.0/1"
   	}
   ]
   }
   ```

**참고**  
Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.

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

   다음 예제의 기본 이미지(`parentImage` 속성)는 AMI입니다. AMI를 사용하는 경우 AMI에 액세스할 수 있어야 하며 AMI는 소스 지역(Image Builder가 명령을 실행하는 동일한 지역)에 있어야 합니다. 파일을 **create-image-recipe**(으)로 저장하고 `create-image-recipe.json` 명령에 사용합니다. 

   ```
   {
   "name": "macOS Catalina Image recipe",
   "description": "Hello World image recipe for macOS.",
   "parentImage": "ami-1234567890abcdef1",
   "semanticVersion": "1.0.0",
   "components": [
   	{
   		"componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/catalina$"
   	}
   ],
   "additionalInstanceConfiguration": {
   	"systemsManagerAgent": {
   	 	"uninstallAfterBuild": true
   	},
   	"userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg=="
   }
   }
   ```

------

   **예: 구성 요소가 없는 레시피**

   기존 AMIs 또는 배포 전용 워크플로를 테스트하기 위해 구성 요소 없이 레시피를 생성할 수 있습니다. 다음 예제에서는 추가 구성 요소를 적용하지 않고 기존 AMI를 사용하는 레시피를 보여줍니다.

   ```
   {
   	"name": "Test Distribution Recipe",
   	"description": "Recipe for testing and distributing existing AMI without modifications.",
   	"parentImage": "ami-1234567890abcdef1",
   	"semanticVersion": "1.0.0",
   	"additionalInstanceConfiguration": {
   		"systemsManagerAgent": {
   		 	"uninstallAfterBuild": true
   		}
   	}
   }
   ```

1. 

**레시피 생성**

   다음 명령을 사용하여 레시피를 생성합니다. 이전 단계에서 생성한 JSON 파일의 이름을 `--cli-input-json` 파라미터에 입력합니다.

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

   최종 이미지에는 AWS Marketplace 이미지 제품 및 구성 요소의 제품 코드가 최대 4개까지 포함될 수 있습니다. 선택한 기본 이미지와 구성 요소에 4개 이상의 제품 코드가 포함된 경우 Image Builder는 `create-image-recipe` 명령을 실행할 때 오류를 반환합니다.

## 콘솔에서 VM을 기본 이미지로 가져옵니다.
<a name="import-vm-recipes"></a>

이 섹션에서는 가상 머신(VM)을 이미지 레시피의 기본 이미지로 가져오는 방법을 중점적으로 다룹니다. 레시피 또는 레시피 버전 생성과 관련된 다른 단계는 여기서 다루지 않습니다. Image Builder 콘솔에서 파이프라인 생성 마법사를 사용하여 새 이미지 레시피를 생성하는 추가 단계는 [파이프라인 마법사: AMI 생성](start-build-image-pipeline.md)(을)를 참조하십시오. 새 이미지 레시피 또는 레시피 버전을 생성하기 위한 추가 단계는 [이미지 레시피의 새 버전 생성](#create-image-recipes)(을)를 참조하십시오.

Image Builder 콘솔에서 VM을 이미지 레시피의 기본 이미지로 가져오려면 다음 단계와 기타 필수 단계를 따라 레시피 또는 레시피 버전을 생성하십시오.

1. 기본 이미지의 **이미지 선택** 섹션에서 **기본 이미지 가져오기** 옵션을 선택합니다.

1. 평소와 같이 **이미지 운영 체제 (OS)**와 **OS 버전**을 선택합니다.

### VM 가져오기 구성
<a name="import-vm-recipe-console-config"></a>

가상화 환경에서 VM을 내보내는 경우 이 프로세스는 VM 환경, 설정 및 데이터의 스냅샷 역할을 하는 하나 이상의 디스크 컨테이너 파일 세트를 만듭니다. 이러한 파일을 사용하여 VM을 이미지 레시피의 기본 이미지로 가져올 수 있습니다. Image Builder에서 VM을 가져오는 작업에 대한 자세한 내용은 [VM 이미지 가져오기 및 내보내기](vm-import-export.md)(을)를 참조하십시오.

가져오기 소스의 위치를 지정하려면 다음 단계를 따르세요.

**소스 가져오기**  
**디스크 컨테이너 1** 섹션에서 가져올 첫 번째 VM 이미지 디스크 컨테이너 또는 스냅샷의 소스를 지정합니다.

1. **소스** - S3 버킷 또는 EBS 스냅샷일 수 있습니다.

1. **디스크의 S3 위치 선택** - 디스크 이미지가 저장되어 있는 Amazon S3의 위치를 입력합니다. 위치를 찾아보려면 **S3 찾아보기**를 선택합니다.

1. 디스크 컨테이너를 추가하려면 **디스크 컨테이너 추가**를 선택합니다.

**IAM 역할**  
IAM 역할을 VM 가져오기 구성에 연결하려면 **IAM 역할** 드롭다운 목록에서 역할을 선택하거나 **새로운 역할 생성**을 선택하여 새 역할을 생성합니다. 새 역할을 생성하면 IAM 역할 콘솔 페이지가 별도의 탭에 열립니다.

#### 고급 설정 - *선택 사항*
<a name="import-vm-recipe-console-opt"></a>

다음 설정은 선택 사항입니다. 이러한 설정을 사용하여 가져오기로 생성되는 기본 이미지에 대한 암호화, 라이선스, 태그 등을 구성할 수 있습니다.

**일반**

1. 기본 이미지에 고유한 **이름**을 지정합니다. 값을 입력하지 않으면 기본 이미지가 레시피 이름을 상속합니다.

1. 기본 이미지의 **버전**을 지정합니다. `<major>.<minor>.<patch>` 형식을 사용합니다. 값을 입력하지 않으면 기본 이미지가 레시피 버전을 상속합니다.

1. 기본 이미지에 대한 **설명**을 입력할 수도 있습니다.

**기본 이미지 아키텍처**  
VM 가져오기 소스의 아키텍처를 지정하려면 **아키텍처** 목록에서 값을 선택합니다.

**암호화(Encryption)**  
VM 디스크 이미지가 암호화된 경우 가져오기 프로세스에 사용할 키를 제공해야 합니다. 가져오기에 AWS KMS key 대한를 지정하려면 **암호화(KMS 키)** 목록에서 값을 선택합니다. 목록에는 현재 리전에서 사용자 계정이 액세스할 수 있는 KMS 키가 포함되어 있습니다.

**라이선스 관리**  
VM을 가져오면 가져오기 프로세스에서 VM OS를 자동으로 탐지하고 적절한 라이선스를 기본 이미지에 적용합니다. OS 플랫폼에 따라 라이선스 유형은 다음과 같습니다.
+ **라이선스 포함** - 플랫폼에 적합한 AWS 라이선스가 기본 이미지에 적용됩니다.
+ **기존 보유 라이선스 사용(BYOL)** - 해당하는 경우 VM의 라이선스를 유지합니다.

로 생성된 라이선스 구성을 기본 이미지 AWS License Manager 에 연결하려면 **라이선스 구성 이름** 목록에서를 선택합니다. License Manager에 대한 자세한 내용은 [작업 단원을 참조하십시오. AWS License Manager]()

**참고**  
라이선스 구성은 기업 계약 조건에 기반한 라이선스 규칙을 포함합니다.
Linux는 BYOL 라이선스만 지원합니다.

**태그(기본 이미지)**  
태그는 키-값 페어를 사용하여 검색 가능한 텍스트를 Image Builder 리소스에 할당합니다. 가져온 기본 이미지에 태그를 지정하려면 **키** 및 **값** 상자에 키-값 페어를 입력합니다.

태그를 추가하려면 **태그 추가**를 선택합니다. 태그를 제거하려면 **태그 제거**를 선택합니다.

# 컨테이너 레시피의 새 버전 생성
<a name="create-container-recipes"></a>

이 섹션에서는 컨테이너 레시피의 새 버전을 생성하는 방법을 보여줍니다.

**Topics**
+ [콘솔을 사용하여 새 컨테이너 레시피 버전 생성](#create-container-recipe-version)
+ [를 사용하여 컨테이너 레시피 생성 AWS CLI](#create-container-recipe-cli)

## 콘솔을 사용하여 새 컨테이너 레시피 버전 생성
<a name="create-container-recipe-version"></a>

컨테이너 레시피의 새 버전을 만드는 것은 새 레시피를 만드는 것과 거의 같습니다. 차이점은 대부분의 경우 기본 레시피와 일치하도록 특정 세부 정보가 미리 선택된다는 것입니다. 다음 목록은 새 레시피 생성과 기존 레시피의 새 버전 생성 간의 차이점을 설명합니다.

**레시피 세부 정보**
+ **이름** - *편집할 수 없습니다*.
+ **버전** – 필수입니다. 이 세부 정보는 현재 버전이나 다른 종류의 시퀀스로 미리 채워져 있지 않습니다. 만들려는 버전 번호를 *major.minor.patch* 형식으로 입력합니다. 버전이 이미 있는 경우 오류가 발생합니다.

**기본 이미지**
+ **이미지 옵션** 선택 - 미리 선택되었지만 편집할 수 있습니다. 기본 이미지의 소스 선택을 변경하면 선택한 원본 옵션에 따라 달라지는 기타 세부 정보가 손실될 수 있습니다.

  Docker 컨테이너 이미지의 경우 DockerHub에서 호스팅되는 공용 이미지, Amazon ECR의 기존 컨테이너 이미지 또는 Amazon에서 관리하는 컨테이너 이미지 중에서 선택할 수 있습니다. 기본 이미지 선택과 관련된 세부 정보를 보려면 선택 항목과 일치하는 탭을 선택하십시오.

------
#### [ Managed images ]
  + **이미지 운영 체제(OS)** - *편집할 수 없습니다*.
  + **이미지 이름** - 기존 레시피에 대해 선택한 기본 이미지 조합을 기반으로 미리 선택됩니다. 하지만 **이미지 선택** 옵션을 변경하면 미리 선택한 **이미지 이름**을 잃게 됩니다.
  + **자동 버전 관리 옵션** - 기본 레시피와 일치하지 *않습니다*. 자동 버전 관리 옵션은 기본적으로 **선택한 OS 버전 사용** 옵션으로 설정됩니다.
**중요**  
시맨틱 버전 관리를 사용하여 파이프라인 빌드를 시작하는 경우 이 값을 **사용 가능한 최신 OS 버전 사용**으로 변경해야 합니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.

------
#### [ ECR image ]
  + **이미지 운영 체제(OS)** - 미리 선택되었지만 편집 가능합니다.
  + **OS 버전** - 미리 선택되었지만 편집할 수 있습니다.
  + **ECR 이미지 ID** - 미리 입력되었지만 편집할 수 있습니다.

------
#### [ Docker Hub image ]
  + **이미지 운영 체제(OS)** - *편집할 수 없습니다*.
  + **OS 버전** - 미리 선택되었지만 편집할 수 있습니다.
  + **도커 이미지 ID** - 미리 입력되지만 편집할 수 있습니다.

------

**인스턴스 구성**
+ **AMI 소스**(필수) - 컨테이너 빌드 및 테스트 인스턴스의 기본 이미지로 사용할 사용자 지정 AMI를 식별합니다. AMI ID 또는 AMI ID가 포함된 AWS Systems Manager (SSM) Parameter Store 파라미터일 수 있습니다.
  + **AMI ID** -이 설정은 원래 항목으로 미리 채워지지 않습니다. 기본 이미지의 AMI ID를 입력합니다. 예시: `ami-1234567890abcdef1`.
  + **SSM 파라미터** - 기본 이미지의 AMI ID가 포함된 SSM 파라미터 스토어 파라미터의 이름 또는 ARN을 입력합니다. 예: `/ib/test/param` 또는 `arn:aws:ssm:us-east-1:111122223333:parameter/ib/test/param`.
+ 

**스토리지(볼륨)**  
**EBS 볼륨 1(AMI 루트)** - 미리 입력되어 있습니다. 루트 볼륨 **디바이스 이름**, **스냅샷** 또는 **IOPS** 선택은 편집할 수 없습니다. 하지만 **크기**와 같은 나머지 설정은 모두 변경할 수 있습니다. 새 볼륨을 추가할 수도 있습니다.
**참고**  
다른 계정에서 공유된 기본 AMI를 지정한 경우, 지정된 보조 볼륨의 스냅샷도 계정과 공유해야 합니다.

**작업 디렉터리**
+ **작업 디렉터리 경로** - 미리 입력되지만 편집할 수 있습니다.

**구성 요소**
+ **구성 요소** - 레시피에 이미 포함된 구성 요소는 각 구성 요소 목록(빌드 및 테스트) 끝에 있는 **선택된 구성 요소** 섹션에 표시됩니다. 필요에 맞게 선택한 구성 요소를 제거하거나 재정렬할 수 있습니다.

  CIS 강화 구성 요소는 Image Builder 레시피의 표준 구성 요소 순서 지정 규칙을 따르지 않습니다. 출력 이미지에 대해 벤치마크 테스트가 실행되도록 하기 위해 CIS 강화 구성 요소는 항상 마지막에 실행됩니다.
**참고**  
빌드 및 테스트 구성 요소 목록에는 구성 요소 소유자 유형에 따라 사용 가능한 구성 요소가 표시됩니다. 구성 요소를 추가하려면 **빌드 구성 요소 추가**를 선택하고 적용되는 소유권 필터를 선택합니다. 예를 들어 AWS Marketplace 제품과 연결된 빌드 구성 요소를 추가하려면를 선택합니다`AWS Marketplace`. 그러면 구성 요소를 나열 AWS Marketplace 하는 콘솔 인터페이스 오른쪽에 선택 패널이 열립니다.  
CIS 구성 요소에서를 선택합니다`Third party managed`.

  선택한 구성 요소에 대해 다음 설정을 구성할 수 있습니다.
  + **버전 관리 옵션** - 미리 선택되어 있지만 변경할 수 있습니다. 이미지 빌드가 항상 최신 버전의 구성 요소를 사용하도록 하려면 **사용 가능한 최신 구성 요소 버전 사용** 옵션을 선택하는 것이 좋습니다. 레시피에서 특정 구성 요소 버전을 사용해야 하는 경우 **구성 요소 버전 지정**을 선택하고 나타나는 **구성 요소 버전** 상자에 버전을 입력할 수 있습니다.
  + **입력 파라미터** - 구성 요소가 받아들이는 입력 파라미터를 표시합니다. **값**은 이전 버전의 레시피 값으로 미리 채워집니다. 이 레시피에서 이 구성 요소를 처음 사용하고 입력 파라미터에 대해 기본값이 정의된 경우 기본값이 **값** 상자에 회색으로 표시된 텍스트와 함께 나타납니다. 값을 입력하지 않으면 Image Builder에서 기본값을 사용합니다.

    입력 파라미터가 필요하지만 구성 요소에 기본값이 정의되어 있지 않은 경우 값을 제공해야 합니다. 누락된 필수 파라미터가 있고 기본값이 정의되지 않은 경우 Image Builder는 레시피 버전을 생성하지 않습니다.
**중요**  
구성 요소 파라미터는 일반 텍스트 값이며 AWS CloudTrail에 기록됩니다. AWS Secrets Manager 또는 AWS Systems Manager 파라미터 스토어를 사용하여 보안 암호를 저장하는 것이 좋습니다. Secrets Manager에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [Secrets Manager란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하십시오. AWS Systems Manager Parameter Store에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) 섹션을 참조하십시오.

  **버전 관리 옵션** 또는 **입력 파라미터** 설정을 확장하려면 설정 이름 옆에 있는 화살표를 선택하면 됩니다. 선택한 모든 구성 요소의 모든 설정을 확장하려면 **모두 확장** 스위치를 끄고 켤 수 있습니다.

**Dockerfile 템플릿**
+ **Dockerfile 템플릿** - 미리 채워져 있지만 편집할 수 있습니다. Image Builder가 런타임 시 빌드 정보로 대체하는 다음과 같은 컨텍스트 변수를 지정할 수 있습니다.

     
**parentImage(필수)**  
빌드 시 이 변수는 레시피의 기본 이미지로 확인됩니다.  
예제:  

  ```
  FROM
  {{{ imagebuilder:parentImage }}}
  ```  
**환경(구성 요소가 지정된 경우 필수)**  
이 변수는 구성 요소를 실행하는 스크립트로 확인됩니다.  
예제:  

  ```
  {{{ imagebuilder:environments }}}
  ```  
**구성 요소(선택 사항)**  
Image Builder는 컨테이너 레시피에 포함된 구성 요소에 대한 빌드 및 테스트 구성 요소 스크립트를 확인합니다. 이 변수는 환경 변수 뒤에 Dockerfile의 아무 곳에나 배치할 수 있습니다.  
예제:  

  ```
  {{{ imagebuilder:components }}}
  ```

**대상 리포지토리**
+ **대상 리포지토리 이름** - 파이프라인이 실행되는 리전(리전 1) 에 대한 파이프라인 배포 구성에 지정된 다른 리포지토리가 없는 경우 출력 이미지가 저장되는 Amazon ECR 리포지토리입니다.

**새 컨테이너 레시피 버전을 생성하려면:**

1. 컨테이너 레시피 세부 정보 페이지 상단에서 **새 버전 생성**을 선택합니다. 컨테이너 레시피의 **레시피 생성** 페이지로 이동합니다.

1. 새 버전을 만들려면 변경한 다음 **레시피 생성**을 선택합니다.

이미지 파이프라인을 생성할 때 컨테이너 레시피를 생성하는 방법에 대한 자세한 내용은 이 가이드의 **시작하기** 섹션의 [2단계: 레시피 선택](start-build-container-pipeline.md#start-build-container-step2) 섹션을 참조하십시오.

## 를 사용하여 컨테이너 레시피 생성 AWS CLI
<a name="create-container-recipe-cli"></a>

의 `imagebuilder create-container-recipe` 명령을 사용하여 Image Builder 컨테이너 레시피를 생성하려면 다음 단계를 AWS CLI따릅니다.

**사전 조건**  
이 단원의 Image Builder 명령을 실행하여 로 컨테이너 레시피를 생성하기 전에 레시피가 사용할 구성 요소를 생성 AWS CLI해야 합니다. 다음 단계의 컨테이너 레시피 예제는 이 가이드의 [에서 사용자 지정 구성 요소 생성 AWS CLI](create-component.md#create-component-ib-cli) 섹션에서 만든 예제 구성 요소를 참조합니다.

구성 요소를 만든 후 또는 기존 구성 요소를 사용하는 경우, 레시피에 포함하려는 ARN을 기록해 두십시오.

1. 

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

   **create-container-recipe** 명령의 모든 입력을 인라인 명령 파라미터로 제공할 수 있습니다. 하지만 결과로 생성되는 명령은 상당히 길 수 있습니다. 명령을 간소화하기 위해 모든 컨테이너 레시피 설정이 포함된 JSON 파일을 대신 제공할 수 있습니다.
**참고**  
JSON 파일의 데이터 값에 대한 이름 지정 규칙은 Image Builder API 작업 요청 파라미터에 지정된 패턴을 따릅니다. API 작업 요청 파라미터를 검토하려면 *EC2 Image Builder API* 참조의 [CreateContainerRecipe](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateContainerRecipe.html) 명령을 참조하세요.  
데이터 값을 명령줄 파라미터로 제공하려면 *AWS CLI 명령 참조*에 지정된 파라미터 이름을 참조하십시오.

   다음은 이 예제의 파라미터를 요약한 것입니다.
   + **구성 요소**(객체 배열, 필수) - `ComponentConfiguration` 객체 배열을 포함합니다. 빌드 구성 요소를 하나 이상 지정해야 합니다.
**참고**  
Image Builder는 레시피에 지정한 순서대로 구성 요소를 설치합니다. 하지만 CIS 하드닝 구성 요소는 출력 이미지에 대해 벤치마크 테스트가 실행되도록 하기 위해 항상 마지막에 실행됩니다.
     + **componentARN**(문자열, 필수) – 구성 요소 ARN입니다.
**작은 정보**  
예제를 사용하여 자체 컨테이너 레시피를 생성하려면 예제 ARN을 레시피에 사용 중인 구성 요소의 ARN으로 바꾸십시오. 여기에는 각각의 AWS 리전, 이름, 버전 번호가 포함됩니다.
     + **파라미터**(객체 배열) - `ComponentParameter` 객체 배열을 포함합니다. 입력 파라미터가 필요하지만 구성 요소에 기본값이 정의되어 있지 않은 경우 값을 제공해야 합니다. 누락된 필수 파라미터가 있고 기본값이 정의되지 않은 경우 Image Builder는 레시피 버전을 생성하지 않습니다.
**중요**  
구성 요소 파라미터는 일반 텍스트 값이며 AWS CloudTrail에 기록됩니다. AWS Secrets Manager 또는 AWS Systems Manager 파라미터 스토어를 사용하여 보안 암호를 저장하는 것이 좋습니다. Secrets Manager에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [Secrets Manager란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하십시오. AWS Systems Manager Parameter Store에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) 섹션을 참조하십시오.
       + **이름**(문자열, 필수) — 설정할 구성 요소 파라미터의 이름입니다.
       + **값**(문자열 배열, 필수) - 명명된 구성 요소 파라미터의 값을 설정하는 문자열 배열을 포함합니다. 구성 요소에 대해 정의된 기본값이 있고 다른 값이 제공되지 않는 경우는 기본값을 AWSTOE 사용합니다.
   + **containerType**(문자열, 필수) - 생성할 컨테이너의 유형입니다. 유효한 값으로는 `DOCKER`가 포함됩니다.
   + **dockerfileTemplateData**(문자열) - 이미지를 빌드하는 데 사용되는 Dockerfile 템플릿으로, 인라인 데이터 블롭으로 표현됩니다.
   + **name**(문자열, 필수) - 컨테이너 레시피의 이름입니다.
   + **description**(문자열) - 컨테이너 레시피에 대한 설명입니다.
   + **parentImage**(문자열, 필수) - 컨테이너 레시피에서 사용자 지정 이미지의 기준으로 사용할 Docker 컨테이너 이미지입니다.
     + DockerHub에서 호스팅되는 퍼블릭 이미지
     + Amazon ECR의 기존 컨테이너 이미지
     + Amazon 관리형 컨테이너 이미지
   + **platformOverride**(문자열) – 사용자 지정 기본 이미지를 사용할 때 운영 체제 플랫폼을 지정합니다.
   + **semanticVersion**(문자열, 필수) - 다음 형식으로 지정된 컨테이너 레시피의 의미 체계 버전으로, 각 위치에는 특정 버전 *<major>.<minor>.<patch>*를 나타내는 숫자 값이 있습니다. 예를 들어 `1.0.0`(이)가 됩니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 [Image Builder의 의미 체계 버전 관리](ibhow-semantic-versioning.md)(을)를 참조하십시오.
   + **tags**(문자열 맵) – 컨테이너 레시피에 연결되는 태그입니다.
   + **instanceConfiguration**(객체) – 컨테이너 이미지를 빌드하고 테스트하기 위해 인스턴스를 구성하는 데 사용할 수 있는 옵션 그룹입니다.
     + **이미지**(문자열) - 컨테이너 빌드 및 테스트 인스턴스의 기본 이미지입니다. 여기에는 AMI ID가 포함되거나 접두사가 인 AWS Systems Manager (SSM) 파라미터 스토어 파라미터를 지정한 `ssm:`다음 파라미터 이름 또는 ARN을 지정할 수 있습니다. SSM 파라미터를 사용하는 경우 파라미터 값에 AMI ID가 포함되어야 합니다. 기본 이미지를 지정하지 않으면 Image Builder는 적절한 Amazon ECS 최적화 AMI를 기본 이미지로 사용합니다.
     + **blockDeviceMappings**(객체 배열) - **image** 파라미터에 지정된 이미지 빌더 AMI에서 인스턴스를 빌드하기 위해 연결할 블록 디바이스를 정의합니다.
       + **deviceName**(문자열) - 이러한 매핑이 적용되는 디바이스입니다.
       + **ebs**(객체) – 이 매핑에 대한 Amazon EBS 특정 구성을 관리하는 데 사용합니다.
         + **deleteOnTermination**(부울) – 연결된 디바이스의 종료 시 삭제를 구성하는 데 사용합니다.
         + **encrypted**(부울) – 장치 암호화를 구성하는 데 사용됩니다.
         + **volumeSize**(정수) - 디바이스의 볼륨 크기를 재정의하는 데 사용됩니다.
         + **volumeType(문자열)** - 디바이스의 볼륨 유형을 재정의하는 데 사용됩니다.
   + **targetRepository**(객체, 필수) - 파이프라인이 실행되는 리전(리전 1) 에 대한 파이프라인 배포 구성에 지정된 다른 리포지토리가 없는 경우 컨테이너 이미지의 대상 리포지토리입니다.
     + **repositoryName**(문자열, 필수) – 출력 컨테이너 이미지가 저장되는 컨테이너 리포지토리의 이름입니다. 이 이름에 리포지토리 위치가 접두사로 추가됩니다.
     + **service**(문자열, 필수) – 이 이미지가 등록된 서비스를 지정합니다.
   + **workingDirectory**(문자열) – 구축 및 테스트 워크플로 중에 사용할 작업 디렉터리입니다.

   ```
   {
   	"components": [ 
   	  { 
   		 "componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/helloworldal2/x.x.x"
   	  }
   	],
   	"containerType": "DOCKER",
   	"description": "My Linux Docker container image",
   	"dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}",
   	"name": "amazonlinux-container-recipe",
   	"parentImage": "amazonlinux:latest",
   	"platformOverride": "Linux",
   	"semanticVersion": "1.0.2",
   	"tags": { 
   	  "sometag" : "Tag detail" 
   	},
   	"instanceConfiguration": {
   	  "image": "ami-1234567890abcdef1",
   	  "blockDeviceMappings": [
   		 {
   			"deviceName": "/dev/xvda",
   			"ebs": {
   				"deleteOnTermination": true,
   				"encrypted": false,
   				"volumeSize": 8,
   				"volumeType": "gp2"
   			 }
   		  }			
   	  ]
   	},
   	"targetRepository": { 
   	  "repositoryName": "myrepo",
   	  "service": "ECR"
   	},
   	"workingDirectory": "/tmp"
   }
   ```

1. 

**레시피 생성**

   다음 명령을 사용하여 레시피를 생성합니다. 이전 단계에서 생성한 JSON 파일의 이름을 `--cli-input-json` 파라미터에 입력합니다.

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

## 리소스 정리
<a name="recipes-cleanup"></a>

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

# Image Builder 인프라 구성 관리
<a name="manage-infra-config"></a>

인프라 구성을 사용하여 Image Builder가 EC2 Image Builder 이미지를 구축하고 테스트하는 데 사용하는 Amazon EC2 인프라를 지정할 수 있습니다. 인프라 설정은 다음과 같습니다.
+ 내 빌드 및 테스트 인프라의 인스턴스 유형. 인스턴스 유형을 두 개 이상 지정하는 것이 좋습니다. 이렇게 하면 Image Builder가 용량이 충분한 풀에서 인스턴스를 시작할 수 있기 때문입니다. 이렇게 하면 일시적인 빌드 실패를 줄일 수 있습니다.

  Mac 이미지의 경우 기본적으로 macOS 운영 체제를 지원하는 인스턴스 유형을 선택할 수 있습니다. 자세한 내용을 알아보려면 *Amazon EC2 사용 설명서*의 [Amazon EC2 Mac 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html)를 참조하세요.
+ 이미지에서 시작하는 인스턴스가 이동해야 하는 호스트, 호스트 배치 그룹 또는 가용 영역을 지정할 수 있는 인스턴스 배치 설정입니다.
+ 빌드 및 테스트 인스턴스에 사용자 지정 활동을 수행하는 데 필요한 권한을 제공하는 인스턴스 프로파일입니다. 예를 들어 Amazon S3에서 리소스를 불러오는 구성 요소가 있는 경우 그 인스턴스 프로파일에는 해당 파일에 액세스할 수 있는 권한이 필요합니다. 또한 인스턴스 프로파일에는 EC2 Image Builder가 인스턴스와 성공적으로 통신하기 위한 최소한의 권한 세트가 필요합니다. 자세한 내용은 [Image Builder를 사용하여 사용자 지정 이미지를 빌드하도록 설정](set-up-ib-env.md) 단원을 참조하십시오.
+ 파이프라인 빌드 및 테스트 인스턴스의 VPC, 서브넷 및 보안 그룹.
+ Image Builder가 내 빌드 및 테스트의 애플리케이션 로그를 저장하는 Amazon S3 위치입니다. 로깅을 구성하는 경우 인프라 구성에 지정된 인스턴스 프로파일에 대상 버킷(`arn:aws:s3:::BucketName/*`)에 대한 `s3:PutObject` 권한이 있어야 합니다.
+ 빌드가 실패하고 `terminateInstanceOnFailure`(을)를 `false`(으)로 설정한 경우 인스턴스에 로그온하여 문제를 해결할 수 있게 해주는 Amazon EC2 키 페어입니다.
+ Image Builder에서 이벤트 알림을 보내는 SNS 주제입니다. Image Builder가 Amazon SNS와 어떻게 연동되는지에 관한 자세한 내용은 [Image Builder에서의 Amazon SNS 통합](integ-sns.md) 섹션을 참조하세요.
**참고**  
SNS 주제가 암호화된 경우 이 주제를 암호화하는 키는 Image Builder 서비스가 실행되는 계정에 있어야 합니다. Image Builder는 다른 계정의 키로 암호화된 SNS 주제에 알림을 보낼 수 없습니다.

Image Builder 콘솔, Image Builder API 또는 AWS CLI의 **imagebuilder** 명령을 사용하여 인프라 구성을 생성하고 관리할 수 있습니다.

**Topics**
+ [인프라 구성 세부 정보 나열 및 보기](infra-config-details.md)
+ [인프라 구성 생성](create-infra-config.md)
+ [인프라 구성 업데이트](update-infra-config.md)
+ [Image Builder 및 AWS PrivateLink 인터페이스 VPC 엔드포인트](vpc-interface-endpoints.md)

**작은 정보**  
동일한 유형의 리소스가 여러 개 있는 경우 태그를 지정하면 할당한 태그에 따라 특정 리소스를 식별하는 데 도움이 됩니다. 에서 Image Builder 명령을 사용하여 리소스에 태그를 지정하는 방법에 대한 자세한 내용은이 가이드의 [리소스 태깅](tag-resources.md) 섹션을 AWS CLI참조하세요.

# 인프라 구성 세부 정보 나열 및 보기
<a name="infra-config-details"></a>

이 섹션에서는 EC2 Image Builder 인프라 구성에 대한 정보를 찾고 세부 정보를 볼 수 있는 다양한 방법을 설명합니다.

**Topics**
+ [에서 인프라 구성 나열 AWS CLI](#cli-list-infrastructure-configurations)
+ [에서 인프라 구성 세부 정보 가져오기 AWS CLI](#cli-get-infrastructure-configuration-details)

## 에서 인프라 구성 나열 AWS CLI
<a name="cli-list-infrastructure-configurations"></a>

다음 예제에서는 AWS CLI에서 **[list-infrastructure-configurations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-infrastructure-configurations.html)** 명령을 사용하여 모든 내 인프라 구성을 모두 나열하는 방법을 보여 줍니다.

```
aws imagebuilder list-infrastructure-configurations
```

## 에서 인프라 구성 세부 정보 가져오기 AWS CLI
<a name="cli-get-infrastructure-configuration-details"></a>

다음 예제에서는에서 **[get-infrastructure-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-infrastructure-configuration.html)** 명령을 사용하여 Amazon 리소스 이름(ARN)을 지정하여 인프라 구성의 세부 정보를 AWS CLI 가져오는 방법을 보여줍니다.

```
aws imagebuilder get-infrastructure-configuration --infrastructure-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration
```

# 인프라 구성 생성
<a name="create-infra-config"></a>

이 섹션에서는 Image Builder 콘솔 또는의 **imagebuilder** 명령을 사용하여 인프라 구성을 AWS CLI 생성하는 방법을 설명합니다.

------
#### [ Console ]

Image Builder 콘솔에서 인프라 구성 리소스를 생성하려면 다음 단계를 따르세요.

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

1. 탐색 창에서 **인프라 구성**을 선택합니다.

1. **인프라 구성 생성**을 선택합니다.

1. **일반** 섹션에서 다음 정보를 입력합니다.
   + 인프라 구성 리소스의 **이름**을 입력합니다.
   + 빌드 및 테스트 인스턴스에서 구성 요소 권한을 위해 인스턴스 프로파일과 연결할 **IAM 역할**을 선택합니다. Image Builder는 이러한 권한을 사용하여 구성 요소를 다운로드 및 실행하고, CloudWatch에 로그를 업로드하고, 내 레시피의 구성 요소가 지정하는 추가 작업을 수행합니다.

1. **AWS 인프라** 패널에서 사용 가능한 나머지 인프라 설정을 구성할 수 있습니다. 다음 필수 정보를 입력합니다.
   + **인스턴스 유형** - 이 빌드에 사용할 하나 이상의 인스턴스 유형을 지정할 수 있습니다. 서비스가 가용 여부에 따라 이러한 인스턴스 유형 중 하나를 선택할 것입니다.
**참고**  
Mac 인스턴스는 전용 호스트의 `.metal` 인스턴스 유형에서 실행됩니다. 인스턴스 유형은 인스턴스가 실행되는 호스트에 대해 정의된 유형 중 하나와 일치해야 합니다. Mac 인스턴스 및 macOS 운영 체제를 기본적으로 지원하는 인스턴스 유형 목록에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2 Mac 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html)를 참조하세요.
   + **SNS 주제(선택 사항)** - EC2 Image Builder에서 알림 및 경보를 받으려면 SNS 주제를 선택합니다.

   다음 설정에 값을 제공하지 않으면 해당하는 경우 서비스별 기본값이 사용됩니다.
   + **VPC, 서브넷 및 보안 그룹** — Image Builder는 기본 VPC와 서브넷을 사용합니다. VPC 인터페이스 엔드포인트를 구성하는 방법에 대한 자세한 내용은 [Image Builder 및 AWS PrivateLink 인터페이스 VPC 엔드포인트](vpc-interface-endpoints.md) 섹션을 참조하세요.
   + **문제 해결 설정** 섹션에서 다음 값을 구성할 수 있습니다.
     + 기본적으로 **실패 시 인스턴스 종료** 확인란이 선택되어 있습니다. 하지만 빌드가 실패하는 경우 EC2 인스턴스에 로그온하여 문제를 해결할 수 있습니다. 빌드 실패 후에도 인스턴스를 계속 실행하려면 확인란의 선택을 취소하세요.
     + **키 페어** - 빌드 실패 후에도 EC2 인스턴스가 계속 실행되는 경우, 키 페어를 생성하거나 기존 키 페어를 사용하여 인스턴스에 로그온하고 문제를 해결할 수 있습니다.
     + **로그** - Image Builder가 빌드 및 테스트 문제를 해결하는 데 도움이 되는 애플리케이션 로그를 작성할 수 있는 S3 버킷을 지정할 수 있습니다. S3 버킷을 지정하지 않는 경우 Image Builder는 애플리케이션 로그를 인스턴스에 기록합니다.
   + **인스턴스 메타데이터 설정** 섹션에서 Image Builder가 이미지를 빌드하고 테스트하는 데 사용하는 EC2 인스턴스에 적용할 다음 값을 구성할 수 있습니다.
     + **메타데이터 버전**을 선택하여 EC2에서 인스턴스 메타데이터 검색 요청에 서명된 토큰 헤더가 필요한지 여부를 결정합니다.
       + **V1 및 V2(토큰 선택 사항)** - 아무것도 선택하지 않은 경우의 기본값입니다.
       + **V2(토큰 필요)**
**참고**  
Image Builder가 파이프라인 빌드에서 시작하는 모든 EC2 인스턴스가 IMDSv2를 사용하도록 구성하여 인스턴스 메타데이터 검색 요청에 서명된 토큰 헤더가 필요하도록 하는 것이 좋습니다.
     + **메타데이터 토큰 응답 홉 제한** – 메타데이터 토큰이 이동할 수 있는 네트워크 홉 수입니다. 최소 홉: 1, 최대 홉: 64개, 기본값은 홉 1개입니다.
   + **인스턴스 배치 설정** 섹션에서 Image Builder가 이미지를 빌드하고 테스트하는 데 사용하는 EC2 인스턴스에 적용할 다음 값을 구성할 수 있습니다.
     + 이미지 생성 중에 Image Builder가 인스턴스를 시작하는 **가용 영역**을 선택할 수 있습니다.
     + 선택적으로 시작하는 인스턴스를 실행하는 서버에 대해 **테넌시**를 선택합니다. 기본적으로 EC2 인스턴스는 공유 테넌시 하드웨어에서 실행됩니다. 즉, 여러 AWS 계정 이 동일한 물리적 하드웨어를 공유할 수 있습니다. `dedicated` 테넌시가 있는 인스턴스는 단일 테넌트 하드웨어에서 실행됩니다. `host` 테넌시가 있는 인스턴스는 전용 호스트에서 실행됩니다.

       Mac 인스턴스에는 사용자 지정 이미지를 빌드하기 전에 사전 조건으로 생성된 전용 호스트가 필요합니다. macOS 이미지에 대해 `host`를 선택합니다. 그런 다음 대상 호스트 또는 호스트 리소스 그룹을 선택하여 인스턴스를 시작할 수 있지만 전용 호스트에 자동 배치가 활성화된 경우에는 필요하지 않습니다. 자세한 내용을 알아보려면 *Amazon EC2 사용 설명서*의 [자동 배치](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-understanding.html#dedicated-hosts-auto-placement)를 참조하세요.
       + **테넌시 호스트 ID** - 인스턴스가 실행되는 전용 호스트의 ID입니다.
       + **테넌시 호스트 리소스 그룹** - 인스턴스를 시작할 호스트 리소스 그룹의 Amazon 리소스 이름(ARN)입니다.

1. **인프라 태그** 섹션(선택 사항)에서 빌드 프로세스 중에 Image Builder가 시작하는 Amazon EC2 인스턴스에 메타데이터 태그를 할당할 수 있습니다. 태그를 키 값 페어로 입력합니다.

1. **태그** 섹션(선택 사항)에서 Image Builder가 출력으로 생성하는 인프라 구성 리소스에 메타데이터 태그를 할당할 수 있습니다. 태그를 키 값 페어로 입력합니다.

------
#### [ AWS CLI ]

다음 절차는 AWS CLI에서 Image Builder **[create-infrastructure-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-infrastructure-configuration.html)** 명령을 사용하여 이미지의 인프라를 구성하는 방법을 보여줍니다. 2단계의 명령은 1단계에서 생성한 파일을 가져옵니다. 이러한 예제에서는 1단계의 파일을 `create-infrastructure-configuration.json`이라고 합니다.

1. 

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

   다음 예제에서는 인프라 구성을 위해 생성할 수 있는 JSON 파일의 변형을 보여줍니다. 파일 편집 도구를 사용하여 자신만의 JSON 파일을 생성합니다.

   **예제 1: 실패한 빌드에서 인스턴스를 유지하기 위한 구성**

   이 예제에서는 두 개의 인스턴스 유형 `m5.large` 및 `m5.xlarge`를 지정합니다. 인스턴스 유형을 두 개 이상 지정하는 것이 좋습니다. 이렇게 하면 Image Builder가 용량이 충분한 풀에서 인스턴스를 시작할 수 있기 때문입니다. 이렇게 하면 일시적인 빌드 실패를 줄일 수 있습니다.

   `instanceProfileName`(은)는 프로파일이 사용자 지정 활동을 수행하는 데 필요한 권한을 인스턴스에 제공하는 인스턴스 프로파일을 지정합니다. 예를 들어 Amazon S3에서 리소스를 불러오는 구성 요소가 있는 경우 그 인스턴스 프로파일에는 해당 파일에 액세스할 수 있는 권한이 필요합니다. 또한 인스턴스 프로파일에는 EC2 Image Builder가 인스턴스와 성공적으로 통신하기 위한 최소한의 권한 세트가 필요합니다. 자세한 내용은 [Image Builder를 사용하여 사용자 지정 이미지를 빌드하도록 설정](set-up-ib-env.md) 단원을 참조하십시오.

   ```
   {
       "name": "ExampleInfraConfigDontTerminate",
       "description": "An example that will retain instances of failed builds",
       "instanceTypes": [
           "m5.large", "m5.xlarge"
       ],
       "instanceProfileName": "myIAMInstanceProfileName",
       "securityGroupIds": [
           "sg-12345678"
       ],
       "subnetId": "sub-12345678",
       "logging": {
           "s3Logs": {
               "s3BucketName": "my-logging-bucket",
               "s3KeyPrefix": "my-path"
           }
       },
       "keyPair": "myKeyPairName",
       "terminateInstanceOnFailure": false,
       "snsTopicArn": "arn:aws:sns:us-west-2:123456789012:MyTopic"
   }
   ```

**예제 2: 자동 배치를 사용한 macOS 구성**  
이 예제에서는 전용 호스트에 자동 배치가 활성화된 Mac 인스턴스의 인스턴스 유형과 배치를 지정합니다.

   ```
   {
      "name": "macOSInfraConfigAutoPlacement",
      "description": "An example infrastructure configuration for macOS.",
      "instanceProfileName": "EC2InstanceProfileForImageBuilder",
      "instanceTypes": ["mac1.metal, mac2.metal"],
      "terminateInstanceOnFailure": false,
      "placement": {
         "tenancy": "host"
      }
   }
   ```

**예제 3: 호스트 ID가 지정된 macOS 구성**  
이 예제에서는 특정 전용 호스트를 대상으로 하는 Mac 인스턴스의 인스턴스 유형과 배치를 지정합니다.

   ```
   {
      "name": "macOSInfraConfigHostPlacement",
      "description": "An example infrastructure configuration for macOS.",
      "instanceProfileName": "EC2InstanceProfileForImageBuilder",
      "instanceTypes": ["mac2-m1ultra.metal"],
      "terminateInstanceOnFailure": false,
      "placement": {
         "tenancy": "host",
         "hostId" : "h-1234567890abcdef0"
      }
   }
   ```

1. 

**다음 명령을 실행할 때 생성한 파일을 입력으로 사용합니다.**

   ```
   aws imagebuilder create-infrastructure-configuration --cli-input-json file://create-infrastructure-configuration.json
   ```

------

# 인프라 구성 업데이트
<a name="update-infra-config"></a>

이 섹션에서는에서 Image Builder 콘솔 또는 **imagebuilder** 명령을 사용하여 인프라 구성 리소스를 AWS CLI 업데이트하는 방법을 다룹니다. 리소스를 추적하려면 다음과 같이 태그를 적용할 수 있습니다. 태그를 키 값 페어로 입력합니다.
+ *리소스 태그*는 빌드 프로세스 중에 Image Builder가 시작하는 Amazon EC2 인스턴스에 메타데이터 태그를 할당합니다.
+ *태그*는 Image Builder가 출력으로 생성하는 인프라 구성 리소스에 메타데이터 태그를 할당합니다.

------
#### [ Console ]

Image Builder 콘솔에서 다음과 같은 인프라 구성 세부 정보를 편집할 수 있습니다.
+ 인프라 구성에 관한 **설명**.
+ 인스턴스 프로파일과 연결할 **IAM 역할**.
+ **AWS 인프라** - **인스턴스 유형** 및 알림을 위한 **SNS 주제** 포함.
+ **VPC, 서브넷 및 보안 그룹**.
+ ** 장애 발생 시 인스턴스 종료**, 연결을 위한 **키 페어**, 인스턴스 로그를 위한 선택적 S3 버킷 위치를 포함한 **문제 해결 설정**.

Image Builder 콘솔에서 인프라 구성 리소스를 업데이트하려면 다음 단계를 따르세요.

**기존 Image Builder 인프라 구성 선택**

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

1. 계정의 인프라 구성 리소스 목록을 보려면 탐색 창에서 **인프라 구성**을 선택합니다.

1. 세부 정보를 보거나 인프라 구성을 편집하려면 **구성 이름** 링크를 선택합니다. 이렇게 하면 인프라 구성에 대한 세부 정보 보기가 열립니다.
**참고**  
또한 **구성 이름** 옆에 있는 확인란을 선택한 다음 **세부 정보 보기**를 선택할 수 있습니다.

1. **인프라 세부 정보** 패널의 오른쪽 상단에서 **편집**을 선택합니다.

1. 인프라 구성에 적용한 업데이트를 저장할 준비가 되면 **변경 내용 저장**을 선택합니다.

------
#### [ AWS CLI ]

다음 예제는 AWS CLI에서 Image Builder **[update-infrastructure-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-infrastructure-configuration.html)** 명령을 사용하여 이미지의 인프라 구성을 업데이트하는 방법을 보여줍니다.

1. 

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

   이 인프라 구성 예제는 설정을 `false`(으)로 업데이트했다는 점을 제외하면 생성 예제와 동일한 `terminateInstanceOnFailure` 설정을 사용합니다. **update-infrastructure-configuration** 명령을 실행하면 이 인프라 구성을 사용하는 파이프라인이 빌드를 종료하고 빌드가 실패하면 인스턴스를 테스트합니다.

   파일 편집 도구를 사용하여 다음 예제에 표시된 키와 환경에 유효한 값을 포함하는 JSON 파일을 생성합니다. 이 예제에서는 `update-infrastructure-configuration.json`(이)라는 이름의 파일이 사용됩니다.

   ```
   {
   "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration",
   "description": "An example that will terminate instances of failed builds",
   "instanceTypes": [
       "m5.large", "m5.2xlarge"
   ],
   "instanceProfileName": "myIAMInstanceProfileName",
   "securityGroupIds": [
       "sg-12345678"
   ],
   "subnetId": "sub-12345678",
   "logging": {
       "s3Logs": {
           "s3BucketName": "my-logging-bucket",
           "s3KeyPrefix": "my-path"
       }
   },
   "terminateInstanceOnFailure": true,
   "snsTopicArn": "arn:aws:sns:us-west-2:123456789012:MyTopic"
   }
   ```

1. 

**다음 명령을 실행할 때 생성한 파일을 입력으로 사용합니다.**

   ```
   aws imagebuilder update-infrastructure-configuration --cli-input-json file://update-infrastructure-configuration.json
   ```

------

# Image Builder 및 AWS PrivateLink 인터페이스 VPC 엔드포인트
<a name="vpc-interface-endpoints"></a>

*인터페이스 VPC 엔드포인트*를 생성하여 VPC와 EC2 Image Builder 간에 프라이빗 연결을 설정할 수 있습니다. 인터페이스 엔드포인트는 인터넷 게이트웨이[AWS PrivateLink](https://aws.amazon.com/privatelink/), NAT 디바이스, VPN 연결 또는 Direct Connect 연결 없이 Image Builder APIs에 비공개로 액세스할 수 있는 기술로 구동됩니다. VPC의 인스턴스는 Image Builder API와 통신하는 데 퍼블릭 IP 주소를 필요로 하지 않습니다. VPC와 Image Builder 간 트래픽은 Amazon 네트워크를 벗어나지 않습니다.

각 인터페이스 엔드포인트는 서브넷에서 하나 이상의 [탄력적 네트워크 인터페이스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)로 표현됩니다. 새 이미지를 생성할 때 인프라 구성에서 VPC 서브넷 ID를 지정할 수 있습니다.

**참고**  
VPC 내에서 액세스하는 각 서비스에는 자체 엔드포인트 정책이 있는 자체 인터페이스 엔드포인트가 있습니다. Image Builder는 AWSTOE 구성 요소 관리자 애플리케이션을 다운로드하고 S3 버킷에서 관리형 리소스에 액세스하여 사용자 지정 이미지를 생성합니다. 이러한 버킷에 대한 액세스 권한을 부여하려면 이를 허용하도록 S3 엔드포인트 정책을 업데이트해야 합니다. 자세한 내용은 [S3 버킷 액세스에 대한 사용자 지정 정책](#vpc-endpoint-policy-s3) 섹션을 참조하세요.

VPC 엔드포인트에 대한 자세한 정보는 *Amazon VPC 사용 설명서사용 설명서*의 [인터페이스 VPC 엔드포인트(AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)를 참조합니다.

## Image Builder VPC 엔드포인트에 대한 고려 사항
<a name="vpc-endpoint-considerations"></a>

Image Builder에 대한 인터페이스 VPC 엔드포인트를 설정하기 전에 *Amazon VPC 사용 설명서*에서 [인터페이스 엔드포인트 속성 및 제한 사항](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-interface-limitations)을 검토해야 합니다.

Image Builder는 VPC에서 모든 API 작업에 대한 호출 수행을 지원합니다.

## Image Builder용 인터페이스 VPC 엔드포인트 생성하기
<a name="vpc-endpoint-create"></a>

Image Builder 서비스에 대한 VPC 엔드포인트를 생성하려면 Amazon VPC 콘솔 또는 AWS Command Line Interface ()를 사용할 수 있습니다AWS CLI. 자세한 내용은 *Amazon VPC 사용 설명서(Amazon VPC User Guide)*의 [인터페이스 엔드포인트 생성(Creating an interface endpoint)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)을 참조합니다.

다음 서비스 이름을 사용하여 Image Builder용 VPC 엔드포인트를 생성합니다.
+ com.amazonaws.*region*.imagebuilder

엔드포인트에 프라이빗 DNS를 사용하도록 설정하는 경우, 리전에 대한 기본 DNS 이름(예: `imagebuilder.us-east-1.amazonaws.com`)을 사용하여 Image Builder에 API 요청을 할 수 있습니다. 대상 리전에 적용되는 엔드포인트를 조회하려면 *Amazon Web Services 일반 참조*의 [EC2 Image Builder 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#imagebuilder_region)을 참조합니다.

자세한 내용은 *Amazon VPC 사용 설명서(Amazon VPC User Guide)*의 [인터페이스 엔드포인트를 통해 서비스 액세스(Accessing a service through an interface endpoint)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#access-service-though-endpoint)를 참조합니다.

## Image Builder에 대한 VPC 엔드포인트 정책 생성하기
<a name="vpc-endpoint-policy"></a>

Image Builder에 대한 액세스를 제어하는 VPC 엔드포인트에 엔드포인트 정책을 연결할 수 있습니다. 이 정책은 다음 정보를 지정합니다.
+ 작업을 수행할 수 있는 위탁자.
+ 수행할 수 있는 작업.
+ 작업을 수행할 있는 리소스.

레시피에서 Amazon 관리 구성 요소를 사용하는 경우 Image Builder의 VPC 엔드포인트는 다음과 같은 서비스 소유 구성 요소 라이브러리에 대한 액세스를 허용해야 합니다.

`arn:aws:imagebuilder:region:aws:component/*`

**중요**  
기본값이 아닌 정책이 EC2 Image Builder의 인터페이스 VPC 엔드포인트에 적용되는 경우에서 실패하는 것과 같은 특정 실패한 API 요청은 AWS CloudTrail 또는 Amazon CloudWatch에 로깅되지 않을 `RequestLimitExceeded`수 있습니다.

자세한 내용은 *Amazon VPC 사용 설명서(Amazon VPC User Guide)*의 [VPC 엔드포인트를 통해 서비스에 대한 액세스 제어(Controlling access to services with VPC endpoints)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)를 참조합니다.

### S3 버킷 액세스에 대한 사용자 지정 정책
<a name="vpc-endpoint-policy-s3"></a>

Image Builder는 공개적으로 사용 가능한 S3 버킷을 사용하여 구성 요소와 같은 관리형 리소스를 저장하고 액세스합니다. 또한 별도의 S3 버킷에서 AWSTOE 구성 요소 관리 애플리케이션을 다운로드합니다. 환경에서 Amazon S3용 VPC 엔드포인트를 사용하는 경우, Image Builder가 다음 S3 버킷에 액세스할 수 있도록 S3 VPC 엔드포인트 정책이 허용되는지 확인해야 합니다. 버킷 이름은 AWS 리전(*리전*) 및 애플리케이션 환경(*환경*)별로 고유합니다. Image Builder 및는 `prod`, `preprod`및 애플리케이션 환경을 AWSTOE 지원합니다`beta`.
+  AWSTOE 구성 요소 관리자 버킷:

  ```
  s3://ec2imagebuilder-toe-region-environment
  ```

  **예:** s3://ec2imagebuilder-toe-us-west-2-prod/\$1
+ Image Builder는 리소스 버킷을 관리합니다.

  ```
  s3://ec2imagebuilder-managed-resources-region-environment/components
  ```

  **예:** s3://ec2imagebuilder-managed-resources-us-west-2-prod/components/\$1

### VPC 엔드포인트 정책 예제
<a name="vpc-endpoint-policy-examples"></a>

이 섹션에는 사용자 지정 VPC 엔드포인트 정책의 예가 포함되어 있습니다.

**Image Builder 작업에 대한 일반 VPC 엔드포인트 정책**  
Image Builder에 대한 다음 예제 엔드포인트 정책은 Image Builder 이미지 및 구성 요소 삭제 권한을 거부합니다. 또한 이 정책 예에서는 다른 모든 EC2 Image Builder 작업을 수행할 수 있는 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "imagebuilder:*",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": "imagebuilder:DeleteImage",
            "Effect": "Deny",
            "Resource": "*"
        },
        {
            "Action": "imagebuilder:DeleteComponent",
            "Effect": "Deny",
            "Resource": "*"
        }
    ]
}
```

------

**조직별 액세스 제한, 관리되는 구성 요소 액세스 허용하기**  
다음 예제 엔드포인트 정책은 조직에 속한 아이덴티와 리소스에 대한 액세스를 제한하고 Amazon 관리형 Image Builder 구성 요소에 대한 액세스를 제공하는 방법을 보여줍니다. *region*, *principal-org-id* 및 *resource-org-id*를 해당 조직의 값으로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "principal-org-id",
                    "aws:ResourceOrgID": "resource-org-id"
                }
            }
        },
        {
            "Sid": "AllowAccessToEC2ImageBuilderComponents",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "imagebuilder:GetComponent"
            ],
            "Resource": [
                "arn:aws:imagebuilder:us-east-1:aws:component/*"
            ]
        }
    ]
}
```

------

**Amazon S3 버킷 액세스에 대한 VPC 엔드포인트 정책**  
다음 S3 엔드포인트 정책 예제는 Image Builder가 사용자 지정 이미지를 구축하는 데 사용하는 S3 버킷에 대한 액세스를 제공하는 방법을 보여줍니다. *리전* 및 *환경*을 해당 조직의 값으로 바꿉니다. 애플리케이션 요구 사항에 따라 기타 필수 권한을 정책에 추가합니다.

**참고**  
Linux 이미지의 경우 이미지 레시피에 사용자 데이터를 지정하지 않으면 Image Builder는 스크립트를 추가하여 이미지의 빌드 및 테스트 인스턴스에 Systems Manager 에이전트를 다운로드하고 설치합니다. 에이전트를 다운로드하기 위해 Image Builder는 빌드 리전의 S3 버킷에 액세스합니다.  
Image Builder가 빌드 및 테스트 인스턴스를 부트스트랩할 수 있도록 하려면 S3 엔드포인트 정책에 다음과 같은 다른 리소스를 추가합니다.  
"`arn:aws:s3:::amazon-ssm-region/*`"

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowImageBuilderAccessToAppAndComponentBuckets",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::ec2imagebuilder-toe-region-environment/*",
        "arn:aws:s3:::ec2imagebuilder-managed-resources-region-environment/components/*"
      ]
    }
  ]
}
```

------

# Image Builder 배포 설정 관리
<a name="manage-distribution-settings"></a>

출력 이미지에 대한 배포 설정을 구성하기 전에 배포 대상 리전의 출력 이미지에서 시작된 인스턴스에 대한 기본 인프라 또는 기타 요구 사항의 가용성을 확인하는 것이 좋습니다. 예를 들어 일부 리전은 macOS 이미지에서 인스턴스를 시작하는 데 필요한 EC2 Mac 전용 호스트를 지원하지 않습니다. 전용 호스트의 인스턴스 유형 및 요금에 대한 자세한 내용은 [Amazon EC2 전용 호스트 요금](https://aws.amazon.com/ec2/dedicated-hosts/pricing/) 섹션을 참조하세요.

Image Builder로 배포 설정을 생성한 후 Image Builder 콘솔, Image Builder API 또는 AWS CLI의 **imagebuilder** 명령을 사용하여 배포 설정을 관리할 수 있습니다. 배포 설정을 사용하면 다음 작업을 수행할 수 있습니다.

**AMI 배포**
+ 출력 AMI의 이름과 설명을 지정합니다.
+ 소유자의 계정에서 AMI를 시작할 수 있도록 다른 AWS 계정조직 및 OUs에 권한을 부여합니다. AMI와 관련된 요금은 소유자 계정으로 청구됩니다.
**참고**  
AMI를 공개하려면 시작 권한 승인 계정을 `all`(으)로 설정합니다. 자세한 내용 및 예제는 *Amazon EC2 API 참조*의 **[ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html)** 섹션을 참조하세요.
+ 대상 지역의 지정된 각 대상 계정, 조직 및 OU에 대해 출력 AMI의 사본을 생성합니다. 대상 계정, 조직 및 OU는 AMI 사본을 소유하며 모든 관련 요금이 청구됩니다. AMI를 AWS Organizations 및 OUs에 배포하는 방법에 대한 자세한 내용은 [조직 또는 OUs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html).
+ AMI를 다른의 소유자 계정에 복사합니다 AWS 리전.
+ VM 이미지 디스크를 Amazon Simple Storage Service(S3)로 내보냅니다. 자세한 내용은 [예:에서 출력 VM 디스크에 대한 배포 설정 생성 AWS CLI](cr-upd-ami-distribution-settings.md#cli-create-vm-dist-config) 단원을 참조하십시오.

**컨테이너 이미지 배포**
+ Image Builder가 배포 지역에 출력 이미지를 저장하는 ECR 리포지토리를 지정합니다.

다음과 같은 방법으로 배포 설정을 사용하여 대상 리전, 계정 AWS Organizations 및 조직 단위(OUs)에 이미지를 한 번 또는 모든 파이프라인 빌드와 함께 전송할 수 있습니다.
+ 업데이트된 이미지를 지정된 리전, 계정, 조직 및 OU에 자동으로 전송하려면 일정에 따라 실행되는 Image Builder 파이프라인과 함께 배포 설정을 사용하세요.
+ 새 이미지를 생성하여 지정된 리전, 계정, 조직 및 OU에 전달하려면, **작업** 메뉴의 **파이프라인 실행**을 사용하여 Image Builder 콘솔에서 한 번 실행하는 Image Builder 파이프라인과 함께 배포 설정을 사용하세요.
+ 새 이미지를 생성하여 지정된 리전, 계정, 조직 및 OU에 전달하려면 AWS CLI에서 다음 API 작업 또는 Image Builder 명령과 함께 배포 설정을 사용하세요.
  + Image Builder API에서 **[CreateImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateImage.html)** 작업.
  +  AWS CLI에서 **[create-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-image.html)** 명령.
+ 일반 이미지 빌드 프로세스의 일환으로 가상 머신(VM) 이미지 디스크를 대상 지역의 S3 버킷으로 내보내는 것입니다.

**작은 정보**  
동일한 유형의 리소스가 여러 개 있는 경우, 태그를 지정하면 할당한 태그에 따라 특정 리소스를 식별하는 데 도움이 됩니다. 에서 Image Builder 명령을 사용하여 리소스에 태그를 지정하는 방법에 대한 자세한 내용은이 가이드의 [리소스 태깅](tag-resources.md) 섹션을 AWS CLI참조하세요.

**Topics**
+ [배포 구성에 대한 세부 정보 나열 및 보기](distribution-settings-detail.md)
+ [AMI 배포 구성 생성 및 업데이트](cr-upd-ami-distribution-settings.md)
+ [컨테이너 이미지의 배포 설정 생성 및 업데이트](cr-upd-container-distribution-settings.md)
+ [Image Builder로 크로스 계정 AMI 배포 설정](cross-account-dist.md)
+ [EC2 시작 템플릿을 사용하여 AMI 배포 구성](dist-using-launch-template.md)
+ [향상된 AMI 배포 기능 사용](distribution-enhanced_functionality.md)

# 배포 구성에 대한 세부 정보 나열 및 보기
<a name="distribution-settings-detail"></a>

이 섹션에서는 EC2 Image Builder 배포 구성에 대한 정보를 찾고 세부 정보를 볼 수 있는 다양한 방법을 설명합니다.

**Topics**
+ [콘솔에서 배포 구성 나열](#list-distribution-config-console)
+ [콘솔에서 배포 구성 세부 정보 보기](#view-distribution-config-details-console)
+ [에서 배포 나열 AWS CLI](#cli-list-distributions)
+ [에서 배포 구성 세부 정보 가져오기 AWS CLI](#cli-get-distribution-configuration)

## 콘솔에서 배포 구성 나열
<a name="list-distribution-config-console"></a>

Image Builder 콘솔에서 사용자 계정으로 생성된 배포 구성 목록을 보려면 다음 단계를 따르세요.

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

1. 탐색 창에서 **배포 설정**을 선택합니다. 여기에는 사용자 계정에서 생성된 배포 구성 목록이 표시됩니다.

1. 세부 정보를 보거나 새 배포 구성을 만들려면 **구성 이름** 링크를 선택합니다. 이를 통해 배포 설정의 세부 정보 보기가 열립니다.
**참고**  
또한 **구성 이름** 옆에 있는 확인란을 선택한 다음 **세부 정보 보기**를 선택할 수 있습니다.

## 콘솔에서 배포 구성 세부 정보 보기
<a name="view-distribution-config-details-console"></a>

Image Builder 콘솔을 사용하여 특정 배포 구성의 세부 정보를 보려면 [콘솔에서 배포 구성 나열](#list-distribution-config-console)에 설명된 단계를 사용하여 검토할 구성을 선택합니다.

배포 세부 정보 페이지에서 다음을 수행할 수 있습니다.
+ 배포 구성을 **삭제**합니다. Image Builder에서 리소스 삭제에 대한 자세한 내용은 [오래되거나 사용되지 않는 Image Builder 리소스 삭제](delete-resources.md)(을)를 참조하세요.
+ 배포 세부 정보를 **편집**합니다.

## 에서 배포 나열 AWS CLI
<a name="cli-list-distributions"></a>

다음 예제에서는에서 **[list-distribution-configurations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-distribution-configurations.html)** 명령을 사용하여 모든 배포를 나열 AWS CLI 하는 방법을 보여줍니다.

```
aws imagebuilder list-distribution-configurations
```

## 에서 배포 구성 세부 정보 가져오기 AWS CLI
<a name="cli-get-distribution-configuration"></a>

다음 예제에서는에서 **[get-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-distribution-configuration.html)** 명령을 사용하여 Amazon 리소스 이름(ARN)을 지정하여 배포 구성의 세부 정보를 AWS CLI 가져오는 방법을 보여줍니다.

```
aws imagebuilder get-distribution-configuration --distribution-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-configuration
```

# AMI 배포 구성 생성 및 업데이트
<a name="cr-upd-ami-distribution-settings"></a>

이 섹션에서는 Image Builder AMI의 배포 구성을 생성하고 업데이트하는 방법을 다룹니다.

**Topics**
+ [AMI 배포 사전 조건](#ami-distribution-config-prereqs)
+ [AMI 배포 구성 생성](#create-ami-distribution-config)
+ [AMI 배포 구성 업데이트](#update-ami-distribution-config)
+ [예: 출력 AMIs용 시작 템플릿을 사용하여 EC2 Fast Launch 활성화](#create-ami-dist-win-fast-launch)
+ [예:에서 출력 VM 디스크에 대한 배포 설정 생성 AWS CLI](#cli-create-vm-dist-config)

## AMI 배포 사전 조건
<a name="ami-distribution-config-prereqs"></a>

일부 배포 설정에는 다음과 같은 사전 조건이 있습니다.

**Topics**
+ [SSM 출력 파라미터 사전 조건](#ami-distribution-prereqs-ssm-param)
+ [EC2 Fast Launch 사전 조건](#ami-distribution-prereqs-fast-launch)

### SSM 출력 파라미터의 사전 조건
<a name="ami-distribution-prereqs-ssm-param"></a>

 AWS Systems Manager Parameter Store 파라미터(SSM 파라미터)를 설정하는 새 AMI 배포 구성을 생성하기 전에 다음 사전 조건을 충족했는지 확인합니다.

**실행 역할**  
파이프라인을 생성하거나에서 create-image 명령을 사용하는 경우 Image Builder 실행 역할을 하나만 지정할 AWS CLI수 있습니다. Image Builder 워크플로 실행 역할을 정의한 경우 해당 역할에 추가 기능 권한을 추가합니다. 그렇지 않으면 필요한 권한이 포함된 새 사용자 지정 역할을 생성합니다.  
+ 배포 중에 출력 AMI ID를 SSM 파라미터에 저장하려면 Image Builder 실행 역할에서 `ssm:PutParameter` 작업을 지정하고 파라미터를 리소스로 나열해야 합니다.
+ 파라미터 데이터 형식을 로 설정`AWS EC2 Image`하여 파라미터 값을 AMI ID로 검증하도록 Systems Manager에 신호를 보내는 경우 `ec2:DescribeImages` 작업도 추가해야 합니다.

### EC2 Fast Launch의 사전 조건
<a name="ami-distribution-prereqs-fast-launch"></a>

Windows AMIs용 EC2 Fast Launch에 대한 새 배포 구성을 생성하기 전에 다음 사전 조건을 충족했는지 확인합니다.
+ EC2 Fast Launch를 구성할 때 사용자 지정 시작 템플릿을 제공하는 경우 서비스는 시작 템플릿에서 정의한 VPC와 기타 구성 설정을 사용합니다. 자세한 내용은 [ EC2 Fast Launch를 설정할 때 시작 템플릿 사용을 참조하세요](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/win-fast-launch-configure.html#win-fast-launch-with-template).
+ 사용자 지정 시작 템플릿을 사용하여 설정을 구성하지 않는 경우 Image Builder가 이미지를 생성하는 데 사용하는 IAM 역할에 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam-awsmanpol-EC2FastLaunchFullAccess.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam-awsmanpol-EC2FastLaunchFullAccess.html) 정책을 연결해야 합니다. 파이프라인을 생성하거나에서 create-image 명령을 사용하는 경우 Image Builder 실행 역할을 하나만 지정할 AWS CLI수 있습니다. Image Builder 워크플로 실행 역할을 정의한 경우 해당 역할에 추가 기능 권한을 추가합니다. 그렇지 않으면 필요한 권한이 포함된 새 사용자 지정 역할을 생성합니다.

  그런 다음 Image Builder가 이미지를 복사하면 EC2 Fast Launch는에 다음 리소스가 포함된 CloudFormation 스택을 자동으로 생성합니다 AWS 계정.
  + Virtual Private Cloud(VPC)
  + 여러 가용 영역의 프라이빗 서브넷
  + 인스턴스 메타데이터 서비스 버전 2(IMDSv2)로 구성된 시작 템플릿
  + 인바운드나 아웃바운드 규칙이 없는 보안 그룹

**참고**  
Image Builder는 EC2 Fast Launch가 사전 활성화된 AMI에 대한 교차 계정 배포를 지원하지 않습니다. 대상 계정에서 EC2 Fast Launch를 활성화해야 합니다.

## AMI 배포 구성 생성
<a name="create-ami-distribution-config"></a>

배포 구성에는 출력 AMI 이름, 암호화에 대한 특정 리전 설정, 시작 권한 AWS 계정, 출력 AMI를 시작할 수 있는 조직 및 조직 단위(OUs) 및 라이선스 구성이 포함됩니다.

배포 구성을 사용하면 출력 AMI의 이름과 설명을 지정하고, 다른 AWS 계정 에 AMI를 시작하고, AMI를 다른 계정에 복사하고, AMI를 다른 AWS 리전에 복제할 수 있는 권한을 부여할 수 있습니다. 또한 AMI를 Amazon Simple Storage Service(S3)로 내보내거나 출력 Windows AMI를 위한 EC2 Fast Launch를 구성할 수 있습니다. AMI를 공개하려면 시작 권한 승인 계정을 `all`(으)로 설정합니다. EC2 **[ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html)**에서 AMI를 공개하는 예를 참조하세요.

------
#### [ Console ]

 AWS Management Console다음 단계에 따라에서 새 AMI 배포 구성을 생성합니다.

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

1. 탐색 창에서 **배포 설정**을 선택합니다. 여기에는 사용자 계정에서 생성된 배포 구성 목록이 표시됩니다.

1. **배포 설정 패널** 상단에 있는 **배포 설정 만들기**를 선택합니다.

1. **이미지 유형** 섹션에서 **Amazon Machine Image(AMI)** 출력 유형을 선택합니다.

1. **일반** 섹션에서 배포 구성의 **이름**과 설명(선택 사항)을 입력합니다.

1. **리전 설정** 섹션에서 AMI를 배포하는 각 리전에 대해 다음 세부 정보를 입력합니다.

   1. AMI는 기본적으로 현재 리전(**리전 1**) 에 배포됩니다. **리전 1**은 배포의 소스입니다. **리전 1**의 일부 설정은 편집할 수 없습니다. 추가하는 모든 리전의 경우 지역 드롭다운 목록에서 **리전**을 선택할 수 있습니다.

      **Kms 키**는 대상 리전에서 이미지의 EBS 볼륨을 암호화하는 데 AWS KMS key 사용되는를 식별합니다. 참고로, 빌드가 소스 리전(**리전 1**)의 사용자 계정으로 생성한 원본 AMI에는 적용되지 않습니다. 빌드의 배포 단계에서 실행되는 암호화는 다른 계정이나 리전에 배포되는 이미지에만 적용됩니다.

      계정의 소스 지역에 생성된 AMI의 EBS 볼륨을 암호화하려면 이미지 레시피 블록 디바이스 매핑(콘솔의 **스토리지(볼륨)**)에서 KMS 키를 설정해야 합니다.

      Image Builder는 AMI를 리전에 지정한 **타겟 계정** 에 복사합니다.
**사전 조건**  
계정 간에 이미지를 복사하려면 모든 배포 대상 계정에서 `EC2ImageBuilderDistributionCrossAccountRole` 역할을 생성하고 [Ec2ImageBuilderCrossAccountDistributionAccess 정책](security-iam-awsmanpol.md#sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess) 관리형 정책을 역할에 연결해야 합니다.

      **출력 AMI 이름**은 선택 사항입니다. 이름을 제공하면 최종 출력 AMI 이름에는 AMI 구축 시점의 타임스탬프가 추가됩니다. 이름을 지정하지 않으면 Image Builder에서 레시피 이름에 빌드 타임스탬프를 추가합니다. 이를 통해 각 빌드에 대해 고유한 AMI 이름을 보장합니다.

      1. AMI 공유를 사용하면 지정된 AWS 보안 주체가 AMI에서 인스턴스를 시작할 수 있는 액세스 권한을 부여할 수 있습니다. **AMI 공유** 섹션을 확장하면 다음 세부 정보를 입력할 수 있습니다.
         + **시작 권한** - AMI를 **프라이빗**으로 유지하고 특정 AWS 보안 주체가 프라이빗 AMI에서 인스턴스를 시작할 수 있도록 액세스를 허용하려면 프라이빗을 선택합니다. AMI를 퍼블릭으로 설정하려면 **퍼블릭**을 선택합니다. 모든 AWS 보안 주체는 퍼블릭 AMI에서 인스턴스를 시작할 수 있습니다.
         + **보안 주체** - 인스턴스를 시작할 수 있도록 다음 유형의 AWS 보안 주체에 대한 액세스 권한을 부여할 수 있습니다.
           + **AWS 계정** - 특정 AWS 계정에 대한 액세스 권한 부여
           + **조직 구성 단위(OU)** - OU 및 모든 하위 엔티티에 대한 액세스 권한을 부여합니다. 하위 엔터티에는 OUs 및 AWS 계정이 포함됩니다.
           + **조직** - 사용자 AWS Organizations및 모든 하위 엔터티에 대한 액세스 권한을 부여합니다. 하위 엔터티에는 OUs 및 AWS 계정이 포함됩니다.

             먼저, 보안 주체 유형을 선택합니다. 다음 드롭다운 목록 오른쪽에 있는 상자에 액세스 권한을 부여하려는 AWS 보안 주체의 ID를 입력합니다. 다양한 종류의 ID를 다양하게 입력할 수 있습니다.

      1. **라이선스 구성** 섹션을 확장하여 로 생성된 라이선스 구성을 Image Builder 이미지 AWS License Manager 에 연결할 수 있습니다. 라이선스 구성은 기업 계약 조건에 기반한 라이선스 규칙을 포함합니다. Image Builder는 기본 AMI와 연결된 라이선스 구성을 자동으로 포함합니다.

      1. **시작 템플릿 구성** 섹션을 확장하여 생성한 AMI에서 인스턴스를 시작하는 데 사용할 EC2 시작 템플릿을 지정할 수 있습니다.

         EC2 시작 템플릿을 사용하는 경우 Image Builder에서 빌드 완료 후 최신 AMI ID가 포함된 시작 템플릿의 새 버전을 생성하도록 지시할 수 있습니다. 시작 템플릿을 업데이트하려면 다음과 같이 설정을 구성하세요.
         + **시작 템플릿 이름** - Image Builder에서 업데이트하려는 시작 템플릿의 이름을 선택합니다.
         + **기본 버전 설정** - 시작 템플릿 기본 버전을 새 버전으로 업데이트하려면 이 확인란을 선택합니다.

         다른 시작 템플릿 구성을 추가하려면 **시작 템플릿 구성 추가**를 선택합니다. 리전 당 최대 5개의 시작 템플릿 구성을 보유할 수 있습니다.

      1. **SSM 파라미터 구성** 섹션을 확장하여 대상 리전에 배포된 이미지의 출력 AMI ID를 저장하는 SSM 파라미터를 구성할 수 있습니다. 선택적으로 리전에서 배포 계정을 지정할 수 있습니다.

         **파라미터 이름** - 파라미터의 이름을 입력합니다. 예: `/output/image/param`.

         **데이터 유형** - 기본값()을 유지합니다`AWS EC2 Image`. 이렇게 하면 Systems Manager가 파라미터 값을 검증하여 유효한 AMI ID인지 확인하도록 지시합니다.

   1. 다른 리전의 배포 설정을 추가하려면 **리전 추가**를 선택합니다.

1. 완료되면 **설정 생성**을 선택합니다.

------
#### [ AWS CLI ]

다음 예는 **create-distribution-configuration** 명령을 사용하여 AMI에 대한 새 배포 구성을 생성하는 방법이 AWS CLI명령을 사용하는 것을 보여줍니다.

1. 

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

   파일 편집 도구를 사용하여 다음 예 중 하나에 표시된 키와 환경에 적합한 값을 포함하는 JSON 파일을 생성합니다. 이 예제에서는 지정된 리전에 배포하는 AMI를 시작할 수 있는 권한이 있는 AWS 계정 AWS Organizations 조직 단위(OUs)를 정의합니다. 다음 단계에서 사용할 수 있도록 파일 `create-ami-distribution-configuration.json` 의 이름을 지정합니다.

**예제 1:에 배포 AWS 계정**  
이 예에서는 AMI를 두 리전에 배포하고 각 리전에서 시작 권한을 갖도록 AWS 계정 (을)를 지정합니다.

   ```
   {
   	"name": "MyExampleAccountDistribution",
   	"description": "Copies AMI to eu-west-1, and specifies accounts that can launch instances in each Region.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{imagebuilder:buildDate}}",
   				"description": "An example image name with parameter references",
   				"amiTags": {
   					"KeyName": "Some Value"
   				},
   				"launchPermission": {
   					"userIds": [
   						"987654321012"
   					]
   				}
   			}
   		},
   		{
   			"region": "eu-west-1",
   			"amiDistributionConfiguration": {
   				"name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}",
   				"amiTags": {
   					"KeyName": "Some value"
   				},
   				"launchPermission": {
   					"userIds": [
   						"100000000001"
   					]
   				}
   			}
   		}
   	]
   }
   ```

**예제 2: 조직 및 OUs에 배포**  
이 예에서는 AMI를 소스 리전에 배포하고 조직 및 OU 시작 권한을 지정합니다.

   ```
   {
   	"name": "MyExampleAWSOrganizationDistribution",
   	"description": "Shares AMI with the Organization and OU",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{ imagebuilder:buildDate }}",
   				"launchPermission": {
   					"organizationArns": [
   						"arn:aws:organizations::123456789012:organization/o-myorganization123"
   					],
   					"organizationalUnitArns": [
   						"arn:aws:organizations::123456789012:ou/o-123example/ou-1234-myorganizationalunit"
   					]
   				}
   			}
   		}
   	]
   }
   ```

**예제 3: SSM 파라미터에 출력 AMI ID 저장**  
이 예제에서는 배포 리전의 AWS Systems Manager 파라미터 스토어 파라미터에 출력 AMI ID를 저장합니다.

   ```
   {
   	"name": "SSMParameterOutputAMI",
   	"description": "Updates an SSM parameter with the output AMI ID for the distribution.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{ imagebuilder:buildDate }}"
   			},
   			"ssmParameterConfigurations": [
   				{
   					"amiAccountId": "111122223333",
   					"parameterName": "/output/image/param",
   					"dataType": "aws:ec2:image"
   				}
   			]
   		}
   	]
   }
   ```

1. 

**작성한 파일을 입력으로 사용하여 다음 명령을 실행합니다.**

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

   자세한 내용은 *AWS CLI 명령 참조*의 **[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**(을)를 참조하세요.

------

## AMI 배포 구성 업데이트
<a name="update-ami-distribution-config"></a>

AMI 배포 구성을 변경할 수 있습니다. 하지만 변경 사항은 Image Builder에서 이미 배포한 리소스에는 적용되지 않습니다. 예를 들어 AMI를 리전에 배포한 후 배포에서 제거한 경우 이미 배포된 AMI는 수동으로 제거할 때까지 해당 리전에 남아 있습니다.

------
#### [ AWS Management Console ]

 AWS Management Console다음 단계에 따라의 AMI 배포 구성을 수행합니다.

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

1. 탐색 창에서 **배포 설정**을 선택합니다. 여기에는 사용자 계정에서 생성된 배포 구성 목록이 표시됩니다.

1. 세부 정보를 보거나 배포 구성을 업데이트하려면 **구성 이름** 링크를 선택합니다. 이를 통해 배포 설정의 세부 정보 보기가 열립니다.
**참고**  
또한 **구성 이름** 옆에 있는 확인란을 선택한 다음 **세부 정보 보기**를 선택할 수 있습니다.

1. 배포 구성을 편집하려면 **배포 세부 정보** 섹션의 오른쪽 상단에서 **편집**을 선택합니다. 배포 구성 **이름**, **리전 1**로 표시되는 기본 **리전** 등 일부 필드는 잠겨 있습니다. 배포 설정에 대한 자세한 내용은 [AMI 배포 구성 생성](#create-ami-distribution-config) 섹션을 참조하세요.

1. 작업을 마쳤으면 **변경 사항 저장**을 선택합니다.

------
#### [ AWS CLI ]

다음 예에서는 **[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)** 명령을 사용하여 AMI의 배포 설정을 업데이트하는 방법이 AWS CLI명령을 사용하는 것으로 보여줍니다.

1. 

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

   파일 편집 도구를 사용하여 다음 예제에 표시된 키와 환경에 유효한 값을 사용하여 JSON 파일을 생성합니다. 이 예제에서는 `update-ami-distribution-configuration.json`라는 이름의 파일이 사용됩니다.

   ```
   {
   	"distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/update-ami-distribution-configuration.json",
   	"description": "Copies AMI to eu-west-2, and specifies accounts that can launch instances in each Region.",
   	"distributions": [
   	  {
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"name": "Name {{imagebuilder:buildDate}}",
   				"description": "An example image name with parameter references",
   				"launchPermissions": {
   					"userIds": [
   						"987654321012"
   					]
   				}
   			}
   		},
   		{
   			"region": "eu-west-2",
   			"amiDistributionConfiguration": {
   				"name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}",
   				"tags": {
   					"KeyName": "Some value"
   				},
   				"launchPermissions": {
   					"userIds": [
   						"100000000001"
   					]
   				}
   			}
   		}
   	]
   }
   ```

1. 

**작성한 파일을 입력으로 사용하여 다음 명령을 실행합니다.**

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

   자세한 내용은 *AWS CLI 명령 참조*의 **[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)**(을)를 참조하세요. 배포 구성 리소스의 태그를 업데이트하려면 [리소스 태깅](tag-resources.md) 섹션을 참조하세요.

------

## 예: 출력 AMIs용 시작 템플릿을 사용하여 EC2 Fast Launch 활성화
<a name="create-ami-dist-win-fast-launch"></a>

다음 예제에서는 시작 템플릿과 함께 **[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)** 명령을 사용하여에서 AMI에 대해 EC2 Fast Launch가 구성된 배포 설정을 생성하는 방법을 보여줍니다 AWS CLI.

시작 템플릿 없이 EC2 Fast Launch 설정을 구성하려면 배포 구성을 생성하기 [EC2 Fast Launch 사전 조건](#ami-distribution-prereqs-fast-launch) 전에를 모두 충족했는지 확인합니다.

1. 

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

   파일 편집 도구를 사용하여 다음 예와 같은 키와 환경에 적합한 값이 포함된 JSON 파일을 생성합니다.

   이 예에서는 최대 병렬 시작 수가 대상 리소스 수보다 크기 때문에 모든 대상 리소스에 대한 인스턴스를 동시에 시작합니다. 이 파일의 이름은 다음 단계에 표시된 명령 예에서 `ami-dist-config-win-fast-launch.json`입니다.

   ```
   {
   "name": "WinFastLaunchDistribution",
   "description": "An example of Windows AMI EC2 Fast Launch settings in the distribution configuration.",
   "distributions": [
   	{
   		"region": "us-west-2",
   		"amiDistributionConfiguration": {
   			"name": "Name {{imagebuilder:buildDate}}",
   			"description": "Includes Windows AMI EC2 Fast Launch settings.",
   			"amiTags": {
   				"KeyName": "Some Value"
   			}
   		},
   		"fastLaunchConfigurations": [{
   			"enabled": true,
   			"snapshotConfiguration": {
   				"targetResourceCount": 5
   			},
   			"maxParallelLaunches": 6,
   			"launchTemplate": {
   				"launchTemplateId": "lt-0ab1234c56d789012",
   				"launchTemplateVersion": "1"
   			 }
   		}],
   		"launchTemplateConfigurations": [{
   				   "launchTemplateId": "lt-0ab1234c56d789012",
   				   "setDefaultVersion": true
   		  }]
   	}]
   }
   ```
**참고**  
`launchTemplate` 섹션에 `launchTemplateId` 대신 `launchTemplateName`(을)를 지정할 수 있지만 이름과 ID를 모두 지정할 수는 없습니다.

1. 

**작성한 파일을 입력으로 사용하여 다음 명령을 실행합니다.**

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

   자세한 내용은 *AWS CLI 명령 참조*의 **[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**(을)를 참조하세요.

## 예:에서 출력 VM 디스크에 대한 배포 설정 생성 AWS CLI
<a name="cli-create-vm-dist-config"></a>

다음 예는 **create-distribution-configuration** 명령을 사용하여 모든 이미지 빌드와 함께 VM 이미지 디스크를 Amazon S3로 내보내는 배포 설정을 생성하는 방법을 보여줍니다.

1. 

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

    AWS CLI에서 사용하는 **create-distribution-configuration** 명령을 간소화할 수 있습니다. 이렇게 하려면 명령에 전달하려는 모든 내보내기 구성을 포함하는 JSON 파일을 생성하세요.
**참고**  
JSON 파일의 데이터 값에 대한 이름 지정 규칙은 Image Builder API 작업 요청 파라미터에 지정된 패턴을 따릅니다. API 작업 요청 파라미터를 검토하려면 *EC2 Image Builder API 참조*의 **[CreateDistributionConfiguration](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateDistributionConfiguration.html)** 명령을 참조하세요.  
데이터 값을 명령줄 매개변수로 제공하려면 옵션으로 **create-distribution-configuration** 명령에 대한 *AWS CLI 명령 참조*에 지정된 매개변수 이름을 참조하세요.

   다음은 이 예에서 `s3ExportConfiguration` JSON 객체에 지정하는 매개변수에 대한 요약입니다.
   + **roleName**(문자열, 필수) - S3 버킷으로 이미지를 내보낼 수 있는 VM Import/Export 권한을 부여하는 역할의 이름입니다.
   + **DiskiImageFormat**(문자열, 필수) - 업데이트된 디스크 이미지를 지원되는 다음 형식 중 하나로 내보냅니다.
     + **가상 하드 디스크** - Citrix Xen 및 Microsoft Hyper-V 가상화 제품과 호환됩니다.
     + **스트림 최적화 ESX 가상 머신 디스크** – VMware ESX, VMware vSphere 버전 4, 5 및 6과 호환됩니다.
     + **원시** - 원시 형식.
   + **S3bucket**(문자열, 필수) - VM의 출력 디스크 이미지를 저장하는 S3 버킷입니다.

   파일을 `export-vm-disks.json`(으)로 저장합니다. **create-distribution-configuration** 명령에 파일 이름을 사용합니다.

   ```
   {
   	"name": "example-distribution-configuration-with-vm-export",
   	"description": "example",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"amiDistributionConfiguration": {
   				"description": "example-with-vm-export"
   
   			},
   			"s3ExportConfiguration": {
   				"roleName": "vmimport",
   				"diskImageFormat": "RAW",
   				"s3Bucket": "vm-bucket-export"
   			}
   		}],
   	"clientToken": "abc123def4567ab"
   }
   ```

1. 

**작성한 파일을 입력으로 사용하여 다음 명령을 실행합니다.**

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

   자세한 내용은 *AWS CLI 명령 참조*의 **[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**(을)를 참조하세요.

# 컨테이너 이미지의 배포 설정 생성 및 업데이트
<a name="cr-upd-container-distribution-settings"></a>

이 섹션에서는 Image Builder 컨테이너 이미지의 배포 설정 생성 및 업데이트를 다룹니다.

**Topics**
+ [에서 Image Builder 컨테이너 이미지에 대한 배포 설정 생성 AWS CLI](#cli-create-container-distribution-configuration)
+ [에서 컨테이너 이미지의 배포 설정 업데이트 AWS CLI](#cli-update-container-distribution-configuration)

## 에서 Image Builder 컨테이너 이미지에 대한 배포 설정 생성 AWS CLI
<a name="cli-create-container-distribution-configuration"></a>

배포 구성을 사용하면 출력 컨테이너 이미지의 이름과 설명을 지정하고 컨테이너 이미지를 다른 AWS 리전에 복제할 수 있습니다. 배포 구성 리소스 및 각 리전 내의 컨테이너 이미지에 별도의 태그를 적용할 수도 있습니다.

1. 

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

   선호하는 파일 편집 도구를 사용하여 다음 예에 표시된 키와 환경에 유효한 값을 포함하는 JSON 파일을 생성하세요. 이 예제에서는 `create-container-distribution-configuration.json`(이)라는 이름의 파일이 사용됩니다.

   ```
   {
   	"name": "distribution-configuration-name",
   	"description": "Distributes container image to Amazon ECR repository in two regions.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   				"containerTags": ["west2", "image1"]
   			}
   		},
   		{
   			"region": "us-east-1",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   			   "containerTags": ["east1", "imagedist"]
   			}
   		}
   	],
   	"tags": {
   	   "DistributionConfigurationTestTagKey1": "DistributionConfigurationTestTagValue1",
   	   "DistributionConfigurationTestTagKey2": "DistributionConfigurationTestTagValue2"
   	}
   }
   ```

1. 

**작성한 파일을 입력으로 사용하여 다음 명령을 실행합니다.**

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

   자세한 내용은 *AWS CLI 명령 참조*의 **[create-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-distribution-configuration.html)**(을)를 참조하세요.

## 에서 컨테이너 이미지의 배포 설정 업데이트 AWS CLI
<a name="cli-update-container-distribution-configuration"></a>

다음 예제는 **[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)** 명령을 사용하여 컨테이너 이미지의 배포 설정을 업데이트하는 방법이 AWS CLI명령을 사용하는 것으로 보여줍니다. 각 지역 내의 컨테이너 이미지에 대한 태그를 업데이트할 수도 있습니다.

1. 

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

   즐겨 사용하는 파일 편집 도구를 사용하여 다음 예에 표시된 키와 환경에 유효한 값이 포함된 JSON 파일을 생성하세요. 이 예제에서는 `update-container-distribution-configuration.json`(이)라는 이름의 파일이 사용됩니다.

   ```
   {
   	"distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/update-container-distribution-configuration.json",
   	"description": "Distributes container image to Amazon ECR repository in two regions.",
   	"distributions": [
   		{
   			"region": "us-west-2",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   				"containerTags": ["west2", "image1"]
   			}
   		},
   		{
   			"region": "us-east-2",
   			"containerDistributionConfiguration": {
   				"description": "My test image.",
   				"targetRepository": {
   					"service": "ECR",
   					"repositoryName": "testrepo"
   				},
   			   "containerTags": ["east2", "imagedist"]
   			}
   		}
   	]
   }
   ```

1. 

**작성한 파일을 입력으로 사용하여 다음 명령을 실행합니다.**

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

   자세한 내용은 *AWS CLI 명령 참조*의 **[update-distribution-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/update-distribution-configuration.html)**(을)를 참조하세요. 배포 구성 리소스의 태그를 업데이트하려면 [리소스 태깅](tag-resources.md) 섹션을 참조하세요.

# Image Builder로 크로스 계정 AMI 배포 설정
<a name="cross-account-dist"></a>

이 섹션에서는 Image Builder AMI를 지정한 다른 계정에 전달하도록 배포 설정을 구성하는 방법을 설명합니다.

그러면 대상 계정에서 필요에 따라 AMI를 시작하거나 수정할 수 있습니다.

**참고**  
AWS CLI 이 섹션의 명령 예제에서는 이전에 이미지 레시피 및 인프라 구성 JSON 파일을 생성했다고 가정합니다. 이미지 레시피용 JSON 파일을 생성하려면 [를 사용하여 이미지 레시피 생성 AWS CLI](create-image-recipes.md#create-image-recipe-cli)(을)를 참조하십시오. 인프라 구성을 위한 JSON 파일을 생성하려면 [인프라 구성 생성](create-infra-config.md)(을)를 참조하십시오.

## 계정 간에 AMI 배포를 위한 사전 조건
<a name="cross-account-dist-prereqs"></a>

대상 계정이 Image Builder 이미지에서 인스턴스를 성공적으로 시작할 수 있도록 하려면 모든 리전의 모든 대상 계정에 대해 적절한 권한을 구성해야 합니다.

 AWS Key Management Service (AWS KMS)를 사용하여 AMI를 암호화하는 경우 새 이미지를 암호화하는 데 사용되는 계정에 AWS KMS key 대해를 구성해야 합니다.

Image Builder가 암호화된 AMI에 대해 계정 간 배포를 수행하는 경우 원본 계정의 이미지가 해독되어 대상 리전으로 푸시되며, 대상 리전에서 지정된 키를 사용하여 이미지를 다시 암호화합니다. Image Builder는 대상 계정을 대신하여 작동하며 대상 리전에서 생성한 IAM 역할을 사용하기 때문에 해당 계정은 원본 및 대상 리전 모두의 키에 액세스할 수 있어야 합니다.

### 암호화 키
<a name="cross-account-prereqs-encryption"></a>

 AWS KMS(을)를 사용하여 이미지를 암호화하는 경우 다음 사전 조건이 필요합니다. IAM 사전 조건은 다음 섹션에서 다룹니다.

**소스 계정 요구 사항**
+ AMI를 구축하고 배포하는 모든 리전의 계정에서 KMS 키를 생성합니다. 기존 키를 사용할 수 있습니다.
+ 대상 계정에서 내 키를 사용할 수 있도록 모든 키의 키 정책을 업데이트하십시오.

**대상 계정 요구 사항**
+ 암호화된 AMI를 배포하는 데 필요한 작업을 해당 역할이 수행하도록 허용하는 인라인 정책을 `EC2ImageBuilderDistributionCrossAccountRole`에 추가합니다. IAM 구성 단계는 [IAM 정책](#cross-account-prereqs-iam) 사전 조건 섹션을 참조하십시오.

를 사용한 교차 계정 액세스에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [다른 계정의 사용자가 KMS 키를 사용하도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)을 AWS KMS참조하세요.

다음과 같이 이미지 레시피에 암호화 키를 지정합니다.
+ Image Builder 콘솔을 사용하는 경우 레시피의 **스토리지(볼륨)** 섹션에 있는 **암호화(KMS 별칭)** 드롭다운 목록에서 암호화 키를 선택합니다.
+ **CreateImageRecipe** API 작업 또는의 **create-image-recipe** 명령을 사용하는 경우 JSON 입력의 `blockDeviceMappings`에 있는 `ebs` 섹션에서 키를 AWS CLI구성합니다.

  다음 JSON 스니펫은 이미지 레시피의 암호화 설정을 보여줍니다. 암호화 키를 제공하는 것 외에도 `encrypted` 플래그를 `true`(으)로 설정해야 합니다.

  ```
  {
  	...
  	"blockDeviceMappings": [
  	{
  		"deviceName": "Example root volume",
  		"ebs": { 
  			"deleteOnTermination": true,
  			"encrypted": true,
  			"iops": 100,
  			"kmsKeyId": "image-owner-key-id",
  			...
  		},
  		...
  	}],
  	...
  }
  ```

### IAM 정책
<a name="cross-account-prereqs-iam"></a>

 AWS Identity and Access Management (IAM)에서 교차 계정 배포 권한을 구성하려면 다음 단계를 따릅니다.

1. 여러 계정에 분산된 Image Builder AMI를 사용하려면 대상 계정 소유자가 `EC2ImageBuilderDistributionCrossAccountRole`(이)라는 계정에 새 IAM 역할을 생성해야 합니다.

1. 계정 간 배포를 활성화하려면 역할에 [Ec2ImageBuilderCrossAccountDistributionAccess 정책](security-iam-awsmanpol.md#sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess)(을)를 연결해야 합니다. 관리형 정책에 대한 자세한 내용을 알아보려면 *AWS Identity and Access Management 사용 설명서*의 [관리형 정책과 인라인 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)을 참조하십시오.

1. 원본 계정 ID가 대상 계정의 IAM 역할에 연결된 신뢰 정책에 추가되었는지 확인하십시오. 다음 예제는 소스 계정의 계정 ID를 지정하는 대상 계정의 신뢰 정책을 보여줍니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [{
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::444455556666:root"
           },
           "Action": "sts:AssumeRole"
       }]
   }
   ```

------

   [리소스 기반 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*를 참조하십시오.

1. 배포하는 AMI가 암호화된 경우 대상 계정 소유자가 KMS 키를 사용할 수 있도록 다음 인라인 정책을 그들 계정의 `EC2ImageBuilderDistributionCrossAccountRole`에 추가해야 합니다. `Principal` 섹션에는 계정 번호가 포함되어 있습니다. 이를 통해 Image Builder는를 사용하여 각 리전에 적합한 키로 AMI를 암호화하고 AWS KMS 복호화할 때 Image Builder를 대신하여 작업할 수 있습니다.

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [
   		{
   			"Sid": "AllowRoleToPerformKMSOperationsOnBehalfOfTheDestinationAccount",
   			"Effect": "Allow",
   			"Action": [
   				"kms:Encrypt",
   				"kms:Decrypt",
   				"kms:ReEncrypt*",
   				"kms:GenerateDataKey*",
   				"kms:DescribeKey",
   				"kms:CreateGrant",
   				"kms:ListGrants",
   				"kms:RevokeGrant"
   			],
   			"Resource": "*"
   		}
   	]
   }
   ```

------

   인라인 정책에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*에서 [인라인 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies)을 참조하십시오.

1. `launchTemplateConfigurations`(을)를 사용하여 Amazon EC2 시작 템플릿을 지정하는 경우 각 대상 계정의 내 `EC2ImageBuilderDistributionCrossAccountRole`에 다음 정책도 추가해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateLaunchTemplateVersion",
                   "ec2:ModifyLaunchTemplate"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/CreatedBy": "EC2 Image Builder"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeLaunchTemplates"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateTags"
               ],
               "Resource": "arn:aws:ec2:*:*:launch-template/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/CreatedBy": "EC2 Image Builder"
                   }
               }
           }
       ]
   }
   ```

------

1.  AWS Systems Manager 파라미터 스토어 파라미터를 사용하여 배포 계정 및 리전에 대한 출력 AMI의 AMI ID를 저장하는 경우 각 대상 계정의 `EC2ImageBuilderDistributionCrossAccountRole`에 다음 정책을 추가해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:PutParameter"
               ],
               "Resource": "arn:aws:ssm:*:111122223333:parameter/ImageBuilder-*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeImages"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

## 계정 간 분배에 대한 제한
<a name="cross-account-dist-limits"></a>

여러 계정에 Image Builder 이미지를 배포할 때는 몇 가지 제한 사항이 있습니다.
+ 대상 계정은 각 대상 리전의 동시 AMI 사본 50개로 제한됩니다.
+ 반가상화(PV) 가상화 AMI를 다른 리전에 복사하려는 경우 대상 리전이 PV 가상화 AMI를 지원해야 합니다. 자세한 내용은 [Linux AMI 가상화 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)을 참조하십시오.
+ 암호화된 스냅샷의 암호화되지 않은 사본은 생성할 수 없습니다. `KmsKeyId` 파라미터에 AWS Key Management Service (AWS KMS) 고객 관리 키를 지정하지 않는 경우 Image Builder는 Amazon Elastic Block Store(Amazon EBS)의 기본 키를 사용합니다. 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [Amazon EBS 암호화](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)를 참조하십시오.

자세한 내용은 *EC2 Image Builder API 참조*의 [CreateDistributionConfiguration](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateDistributionConfiguration.html)을 참조하십시오.

## 콘솔에서 Image Builder AMI에 대한 계정 간 배포 구성
<a name="cross-account-dist-console-create-ami"></a>

이 섹션에서는 AWS Management Console(을)를 사용하여 Image Builder AMI의 계정 간 배포를 위한 배포 설정을 만들고 구성하는 방법을 설명합니다. 계정 간 배포를 구성하려면 특정 IAM 권한이 필요합니다. 계속하려면 먼저 이 섹션의 [계정 간에 AMI 배포를 위한 사전 조건](#cross-account-dist-prereqs)(을)를 완료해야 합니다.

Image Builder 콘솔에서 배포 설정을 생성하려면 다음 단계를 수행하십시오.

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

1. 탐색 창에서 **배포 설정**을 선택합니다. 여기에는 내 계정에 생성된 배포 설정 목록이 표시됩니다.

1. **배포 설정** 페이지 상단에서 **배포 설정 생성**을 선택합니다. 그러면 **배포 설정 생성** 페이지로 이동합니다.

1. **이미지 유형** 섹션에서 **Amazon Machine Image(AMI)** **출력 유형**을 선택합니다. 기본 설정입니다.

1. **일반** 섹션에서 생성하려는 배포 설정 리소스의 **이름**을 입력합니다(*필수*).

1. **리전 설정** 섹션에서 선택한 리전의 **대상 계정**에 AMI를 배포하려는 12자리 계정 ID를 입력하고 **엔터** 키를 누릅니다. 그러면 형식이 올바른지 확인한 다음 상자 아래에 입력한 계정 ID가 표시됩니다. 이 과정을 반복하여 계정을 더 추가합니다.

   입력한 계정을 제거하려면 계정 ID 오른쪽에 표시된 **X**를 선택합니다.

   각 리전의 **출력 AMI 이름**을 입력합니다.

1. 필요한 추가 설정을 계속 지정하고 **설정 생성**을 선택하여 새 배포 설정 리소스를 생성합니다.

## 에서 Image Builder AMI에 대한 교차 계정 배포 구성 AWS CLI
<a name="cross-account-dist-cli-ami-create"></a>

이 섹션에서는 배포 설정 파일을 구성하고에서 **create-image** 명령을 사용하여 Image Builder AMI AWS CLI 를 빌드하고 계정 간에 배포하는 방법을 설명합니다.

계정 간 배포를 구성하려면 특정 IAM 권한이 필요합니다. **create-image** 명령을 실행하려면 먼저 이 섹션의 [계정 간에 AMI 배포를 위한 사전 조건](#cross-account-dist-prereqs)(을)를 완료해야 합니다.

1. 

**배포 설정 파일 구성**

   에서 **create-image** 명령을 사용하여 다른 계정에 배포되는 Image Builder AMI를 AWS CLI 생성하기 전에 `AmiDistributionConfiguration` 설정에서 대상 계정 IDs를 지정하는 `DistributionConfiguration` JSON 구조를 생성해야 합니다. 원본 리전에 `AmiDistributionConfiguration`(을)를 하나 이상 지정해야 합니다.

   `create-distribution-configuration.json`(으)로 이름 붙인 다음 예제 파일은 해당 원본 리전의 계정 간 이미지 배포에 대한 구성을 보여줍니다.

   ```
   {
   	"name": "cross-account-distribution-example",
   	"description": "Cross Account Distribution Configuration Example",
   	"distributions": [
   		{
   			"amiDistributionConfiguration": {
   				"targetAccountIds": ["123456789012", "987654321098"],
   				"name": "Name {{ imagebuilder:buildDate }}", 
   				"description": "ImageCopy Ami Copy Configuration"
   			}, 
   			"region": "us-west-2"
   		}
   	]
   }
   ```

1. 

**배포 설정 생성**

   의 [create-distribution-configuration](https://docs.aws.amazon.com/cli/latest/reference/imagebuilder/create-distribution-configuration.html) 명령을 사용하여 Image Builder 배포 설정 리소스를 생성하려면 명령에 다음 파라미터를 AWS CLI제공합니다.
   + `--name` 파라미터에 배포 이름을 입력합니다.
   + `--cli-input-json` 파라미터에서 생성한 배포 구성 JSON 파일을 첨부합니다.

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

*`--distributions` 파라미터를 사용하여 명령에 직접 JSON을 제공할 수도 있습니다.*

# EC2 시작 템플릿을 사용하여 AMI 배포 구성
<a name="dist-using-launch-template"></a>

대상 계정 및 리전에서 Image Builder AMI를 일관되게 시작할 수 있도록 배포 설정에서 `launchTemplateConfigurations`(을)를 사용하여 Amazon EC2 시작 템플릿을 지정할 수 있습니다. 배포 프로세스 중에 `launchTemplateConfigurations`(이)가 있는 경우 Image Builder는 템플릿의 원래 설정과 빌드의 새 AMI ID를 모두 포함하는 새 버전의 시작 템플릿을 생성합니다. 시작 템플릿을 사용하여 EC2 인스턴스를 시작하는 방법에 대한 자세한 내용은 대상 운영 체제에 따라 다음 링크 중 하나를 참조하십시오.
+ [시작 템플릿에서 Linux 인스턴스 시작하기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)
+ [시작 템플릿에서 Windows 인스턴스 시작하기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)

**참고**  
이미지에 Windows Fast Launch를 활성화하기 위한 시작 템플릿을 포함하는 경우 Image Builder가 사용자를 대신하여 Windows Fast Launch를 활성화할 수 있도록 시작 템플릿에 다음 태그가 포함되어야 합니다.  
`CreatedBy: EC2 Image Builder`

## 콘솔에서 AMI 배포 설정에 EC2 시작 템플릿 추가
<a name="dist-using-launch-template-console"></a>

출력 AMI와 함께 시작 템플릿을 제공하려면 콘솔에서 다음 단계를 따릅니다.

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

1. 탐색 창에서 **배포 설정**을 선택합니다. 여기에는 내 계정에 생성된 배포 설정 목록이 표시됩니다.

1. **배포 설정** 페이지 상단에서 **배포 설정 생성**을 선택합니다. 그러면 **배포 설정 생성하기** 페이지가 열립니다.

1. **이미지 유형** 섹션에서 **Amazon Machine Image(AMI)** **출력 유형**을 선택합니다. 기본 설정입니다.

1. **일반** 섹션에서 생성하려는 배포 설정 리소스의 **이름**을 입력합니다(*필수*).

1. **리전 설정** 섹션에서 목록으로부터 EC2 시작 템플릿의 이름을 선택합니다. 계정에 시작 템플릿이 없는 경우 **새 시작 템플릿 생성하기**를 선택합니다. 그러면 **EC2 대시보드**에서 **시작 템플릿**이 열립니다.

   시작 템플릿 기본 버전을 Image Builder가 출력 AMI를 사용하여 생성한 새 버전으로 업데이트하려면 **기본 버전 설정하기** 확인란을 선택합니다.

   선택한 리전에 다른 시작 템플릿을 추가하려면 **새 템플릿 구성 추가하기**를 선택합니다.

   시작 템플릿을 제거하려면 **제거하기**를 선택합니다.

1. 필요한 추가 설정을 계속 지정하고 **설정 생성**을 선택하여 새 배포 설정 리소스를 생성합니다.

## 에서 AMI 배포 설정에 EC2 시작 템플릿 추가 AWS CLI
<a name="dist-using-launch-template-cli"></a>

이 섹션에서는 시작 템플릿으로 배포 설정 파일을 구성하고 AWS CLI 의 **create-image** 명령을 사용하여 Image Builder AMI와 이를 사용하는 새 버전의 시작 템플릿을 빌드 및 배포하는 방법을 설명합니다.

1. 

**배포 설정 파일 구성**

   시작 템플릿을 사용하여 Image Builder AMI를 생성하려면 먼저 `launchTemplateConfigurations` 설정을 지정하는 배포 구성 JSON 구조를 생성 AWS CLI해야 합니다. 소스 리전에 하나 이상의 `launchTemplateConfigurations` 항목을 지정해야 합니다.

   `create-distribution-config-launch-template.json`(으)로 이름이 지정된 다음 샘플 파일은 소스 리전의 시작 템플릿 구성에 대한 몇 가지 가능한 시나리오를 보여줍니다.

   ```
   {
       "name": "NewDistributionConfiguration",
       "description": "This is just a test",
       "distributions": [
           {
               "region": "us-west-2",
               "amiDistributionConfiguration": {
                   "name": "test-{{imagebuilder:buildDate}}-{{imagebuilder:buildVersion}}",
                   "description": "description"
               },
               "launchTemplateConfigurations": [
                   {
                       "launchTemplateId": "lt-0a1bcde2fgh34567",
                       "accountId": "935302948087",
                       "setDefaultVersion": true
                   },
                   {
                       "launchTemplateId": "lt-0aaa1bcde2ff3456"
                   },
                   {
                       "launchTemplateId": "lt-12345678901234567",
                       "accountId": "123456789012"
                   }
               ]
           }
       ],
       "clientToken": "clientToken1"
   }
   ```

1. 

**배포 설정 생성**

   의 [create-distribution-configuration](https://docs.aws.amazon.com/cli/latest/reference/imagebuilder/create-distribution-configuration.html) 명령을 사용하여 Image Builder 배포 설정 리소스를 생성하려면 명령에 다음 파라미터를 AWS CLI제공합니다.
   + `--name` 파라미터에 배포 이름을 입력합니다.
   + `--cli-input-json` 파라미터에서 생성한 배포 구성 JSON 파일을 첨부합니다.

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

*`--distributions` 파라미터를 사용하여 명령에 직접 JSON을 제공할 수도 있습니다.*

# 향상된 AMI 배포 기능 사용
<a name="distribution-enhanced_functionality"></a>

Image Builder는 AMIs가 리전 및 계정에 분산되는 방식을 유연하게 제어하도록 하는 고급 배포 기능을 제공합니다. 이러한 기능은 배포를 빌드 프로세스와 분리하므로 기존 이미지를 온디맨드로 배포하고, 배포 실패로부터 효율적으로 복구하고, 사용자 지정 가능한 워크플로를 통해 제어된 다단계 배포 전략을 구현할 수 있습니다.

Image Builder에서 향상된 AMI 배포 기능을 사용하면 전체 이미지 빌드를 다시 실행할 필요 없이 배포 활동을 직접 수행할 수 있습니다.

## 분리된 배포
<a name="decoupled-distribution"></a>

DistributeImage API는 세 가지 유형의 소스 이미지 참조를 허용합니다.
+ **AMI ID** - 표준 AMI 식별자(예: `ami-0abcdef1234567890`)
+ **SSM 파라미터 **- AMI ID를 저장하는 SSM 파라미터(예: `ssm:/my/ami/parameter`)
+ **Image Builder 버전 ARN** - Image Builder 이미지 버전 ARN

## 배포 재시도
<a name="distribution-retry"></a>

이미지 배포에 실패하면 `RetryImage` API를 사용하여 배포를 다시 시도합니다. 이렇게 하면 전체 이미지 재구축을 방지하여 실패 원인 해결 시간이 단축됩니다. 배포 실패의 근본 원인을 해결한 `RetryImage` 후를 사용합니다.

RetryImage API는 이미지 빌드 버전 ARN(예: `arn:aws:imagebuilder:us-west-2:123456789012:image/my-image/1.0.0/1`)을 허용합니다. API를 호출하면 Image Builder는 원래 배포 구성 및 설정을 사용하여 장애 발생 시점부터 배포 프로세스를 자동으로 재개합니다. `RetryImage` API는 배포 단계, 테스트 단계 또는 통합 단계에서 실패한 배포를 재시도할 수 있습니다. 보류 중, 실패, 삭제됨 또는 사용 가능 상태의 AMIs에서 작동합니다.

**사전 조건** 

배포를 다시 시도하기 전에 다음을 확인합니다.
+ 장애의 근본 원인을 식별하고 해결했습니다. 오류 세부 정보는 CloudWatch Logs의 배포 로그를 검토합니다.
+ 이미지 빌드를 재시도하는 데 필요한 IAM 권한이 있습니다.
+ 교차 계정 배포 실패의 경우 대상 계정의 `EC2ImageBuilderDistributionCrossAccountRole`에 `Ec2ImageBuilderCrossAccountDistributionAccess` 정책이 연결되어 있는지 확인합니다.

**중요:** 기본 문제를 수정하지 않고 재시도하면 실패가 반복됩니다.

## 배포 워크플로
<a name="distribution-workflows"></a>

배포 워크플로는 빌드 및 테스트 워크플로를 보완하는 새로운 워크플로 유형으로, 순차적으로 배포 프로세스를 정의하고 제어할 수 있습니다. 배포 워크플로를 사용하면 AMI 복사 작업, wait-for-action 체크포인트, 이미지 속성 수정 및 기타 배포 관련 단계를 포함하는 사용자 지정 배포 프로세스를 생성할 수 있습니다. 이를 통해 단계별 가시성, 병렬 배포 기능 및 세분화된 오류 보고를 통해 AMIs가 배포되는 방식을 구조적으로 제어할 수 있습니다.

워크플로 생성 및 사용자 지정에 대한 자세한 내용은 [이미지 워크플로 관리를 참조하세요](manage-image-workflows.html).