

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

# Elastic Beanstalk 환경에서 사용자 지정 Amazon Machine Image(AMI) 사용
<a name="using-features.customenv"></a>

이 섹션에서는 사용자 지정 AMI 사용을 고려해야 하는 경우를 설명하고 환경에서 사용자 지정 AMI를 구성하고 관리하는 절차를 제공합니다. AWS Elastic Beanstalk 환경을 생성할 때 플랫폼 버전에 포함된 표준 Elastic Beanstalk AMI 대신 사용할 Amazon Machine Image(AMI)를 지정할 수 있습니다. 사용자 지정 AMI는 표준 AMI에 포함되어 있지 않은 여러 소프트웨어를 설치해야 할 경우 환경에서 인스턴스를 시작할 때 프로비저닝 시간을 향상할 수 있습니다.

[구성 파일](ebextensions.md)을 사용하면 환경을 빠르고 일관되게 사용자 지정할 수 있습니다. 환경 생성 및 업데이트 중에 구성을 적용하는 데 시간이 오래 걸릴 수 있습니다. 구성 파일에서 여러 서버 구성을 처리해야 하는 경우, 이미 필요한 소프트웨어와 구성이 갖춰진 사용자 지정 AMI를 만들어서 시간을 단축할 수 있습니다.

사용자 지정 AMI를 통해 구성 파일에 적용하기까지 시간이 오래 걸리거나 구현하기 까다로운 하위 수준 구성 요소(예: Linux 커널)를 변경할 수 있습니다. 사용자 지정 AMI를 생성하려면 Amazon EC2에 Elastic Beanstalk 플랫폼 AMI를 시작하고 필요에 따라 소프트웨어와 구성을 사용자 지정한 후 인스턴스를 중지하고 AMI를 저장합니다.

## 사용자 지정 AMI 생성
<a name="using-features.customenv.create"></a>

