

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

# 인프라 구성 생성
<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}}
   ```

------