[EC2 Image Builder](https://aws.amazon.com/image-builder)를 사용하여 이러한 절차의 대안으로 사용자 지정 AMI를 생성하고 관리할 수 있습니다. 자세한 내용은 [Image Builder 사용 설명서](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)를 참조하세요.

**기본 Elastic Beanstalk AMI를 식별하려면**

1. 명령 창에서 명령을 다음과 같이 실행합니다. 자세한 내용은 *AWS CLI 명령 참조*의 [describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)을 참조하세요.

   사용자 지정 AMI를 사용할 AWS 리전을 지정하고 플랫폼 ARN 및 버전 번호를 애플리케이션이 기반으로 하는 Elastic Beanstalk 플랫폼으로 바꿉니다.

     
**Example - Mac OS/Linux OS**  

   ```
   $ aws elasticbeanstalk describe-platform-version --region {{us-east-2}} \
         --platform-arn "arn:aws:elasticbeanstalk:{{us-east-2}}::platform/{{Node.js 20 running on 64bit Amazon Linux 2023}}/{{6.1.7}}" \
         --query PlatformDescription.CustomAmiList
   [
       {
           "VirtualizationType": "pv",
           "ImageId": ""
       },
       {
           "VirtualizationType": "hvm",
           "ImageId": "{{ami-020ae06fdda6a0f66}}"
       }
   ]
   ```  
**Example - Windows OS**  

   ```
   C:\> aws elasticbeanstalk describe-platform-version --region {{us-east-2}} --platform-arn"arn:aws:elasticbeanstalk:{{us-east-2}}::platform/{{
   IIS 10.0 running on 64bit Windows Server 2022}}/{{2.15.3}}" --query PlatformDescription.CustomAmiList
   [
       {
           "VirtualizationType": "pv",
           "ImageId": ""
       },
       {
           "VirtualizationType": "hvm",
           "ImageId": "{{ami-020ae06fdda6a0f66}}"
       }
   ]
   ```

1. 결과에서 `ami-020ae06fdda6a0f66`와 같은 형태의 `ImageId` 값을 기록해 두십시오.

값은 애플리케이션과 관련된 플랫폼 버전, EC2 인스턴스 아키텍처 및 AWS 리전의 주식 Elastic Beanstalk AMI입니다. 여러 플랫폼, 아키텍처 또는 AWS 리전에 대한 AMIs를 생성해야 하는 경우이 프로세스를 반복하여 각 조합에 대한 올바른 기본 AMI를 식별합니다.

**참고**  
Elastic Beanstalk 환경에서 시작된 인스턴스에서 AMI를 생성하지 마십시오. Elastic Beanstalk는 프로비저닝 중에 인스턴스를 변경하며, 이는 저장된 AMI에 문제를 일으킬 수 있습니다. Elastic Beanstalk 환경의 인스턴스에서 이미지를 저장하면 인스턴스에 배포된 애플리케이션의 버전이 이미지의 일부분으로 고정됩니다.

Linux의 경우, Elastic Beanstalk에 게시되지 않은 커뮤니티 AMI에서 사용자 지정 AMI를 생성할 수도 있습니다. 최신 [Amazon Linux](https://aws.amazon.com/amazon-linux-ami/) AMI를 시작점으로 사용할 수 있습니다. Elastic Beanstalk에서 관리하지 않는 Linux AMI로 환경을 시작하면 Elastic Beanstalk는 플랫폼 소프트웨어(예: 언어, 프레임워크, 프록시 서버 등)와 [확장 상태 보고](health-enhanced.md) 등의 기능을 지원하는 추가 구성 요소의 설치를 시도합니다.

**참고**  
Windows Server를 기반으로 하는 사용자 지정 AMI에는 1단계 앞부분에서 설명한 것처럼 `describe-platform-version`에서 반환된 Elastic Beanstalk AMI가 필요합니다.

Elastic Beanstalk가 Elastic Beanstalk에서 관리하지 않는 AMI를 사용할 수 있더라도 Elastic Beanstalk가 누락된 구성 요소를 설치하여 프로비저닝 시간이 늘어나면 무엇보다 사용자 지정 AMI 생성의 혜택이 줄어들거나 없어질 수 있습니다. 다른 Linux 배포는 일부 문제 해결을 처리할 수 있으나 공식적으로 지원되지 않습니다. 애플리케이션에 특정 Linux 배포가 필요한 경우, 한 가지 대안은 Docker 이미지를 생성하여 Elastic Beanstalk [Docker 플랫폼](docker.md) 또는 [멀티컨테이너 Docker 플랫폼](create_deploy_docker_ecs.md)에서 실행하는 것입니다.

**사용자 지정 AMI를 생성하려면**

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

1. **인스턴스 시작**을 선택합니다.

1. 기본 Elastic Beanstalk AMI(`describe-platform-version` 사용) 또는 Amazon Linux AMI를 확인한 경우 검색 상자에 해당 AMI ID를 입력합니다. 그런 다음 **Enter**를 누릅니다.

   목록에서 필요에 맞는 다른 커뮤니티 AMI를 검색할 수도 있습니다.
**참고**  
HVM 가상화를 사용하는 AMI를 선택하는 것이 좋습니다. 이러한 AMI는 설명에 **Virtualization type: hvm(가상화 유형: hvm)**이 표시되어 있습니다.  
자세한 내용은 *Amazon EC2 사용 설명서*의 [가상화 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#virtualization_types)을 참조하세요.

1. **Select(선택)**를 선택하여 AMI를 선택합니다.

1. 인스턴스 유형을 선택하고 **Next: Configure Instance Details(다음: 인스턴스 정보 구성)**를 선택합니다.

1. **(사용되지 않은 Amazon Linux AMI(AL1) 플랫폼의 경우)** 환경이 지원되는 Linux 기반 플랫폼 또는 Windows 플랫폼에서 실행되는 경우 이 단계를 건너뜁니다.

   **고급 세부 정보** 섹션을 확장하고 **사용자 데이터** 필드에 다음 텍스트를 붙여 넣습니다.

   ```
   #cloud-config
     repo_releasever: {{repository version number}}
     repo_upgrade: none
   ```

   *리포지토리 버전 번호*는 AMI 이름의 연월 버전입니다. 예를 들어 2015년 3월 Amazon Linux를 출시한 AMI의 리포지토리 버전 번호는 `2015.03`입니다. Elastic Beanstalk 이미지에서 버전 번호는 Amazon Linux AMI(이전 Amazon Linux 2)를 기반으로 하는 [플랫폼 버전](concepts.platforms.md)의 솔루션 스택 이름에 표시되는 날짜와 일치합니다.
**참고**  
`repo_releasever` 설정은 Amazon Linux AMI에 대한 lock-on-launch 기능을 구성합니다. 이렇게 하면 AMI가 시작될 때 고정된 특정 리포지토리 버전을 사용합니다. 이 기능은 Amazon Linux 2에서 지원되지 않습니다. 환경에서 현재 Amazon Linux 2 플랫폼 브랜치를 사용하는 경우 지정하지 마십시오. Amazon Linux AMI 플랫폼 브랜치(이전 Amazon Linux 2)에서 Elastic Beanstalk와 함께 사용자 지정 AMI를 사용하는 경우에만 이 설정이 필요합니다.  
`repo_upgrade` 설정은 보안 업데이트의 자동 설치를 비활성화합니다. Elastic Beanstalk에서 사용자 지정 AMI를 사용해야 합니다.

1. 마법사를 진행하여 [EC2 인스턴스를 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-an-instance.html)합니다. 메시지가 표시되면 액세스할 키 페어를 선택하여 다음 단계에서 인스턴스에 연결하도록 합니다.

1.  SSH 또는 RDP로 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)합니다.

1. 원하는 사용자 지정을 수행합니다.

1. **(Windows 플랫폼)** EC2Config 서비스 Sysprep을 실행합니다. EC2Config에 대한 자세한 내용은 [EC2Config 서비스를 사용한 Windows 인스턴스 구성](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html)을 참조하십시오. Sysprep이 AWS Management Console에서 검색할 수 있는 임의 암호를 생성하도록 구성하세요.

1. Amazon EC2 콘솔에서 EC2 인스턴스를 중지합니다. 그런 다음 **인스턴스 작업** 메뉴에서 **이미지 생성(EBS AMI)**을 선택합니다.

1. 추가 AWS 요금이 발생하지 않도록 [ EC2 인스턴스를 종료](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)합니다.

**Elastic Beanstalk 환경에서 사용자 지정 AMI를 사용하려면**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서을 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

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

1. [**용량**] 구성 범주에서 [**편집**]을 선택합니다.

1. **AMI ID**의 경우 사용자 지정 AMI ID를 입력합니다.

1. 변경 사항을 저장하려면 페이지 하단에서 **적용**을 선택합니다.

사용자 지정 AMI로 새 환경을 생성할 때, AMI를 생성할 때 사용했던 기본 구성과 동일한 플랫폼 버전을 사용해야 합니다.

## 사용자 지정 AMI를 사용하여 환경 관리
<a name="using-features.customenv.managing"></a>

### 플랫폼 업데이트
<a name="using-features.customenv.platform-updates."></a>

사용자 지정 AMI를 사용하는 경우 Elastic Beanstalk는 업데이트가 수동으로 적용되었는지 관리형 플랫폼 업데이트를 통해 적용되었는지에 관계없이 플랫폼 버전이 업데이트될 때 환경에서 동일한 사용자 지정 AMI를 계속 사용합니다. 새로운 플랫폼 버전의 스톡 AMI를 사용하도록 환경이 재설정되지 **않습니다**.

새로운 플랫폼 버전의 재고 AMI를 기반으로 새로운 사용자 지정 AMI를 생성하는 것이 좋습니다. 이렇게 하면 새로운 플랫폼 버전에서 사용할 수 있는 패치가 적용되고 호환되지 않는 패키지 또는 라이브러리 버전으로 인한 배포 실패도 최소화됩니다.

새로운 사용자 지정 AMI 생성에 대한 자세한 내용은 이 주제의 [사용자 지정 AMI 생성](#using-features.customenv.create) 앞부분을 참조하세요.

### 사용자 지정 AMI 제거
<a name="using-features.customenv.platform-updates."></a>

환경에서 사용자 지정 AMI를 제거하고 환경의 플랫폼 버전에 스톡 AMI를 사용하도록 재설정하려면 다음 CLI 명령을 사용하세요.

```
aws elasticbeanstalk update-environment \
  --application-name {{my-application}} \
  --environment-name {{my-environment}} \
  --region {{us-east-1 }}\
  --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId
```

**참고**  
서비스 중단을 방지하려면 이 변경 사항을 프로덕션 환경에 적용하기 전에 스톡 AMI로 애플리케이션을 테스트합니다.

## 사용자 지정 AMI 정리
<a name="using-features.customenv.cleanup"></a>

사용자 지정 AMI를 사용한 후 Elastic Beanstalk 환경을 더 이상 시작할 필요가 없으면 해당 AMI를 정리하여 저장 비용을 최소화해 보십시오. 사용자 지정 AMI를 정리하면 Amazon EC2에서 등록 취소되고 기타 관련 리소스가 삭제됩니다. 자세한 내용은 [Linux AMI 등록 취소](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html) 또는 [Windows AMI 등록 취소](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/deregister-ami.html)를 참조하십시오.