

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

# Elastic Beanstalk 환경 구성
<a name="customize-containers"></a>

이 주제에서는 Elastic Beanstalk 콘솔에서 사용할 수 있는 구성 옵션에 중점을 둡니다.는 Elastic Beanstalk 동작 및 플랫폼 설정과 함께 환경의 리소스를 사용자 지정하기 위한 다양한 옵션을 AWS Elastic Beanstalk 제공합니다.

다음 주제에서는 콘솔에서 환경을 구성하는 방법을 보여줍니다. 또한 구성 파일 또는 API 구성 옵션과 함께 사용할 콘솔 옵션에 해당하는 기본 네임스페이스에 대해 설명합니다. 고급 구성 방법에 대한 자세한 내용은 [Elastic Beanstalk 환경 구성(고급)](beanstalk-environment-configuration-advanced.md) 단원을 참조하십시오.

**Topics**
+ [

## 프로비저닝된 리소스
](#customize-containers-resources)
+ [

# Elastic Beanstalk 콘솔을 사용하여 환경 구성
](environments-cfg-console.md)
+ [

# Elastic Beanstalk 환경에 대한 Amazon EC2 인스턴스
](using-features.managing.ec2.md)
+ [

# Elastic Beanstalk 환경 인스턴스의 Auto Scaling
](using-features.managing.as.md)
+ [

# Elastic Beanstalk 환경의 로드 밸런서
](using-features.managing.elb.md)
+ [

# Elastic Beanstalk 환경에 데이터베이스 추가
](using-features.managing.db.md)
+ [

# AWS Elastic Beanstalk 환경 보안
](using-features.managing.security.md)
+ [

# Elastic Beanstalk 환경의 리소스에 태그 지정
](using-features.tagging.md)
+ [

# 환경 변수 및 기타 소프트웨어 설정
](environments-cfg-softwaresettings.md)
+ [

# Amazon SNS를 통한 Elastic Beanstalk 환경 알림
](using-features.managing.sns.md)
+ [

# Elastic Beanstalk를 사용하여 Amazon Virtual Private Cloud(Amazon VPC) 구성
](using-features.managing.vpc.md)
+ [

# Elastic Beanstalk 환경의 도메인 이름
](customdomains.md)

## 프로비저닝된 리소스
<a name="customize-containers-resources"></a>

웹 서버 환경을 생성하는 경우 Elastic Beanstalk에서는 애플리케이션 작동을 지원하는 여러 리소스를 생성합니다. 이 장에서는 Elastic Beanstalk 환경에 맞게 이러한 리소스를 사용자 지정하는 방법을 설명합니다.
+ **EC2 인스턴스(EC2 instance)** - 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon Elastic Compute Cloud(Amazon EC2) 가상 머신입니다.

  특정 언어 버전, 프레임워크, 웹 컨테이너 또는 그 조합을 지원하도록 각 플랫폼마다 특정 소프트웨어, 구성 파일 및 스크립트 세트를 실행합니다. 대부분의 플랫폼에서는 웹 앱 앞에 위치해 웹 앱으로 요청을 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성하는 역방향 프록시로 Apache 또는 NGINX를 사용합니다.
+ **인스턴스 보안 그룹(Instance security group)** - 포트 80에서 인바운드 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
+ **로드 밸런서(Load balancer)** - 애플리케이션을 실행하는 인스턴스로 요청을 분산하도록 구성된 Elastic Load Balancing 로드 밸런서입니다. 또한 로드 밸런서가 있으면 인터넷에 인스턴스를 직접 노출할 필요가 없습니다.
+ **로드 밸런서 보안 그룹(Load balancer security group)** - 포트 80에서 인바운드 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 인터넷의 HTTP 트래픽이 로드 밸런서에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
+ **Auto Scaling 그룹(Auto Scaling group)** - 인스턴스가 종료되거나 사용할 수 없게 될 경우 인스턴스를 대체하도록 구성된 Auto Scaling 그룹입니다.
+ **Amazon S3 버킷(Amazon S3 bucket)** - Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.
+ **Amazon CloudWatch 경보(Amazon CloudWatch alarms)** - 환경의 인스턴스에 대한 로드를 모니터링하는 두 개의 CloudWatch 경보로, 로드가 너무 높거나 너무 낮은 경우 트리거됩니다. 경보가 트리거되면 이에 대한 응답으로 Auto Scaling 그룹이 확장 또는 축소됩니다.
+ **CloudFormation 스택** - Elastic Beanstalk는 CloudFormation 를 사용하여 환경에서 리소스를 시작하고 구성 변경 사항을 전파합니다. 리소스는 [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation)에서 볼 수 있는 템플릿에서 정의됩니다.
+ **도메인 이름(Domain name)** - **subdomain*.*region*.elasticbeanstalk.com* 형식으로 웹 앱으로 라우팅되는 도메인 이름입니다.
**도메인 보안**  
Elastic Beanstalk 애플리케이션의 보안을 강화하기 위해 *elasticbeanstalk.com* 도메인이 [공개 서픽스 목록(PSL)](https://publicsuffix.org/)에 등록되어 있습니다.  
Elastic Beanstalk 애플리케이션의 기본 도메인 이름에 민감한 쿠키를 설정해야 하는 경우 보안을 강화하기 위해 `__Host-` 접두사가 있는 쿠키를 사용하는 것이 좋습니다. 이렇게 쿠키를 설정하면 교차 사이트 요청 위조 시도(CSRF)로부터 도메인이 보호됩니다. 자세한 내용은 Mozilla 개발자 네트워크의 [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 페이지를 참조하십시오.

# Elastic Beanstalk 콘솔을 사용하여 환경 구성
<a name="environments-cfg-console"></a>

이 주제에서는 Elastic Beanstalk 콘솔을 통해 사용할 수 있는 구성 옵션을 간략하게 설명하고 구성 페이지를 탐색하는 방법을 설명합니다.

**환경 구성 요약을 보려면**

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

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

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

## 구성 페이지
<a name="environments-cfg-console.overview"></a>

**Configuration overview(구성 개요)** 페이지에는 구성 범주 집합이 표시됩니다. 각 구성 범주는 일련의 관련 옵션을 그룹화합니다.

**서비스 액세스**  
이 범주의 옵션은 Elastic Beanstalk에서 환경을 관리하는 데 사용하는 *서비스 역할* 및 *EC2 인스턴스 프로파일*을 선택합니다. 선택적으로, EC2 키 페어를 선택하여 EC2 인스턴스에 안전하게 로그인합니다.

**네트워킹 및 데이터베이스**  
 이 범주의 옵션은 환경의 EC2 인스턴스 및 로드 밸런서에 대한 VPC 설정과 서브넷을 구성합니다. 또한 환경과 통합된 Amazon RDS 데이터베이스를 설정하는 옵션도 제공합니다.

**인스턴스 트래픽 및 규모 조정**  
이러한 옵션은 환경의 EC2 인스턴스에 대한 용량, 크기 조정 및 로드 밸런싱을 사용자 지정합니다. 또한 로드 밸런서에 전송된 요청에 대한 자세한 정보로 로그를 캡처하도록 Elastic Load Balancing을 구성할 수 있습니다.

EC2 인스턴스에 대한 다음 옵션도 구성에 사용할 수 있습니다.
+ 루트 볼륨 유형, 크기, 입/출력 작업 속도(IOPS) 및 처리량
+ 인스턴스 메타데이터 서비스(IMDS) 활성화
+ 인스턴스 트래픽을 제어하는 EC2 인스턴스 보안 그룹의 선택
+ CloudWatch 지표 모니터링 간격
+ 지표 로깅의 시간 간격

**업데이트, 모니터링 및 로깅**  
이 범주는 다음 옵션을 구성합니다.
+ 향상된 상태 보고를 선택하는 옵션을 비롯한 환경 상태 보고
+ Elastic Beanstalk가 환경에 변경 사항을 배포하는 시기와 방법을 정의하는 관리형 플랫폼 업데이트
+ 애플리케이션의 동작에 대한 데이터를 수집하여 문제 및 최적화 기회를 식별하는 X-Ray 서비스 활성화
+ 프록시 서버 및 OS 환경 속성을 비롯한 플랫폼별 옵션

### 구성 페이지 탐색
<a name="environments-cfg-console-navigation"></a>

구성 범주에서 **편집**을 선택하여 연결된 구성 페이지를 시작합니다. 이 페이지에서 전체 옵션 값을 확인 및 변경할 수 있습니다.

**구성 범주에서 탐색**  
다음 작업 중 하나를 사용하여 구성 범주 페이지에서 탐색합니다.
+ **취소** - 구성 변경 사항을 적용하지 않고 **구성** 개요 페이지로 돌아갑니다. **취소**를 선택하면 대기 중인 구성 범주 변경 사항이 콘솔에서 삭제됩니다.

  또한 **이벤트**나 **로그** 같은 다른 콘솔 페이지를 선택하여 구성 변경을 취소할 수도 있습니다.
+ **Continue(계속)** – **Configuration overview(구성 개요)** 페이지로 돌아갑니다. 그 후에는 변경을 계속하거나 대기 중인 변경 사항을 적용할 수 있습니다.
+ **적용** – 구성 범주의 변경 사항을 환경에 적용합니다. 경우에 따라서는 구성 결정 중 하나의 결과를 확인하라는 메시지가 표시됩니다.

****구성** 개요 페이지에서 탐색**  
구성 범주에서 **편집**을 선택하여 관련 구성 페이지를 시작합니다. 여기에서 전체 옵션 값을 확인 및 변경할 수 있습니다. 옵션 보기와 수정이 완료되면 **구성** 개요 페이지에서 다음 작업 중 하나를 선택할 수 있습니다.
+ **취소** – 구성 변경 사항을 적용하지 않고 환경의 대시보드로 돌아갑니다. **취소**를 선택하면 대기 중인 구성 범주 변경 사항이 콘솔에서 삭제됩니다.

  또한 **이벤트**나 **로그** 같은 다른 콘솔 페이지를 선택하여 구성 변경을 취소할 수도 있습니다.
+ **변경 사항 검토** – 대기 중인 모든 구성 범주 변경 사항에 대한 요약을 가져옵니다. 자세한 내용은 [변경 사항 검토 페이지](#environments-cfg-console.review)을 참조하세요.
+ **변경 적용(Apply changes)** – 구성 범주의 변경 사항을 환경에 적용합니다. 경우에 따라서는 구성 결정 중 하나의 결과를 확인하라는 메시지가 표시됩니다.

## 변경 사항 검토 페이지
<a name="environments-cfg-console.review"></a>

**Review Changes(변경 사항 검토)** 페이지에는 대기 중이며 아직 사용자의 환경에 적용되지 않은 모든 구성 범주의 옵션 변경 사항이 테이블로 표시됩니다.

테이블에 Elastic Beanstalk의 식별 작업을 위한 **옵션(Option)**과 **네임스페이스(Namespace)**가 조합된 각각의 옵션이 나열됩니다. 자세한 내용은 [구성 옵션](command-options.md)을 참조하세요.

![\[Elastic Beanstalk 콘솔의 구성 페이지 내 변경 사항 검토\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environments-cfg-console-review-new-console.png)


변경 사항 검토가 완료되면 다음 작업 중 하나를 선택할 수 있습니다.
+ **Continue(계속)** – **Configuration overview(구성 개요)** 페이지로 돌아갑니다. 그 후에는 변경을 계속하거나 대기 중인 변경 사항을 적용할 수 있습니다.
+ **변경 적용(Apply changes)** – 구성 범주의 변경 사항을 환경에 적용합니다. 경우에 따라서는 구성 결정 중 하나의 결과를 확인하라는 메시지가 표시됩니다.

# Elastic Beanstalk 환경에 대한 Amazon EC2 인스턴스
<a name="using-features.managing.ec2"></a>

이 주제에서는 Elastic Beanstalk 환경에 영향을 미치는 Amazon EC2 인스턴스 및 구성 옵션에 대해 설명합니다.

웹 서버 환경을 생성할 때는 *인스턴스*라고 하는 하나 이상의 Amazon Elastic Compute Cloud(Amazon EC2) 가상 머신을 AWS Elastic Beanstalk 생성합니다.

사용자 환경 인스턴스는 선택한 플랫폼에서 웹 앱을 실행하도록 구성됩니다. 환경을 생성할 때 또는 이미 실행 중일 때 환경 인스턴스의 다양한 속성과 동작을 변경할 수 있습니다. 또는 환경에 배포하는 소스 코드 수정을 통해 사전에 이러한 변경을 수행할 수 있습니다. 자세한 내용은 [구성 옵션](command-options.md) 단원을 참조하세요.

**참고**  
환경 [오토 스케일링 그룹](using-features.managing.as.md)은 애플리케이션을 실행하는 Amazon EC2 인스턴스를 관리합니다. 이 주제에 설명된 구성을 변경할 경우 시작 구성도 변경됩니다. 시작 구성은 Amazon EC2 시작 템플릿 또는 Auto Scaling 그룹 시작 구성 리소스입니다. 이 변경 사항에 따라 [모든 인스턴스를 교체](environments-updating.md)해야 합니다. 또한 구성된 업데이트에 따라 [롤링 업데이트](using-features.rollingupdates.md) 또는 [변경 불가능한 업데이트](environmentmgmt-updates-immutable.md)를 트리거합니다.

**EC2 인스턴스 구입 옵션**  
Elastic Beanstalk는 여러 Amazon EC2 [인스턴스 구매 옵션](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html)을 지원합니다.
+ **온디맨드** - *온디맨드 인스턴스*는 종량제 리소스이므로 사용할 때 장기 약정이 필요하지 않습니다.
+ **예약** - *예약 인스턴스*는 사용자 환경에서 일치하는 온디맨드 인스턴스에 자동으로 적용되는 사전 구매 결제 할인입니다.
+ **스팟** - *스팟 인스턴스*는 온디맨드 가격보다 저렴한 비용으로 사용할 수 있는 미사용 Amazon EC2 인스턴스입니다. 환경에서 스팟 인스턴스 할당을 활성화하고 구성할 수 있습니다. 자세한 내용은 [Elastic Beanstalk 환경 인스턴스의 Auto Scaling](using-features.managing.as.md) 단원을 참조하십시오.

**Topics**
+ [

# Amazon EC2 인스턴스 유형
](using-features.managing.ec2.instance-types.md)
+ [

# Elastic Beanstalk 콘솔을 사용하여 Amazon EC2 인스턴스 구성
](using-features.managing.ec2.console.md)
+ [

# EC2 보안 그룹 관리
](using-features.managing.ec2.instances.sg.md)
+ [

# 를 사용하여 Amazon EC2 보안 그룹 및 인스턴스 유형 구성 AWS CLI
](using-features.managing.ec2.aws-cli.md)
+ [

# 네임스페이스 옵션으로 Amazon EC2 인스턴스 구성
](using-features.managing.ec2.namespace.md)
+ [

# Elastic Beanstalk 환경 인스턴스에서 IMDS 구성
](environments-cfg-ec2-imds.md)

# Amazon EC2 인스턴스 유형
<a name="using-features.managing.ec2.instance-types"></a>

이 주제에서는 *인스턴스 유형 *이라는 용어를 설명합니다. 새 환경을 생성하면 Elastic Beanstalk는 사용자가 선택한 Amazon EC2 *인스턴스 유형*에 따른 Amazon EC2 인스턴스를 프로비저닝합니다. 선택한 인스턴스 유형을 기준으로 인스턴스를 실행하는 호스트 하드웨어가 결정됩니다. EC2 인스턴스 유형은 각각이 기반으로 하는 프로세서 아키텍처별로 분류할 수 있습니다. Elastic Beanstalk는 AWS Graviton 64비트 Arm 아키텍처(arm64), 64비트 아키텍처(x86) 및 32비트 아키텍처(i386)와 같은 프로세서 아키텍처를 기반으로 인스턴스 유형을 지원합니다. Elastic Beanstalk는 새 환경을 생성할 경우 x86 프로세서 아키텍처를 기본적으로 선택합니다.

**참고**  
i386 32비트 아키텍처는 대부분의 Elastic Beanstalk 플랫폼에서 더 이상 지원되지 않습니다. 대신 x86 또는 arm64 아키텍처 유형을 선택하는 것을 권장합니다. Elastic Beanstalk는 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances) 네임스페이스의 i386 프로세서 인스턴스 유형에 대한 [구성 옵션](command-options.md)을 제공합니다.

지정된 Elastic Beanstalk 환경에 대한 구성의 모든 인스턴스 유형에 있는 프로세서 아키텍처는 동일한 유형이여야 합니다. x86 아키텍처 기반의 t2.medium 인스턴스 유형이 이미 존재하는 기존 환경에 새 인스턴스 유형을 추가한다고 가정하십시오. t2.small과 같은 동일한 아키텍처의 다른 인스턴스 유형만 추가할 수 있습니다. 기존 인스턴스 유형을 다른 아키텍처의 인스턴스 유형으로 바꾸려면 이 작업을 수행하면 됩니다. 하지만 명령의 모든 인스턴스 유형이 동일한 유형의 아키텍처를 기반으로 해야 합니다.

호환되는 새로운 인스턴스 유형이 Amazon EC2에 도입되고 나면 Elastic Beanstalk는 정기적으로 지원을 추가합니다. 사용 가능한 인스턴스 유형에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)을 참조하세요.

**참고**  
이제 Elastic Beanstalk는 모든 Graviton 지원 리전의 모든 최신 Amazon Linux 2 플랫폼에서 AWS Graviton에 대한 지원을 제공합니다. arm64 기반 인스턴스 유형으로 Elastic Beanstalk 환경을 생성하는 방법에 대한 자세한 내용은 [Elastic Beanstalk 콘솔을 사용하여 Amazon EC2 인스턴스 구성](using-features.managing.ec2.console.md) 단원을 참조하십시오.  
arm64 아키텍처에서 Amazon EC2 인스턴스를 실행하는 새 환경을 만들고 Elastic Beanstalk의 [배포 옵션](using-features.deploy-existing-version.md)을 사용하여 기존 애플리케이션을 해당 환경으로 마이그레이션합니다.  
  
Graviton arm64 기반 프로세서에 대한 자세한 내용은 다음 AWS 리소스를 참조하세요.  
이점 - [AWS Graviton 프로세서](https://aws.amazon.com/ec2/graviton/) 
*시작하기* 및 *언어별 고려 사항과 같은 기타 주제 -* [AWS Graviton](https://github.com/aws/aws-graviton-getting-started#getting-started-with-aws-graviton) GitHub 시작하기 문서 

# Elastic Beanstalk 콘솔을 사용하여 Amazon EC2 인스턴스 구성
<a name="using-features.managing.ec2.console"></a>

Elastic Beanstalk 콘솔에서 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 생성하거나 수정할 수 있습니다.

**참고**  
Elastic Beanstalk 콘솔은 기존 환경의 프로세서 아키텍처를 변경하는 옵션을 제공하지 않지만 AWS CLI를 사용하여 변경할 수 있습니다. 예제 명령은 [를 사용하여 Amazon EC2 보안 그룹 및 인스턴스 유형 구성 AWS CLI](using-features.managing.ec2.aws-cli.md) 단원을 참조하세요.

**환경을 생성하는 동안 Elastic Beanstalk 콘솔에서 Amazon EC2 인스턴스를 구성하려면**

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

1. 탐색 창에서 **환경**을 선택합니다.

1. [새 환경 생성](environments-create-wizard.md)을 선택하여 환경 생성을 시작합니다.

1. 마법사의 기본 페이지에서 **환경 생성**을 선택하기 전에 **추가 옵션 구성**을 선택합니다.

1. **인스턴스** 구성 범주에서 **편집**을 선택합니다. 이 범주의 설정을 변경한 다음 **적용**을 선택합니다. 설정 설명은 이 페이지의 [인스턴스 범주 설정](#using-features.managing.ec2.console.instances) 단원을 참조하십시오.

1. [**용량**] 구성 범주에서 [**편집**]을 선택합니다. 이 범주의 설정을 변경한 다음 **계속**을 선택합니다. 설정 설명은 이 페이지의 [용량 범주 설정](#using-features.managing.ec2.console.capacity)을 참조하십시오.
**프로세서 아키텍처 선택**  
스크롤을 **프로세서**까지 아래로 내려 EC2 인스턴스에 대한 프로세서 아키텍처를 선택합니다. 콘솔은 이전에 **환경 생성(Create environment)** 패널에서 선택한 플랫폼에서 지원하는 프로세서 아키텍처를 나열합니다.  
필요한 프로세서 아키텍처가 표시되지 않는 경우, 구성 범주 목록으로 돌아가 해당 아키텍처를 지원하는 플랫폼을 선택하십시오. **용량 수정(Modify Capacity)** 패널에서 **취소(Cancel)**를 선택합니다. 그런 다음 **플랫폼 버전 변경(Change platform version)**을 선택하여 새 플랫폼 설정을 선택합니다. 다음으로 **용량(Capacity)** 구성 범주에서 **편집(Edit)**을 선택하여 프로세서 아키텍처 선택 사항을 다시 확인합니다.  

![\[실행 환경에 대한 Elastic Beanstalk 용량 구성 창의 Amazon EC2 인스턴스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-env-config-ec2-capacity-create-env-page.png)


1. **저장**을 선택하고 난 후 환경에 필요한 다른 구성 부분을 변경합니다.

1. **환경 생성**을 선택합니다.







**Elastic Beanstalk 콘솔에서 실행 환경 Amazon EC2 인스턴스를 구성하려면**

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

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

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

1. [**인스턴스**] 구성 범주에서 [**편집**]을 선택합니다. 이 범주의 설정을 변경한 다음 **적용**을 선택합니다. 설정 설명은 이 페이지의 [인스턴스 범주 설정](#using-features.managing.ec2.console.instances) 단원을 참조하십시오.

1. [**용량**] 구성 범주에서 [**편집**]을 선택합니다. 이 범주의 설정을 변경한 다음 **계속**을 선택합니다. 설정 설명은 이 페이지의 [용량 범주 설정](#using-features.managing.ec2.console.capacity) 단원을 참조하십시오.

## 인스턴스 범주 설정
<a name="using-features.managing.ec2.console.instances"></a>

**인스턴스** 구성 범주에서는 Amazon EC2 인스턴스와 관련된 다음과 같은 설정을 사용할 수 있습니다.

**Topics**
+ [

### 모니터링 간격
](#using-features.managing.ec2.monitoring-interval)
+ [

### 루트 볼륨(부트 디바이스)
](#using-features.managing.ec2.rootvolume)
+ [

### 인스턴스 메타데이터 서비스
](#using-features.managing.ec2.imds)
+ [

### EC2 보안 그룹
](#using-features.managing.ec2.securitygroups)

![\[Elastic Beanstalk 인스턴스 구성 창의 Amazon EC2 인스턴스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-env-config-ec2-instances-page.png)


### 모니터링 간격
<a name="using-features.managing.ec2.monitoring-interval"></a>

기본적으로 환경 인스턴스는 추가 비용 없이 Amazon CloudWatch에 [기본 상태 측정치](using-features.healthstatus.md)를 5분 간격으로 게시합니다.

더 세부적인 보고를 받으려면 **모니터링 간격**을 **1분**으로 설정하여 환경의 리소스가 [기본 상태 측정치](using-features.healthstatus.md#monitoring-basic-cloudwatch)를 CloudWatch에 게시하는 빈도를 늘리면 됩니다. CloudWatch 서비스 요금은 1분 간격 측정치에 적용됩니다. 자세한 내용은 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)를 참조하세요.

### 루트 볼륨(부트 디바이스)
<a name="using-features.managing.ec2.rootvolume"></a>

환경의 각 인스턴스는 루트 볼륨으로 구성되어 있습니다. 루트 볼륨은 운영 체제, 라이브러리, 스크립트, 애플리케이션 소스 코드를 저장하기 위해 인스턴스에 연결된 Amazon EBS 블록 디바이스입니다. 기본적으로 모든 플랫폼은 스토리지에 일반용 SSD 블록 디바이스를 사용합니다.

**루트 볼륨 유형**을 수정하여 마그네틱 스토리지 또는 프로비저닝된 IOPS SSD 볼륨 유형을 사용하고, 필요한 경우 볼륨 크기를 늘릴 수 있습니다. 프로비저닝된 IOPS 볼륨의 경우 프로비저닝할 **IOPS**의 수도 선택해야 합니다. **처리량**은 gp3 SSD 볼륨 유형에만 적용됩니다. 프로비저닝할 처리량을 입력할 수 있습니다. 이 값은 초당 125\$11,000 메가 바이트(MiB/s) 범위 내로 설정할 수 있습니다. 성능과 가격 요건에 맞는 볼륨 유형을 선택합니다.

**중요**  
`RootVolumeType` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EBS 볼륨 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)과 [Amazon EBS 제품 세부 정보](https://aws.amazon.com/ebs/details/)를 참조하세요.

### 인스턴스 메타데이터 서비스
<a name="using-features.managing.ec2.imds"></a>

인스턴스 메타데이터 서비스(IMDS)는 인스턴스의 코드가 인스턴스 메타데이터에 안전하게 액세스하기 위해 사용하는 온 인스턴스 구성 요소입니다. 코드는 두 가지 방법 중 하나를 사용하여 실행 중인 인스턴스에서 인스턴스 메타데이터에 액세스할 수 있습니다. 인스턴스 메타데이터 서비스 버전 1(IMDSv1) 또는 인스턴스 메타데이터 서비스 버전 2(IMDSv2)입니다. IMDSv2가 더 안전합니다. IMDSv1을 비활성화하고 IMDSv2를 적용하십시오. 자세한 내용은 [Elastic Beanstalk 환경 인스턴스에서 IMDS 구성](environments-cfg-ec2-imds.md) 섹션을 참조하세요.

**참고**  
이 구성 페이지의 IMDS 섹션은 IMDSv2를 지원하는 플랫폼 버전에 대해서만 설명합니다.

### EC2 보안 그룹
<a name="using-features.managing.ec2.securitygroups"></a>

인스턴스에 연결된 보안 그룹은 인스턴스로 들어오고 나가는 트래픽의 허용 여부를 결정합니다.

Elastic Beanstalk이 생성하는 기본 EC2 보안 그룹은 HTTP(80) 및 SSH(22)의 표준 포트에 대해 인터넷 또는 로드 밸런서로부터의 모든 인바운드 트래픽을 허용합니다. EC2 인스턴스에 대한 방화벽 규칙을 지정하기 위해 자체 사용자 지정 보안 그룹을 정의할 수도 있습니다. 보안 그룹은 다른 포트 또는 다른 소스에서의 트래픽을 허용할 수 있습니다. 예를 들어 제한된 IP 주소 범위에서 포트 22의 인바운드 트래픽을 허용하는 SSH 액세스용 보안 그룹을 생성할 수 있습니다. 또는 추가 보안을 위해 사용자만 액세스할 수 있는 배스천 호스트의 트래픽을 허용하는 보안 그룹을 만들 수 있습니다.

[aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 네임스페이스의 `DisableDefaultEC2SecurityGroup` 옵션을 `true`로 설정하여 기본 EC2 보안 그룹에서 환경을 제외할 수 있습니다. 이 옵션은 콘솔에서 사용할 수 없지만, AWS CLI을(를) 사용하여 설정할 수 있습니다. 자세한 내용은 [EC2 보안 그룹 관리](using-features.managing.ec2.instances.sg.md) 단원을 참조하십시오.

Amazon EC2 보안 그룹에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2 보안 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)을 참조하세요.

**참고**  
환경 A의 인스턴스와 환경 B의 인스턴스 간 트래픽을 허용하기 위해 Elastic Beanstalk는 환경 B로 연결된 보안 그룹에 규칙을 추가할 수 있습니다. 이후 Elastic Beanstalk는 환경 A로 연결된 보안 그룹을 지정합니다. 이를 통해 환경 A의 인스턴스에서 인바운드 트래픽 또는 아웃바운드 트래픽이 허용됩니다. 그러나 그렇게 할 시 두 보안 그룹 사이에 종속성이 생성됩니다. 나중에 환경 A를 종료할 경우 환경 B의 보안 그룹이 여기에 종속되어 있기 때문에 Elastic Beanstalk는 이 환경의 보안 그룹을 삭제할 수 없습니다.  
따라서 먼저 보안 그룹을 별도로 생성하는 것을 권장합니다. 그런 다음 환경 A에 첨부하고 환경 B의 보안 그룹 규칙에서 지정합니다.

## 용량 범주 설정
<a name="using-features.managing.ec2.console.capacity"></a>

**용량** 구성 범주에서는 Amazon EC2 인스턴스와 관련된 다음과 같은 설정을 사용할 수 있습니다.

**Topics**
+ [

### 인스턴스 유형
](#using-features.managing.ec2.instancetypes)
+ [

### AMI ID
](#using-features.managing.ec2.customami)

![\[생성 환경에 대한 Elastic Beanstalk 용량 구성 창의 Amazon EC2 인스턴스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-env-config-ec2-capacity-page2.png)


### 인스턴스 유형
<a name="using-features.managing.ec2.instancetypes"></a>

**인스턴스 유형** 설정은 애플리케이션을 실행하기 위해 시작되는 Amazon EC2 인스턴스 유형을 결정합니다. 이 구성 페이지에는 **인스턴스 유형** 목록이 표시됩니다. 하나 이상의 인스턴스 유형을 선택할 수 있습니다. Elastic Beanstalk 콘솔은 사용자 환경에 대해 구성된 프로세서 아키텍처를 토대로 인스턴스 유형만 표시합니다. 따라서 동일한 프로세서 아키텍처의 인스턴스 유형만 추가할 수 있습니다.

**참고**  
Elastic Beanstalk 콘솔은 기존 환경의 프로세서 아키텍처를 변경하는 옵션을 제공하지 않지만 AWS CLI를 사용하여 변경할 수 있습니다. 예제 명령은 [를 사용하여 Amazon EC2 보안 그룹 및 인스턴스 유형 구성 AWS CLI](using-features.managing.ec2.aws-cli.md) 단원을 참조하세요.

부하가 걸린 동안에는 애플리케이션을 실행할 만큼 강력하지만 대부분의 시간 동안에는 유휴 상태인 인스턴스를 선택합니다. 개발 용도로 사용되는 인스턴스의 t2 군은 단기간 버스트 기능을 제공함과 동시에 보통 수준의 전력량을 제공합니다. 대규모 고가용성 애플리케이션의 경우 인스턴스 하나가 작동 중단된 경우 용량에 크게 영향을 주지 않도록 인스턴스 풀을 사용합니다. 정상 시간 동안 보통 부하에서 인스턴스를 다섯 개 실행할 수 있는 인스턴스 유형으로 시작합니다. 한 인스턴스가 실패한 경우 다른 인스턴스가 나머지 트래픽을 흡수할 수 있습니다. 용량 버퍼는 피크 시간 동안 트래픽이 스케일 업할 때 환경이 확장될 시간을 제공합니다.

Amazon EC2 인스턴스 패밀리 및 유형에 대한 자세한 내용은 **Amazon EC2 사용 설명서의 [인스턴스 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)을 참조하세요. 요구 사항 및 지원되는 리전을 충족하는 인스턴스 유형을 확인하려면 *Amazon EC2 사용 설명서*의 [사용 가능한 인스턴스 유형](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes)을 참조하세요.

### AMI ID
<a name="using-features.managing.ec2.customami"></a>

Amazon Machine Image(AMI)는 Elastic Beanstalk가 환경에서 Amazon EC2 인스턴스를 시작하기 위해 사용하는 Amazon Linux 또는 Windows Server 머신 이미지입니다. Elastic Beanstalk는 애플리케이션을 실행하는 데 필요한 도구와 리소스가 포함된 머신 이미지를 제공합니다.

Elastic Beanstalk는 사용자가 선택한 리전, 플랫폼 버전 및 프로세서 아키텍처에 따라 환경의 기본 AMI를 선택합니다. [사용자 지정 AMI](using-features.customenv.md)를 만든 경우 기본 AMI ID를 본인의 기본 사용자 지정 ID로 바꿉니다.

# EC2 보안 그룹 관리
<a name="using-features.managing.ec2.instances.sg"></a>

Elastic Beanstalk는 환경을 생성할 때 기본 보안 그룹을 시작되는 EC2 인스턴스에 할당합니다. 인스턴스에 연결된 보안 그룹은 인스턴스로 들어오고 나가는 트래픽의 허용 여부를 결정합니다.

Elastic Beanstalk이 생성하는 기본 EC2 보안 그룹은 HTTP(80) 및 SSH(22)의 표준 포트에 대해 인터넷 또는 로드 밸런서로부터의 모든 인바운드 트래픽을 허용합니다. EC2 인스턴스에 대한 방화벽 규칙을 지정하기 위해 자체 사용자 지정 보안 그룹을 정의할 수도 있습니다. 보안 그룹은 다른 포트 또는 다른 소스에서의 트래픽을 허용할 수 있습니다. 예를 들어 제한된 IP 주소 범위에서 포트 22의 인바운드 트래픽을 허용하는 SSH 액세스용 보안 그룹을 생성할 수 있습니다. 또는 추가 보안을 위해 사용자만 액세스할 수 있는 배스천 호스트의 트래픽을 허용하는 보안 그룹을 만들 수 있습니다.

[aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 네임스페이스의 `DisableDefaultEC2SecurityGroup` 옵션을 `true`로 설정하여 기본 EC2 보안 그룹에서 환경을 제외할 수 있습니다. [AWS CLI](using-features.managing.ec2.aws-cli.md) 또는 구성 파일을 사용하여 이 옵션을 환경에 적용하고, EC2 인스턴스에 사용자 지정 보안 그룹을 연결하세요.

## 다중 인스턴스 환경에서 EC2 보안 그룹 관리
<a name="using-features.managing.ec2.instances.sg.load-balancer-security"></a>

다중 인스턴스 환경에서 사용자 지정 EC2 보안 그룹을 생성하는 경우 로드 밸런서 및 수신 트래픽 규칙이 인스턴스를 안전하고 액세스할 수 있도록 유지하는 방법도 고려해야 합니다.

여러 EC2 인스턴스가 있는 환경으로의 인바운드 트래픽은 모든 EC2 인스턴스 간에 수신 트래픽을 전달하는 [로드 밸런서](using-features.managing.elb.md)에 의해 관리됩니다. Elastic Beanstalk이 기본 EC2 보안 그룹을 생성할 때, 로드 밸런서로부터의 인바운드 트래픽을 허용하는 규칙도 함께 정의합니다. 보안 그룹에 이 인바운드 규칙이 없으면 수신 트래픽이 인스턴스에 들어갈 수 없습니다. 이 조건은 사실상 인스턴스가 외부 요청을 수신하지 못하도록 차단하는 결과를 초래합니다.

로드 밸런싱 환경에서 기본 EC2 보안 그룹을 비활성화하면 Elastic Beanstalk은 일부 구성 규칙을 검증합니다. 구성이 검증 검사를 충족하지 않으면 필요한 구성을 제공할 것을 안내하는 메시지가 표시됩니다. 검증 검사는 다음과 같습니다.
+ Application Load Balancer 또는 Classic Load Balancer 여부에 따라 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 또는 [aws:elb:loadbalancer](command-options-general.md#command-options-general-elbloadbalancer)의 `SecurityGroups` 옵션을 사용하여 로드 밸런서에 최소 하나 이상의 보안 그룹을 지정해야 합니다. AWS CLI 예제는 단원을 참조하십시오[ AWS CLI를 사용하여 구성](using-features.managing.ec2.aws-cli.md).
+ EC2 인스턴스가 로드 밸런서로부터 트래픽을 수신할 수 있도록 인바운드 트래픽 규칙이 존재해야 합니다. EC2 보안 그룹과 로드 밸런서 보안 그룹 모두 해당 인바운드 규칙을 참조해야 합니다. 자세한 내용은 이어지는 [트래픽용 인바운드 규칙](#using-features.managing.ec2.instances.sg.load-balancer-security.rules) 단원을 참조하십시오.

### 트래픽용 인바운드 규칙
<a name="using-features.managing.ec2.instances.sg.load-balancer-security.rules"></a>

다중 인스턴스 환경의 EC2 보안 그룹에는 로드 밸런서 보안 그룹을 참조하는 인바운드 규칙이 포함되어야 합니다. 이 조건은 로드 밸런서 유형에 관계없이 전용 또는 공유 로드 밸런서 및 사용자 지정 또는 기본 보안 그룹을 사용하는 모든 환경에 적용됩니다.

EC2 콘솔에서 환경 구성 요소에 연결된 모든 보안 그룹을 확인할 수 있습니다. 다음 이미지는 환경 생성 작업 중 Elastic Beanstalk이 기본적으로 생성하는 보안 그룹이 EC2 콘솔에 표시된 모습입니다.

**보안 그룹** 화면에 환경과 관련 보안 그룹이 표시됩니다. *GettingStarted-env*와 *GettingStarted3-env*는 모두 전용 로드 밸런서를 사용하는 다중 인스턴스 환경입니다. 이러한 각 환경에는 두 개의 보안 그룹이 나열되어 있습니다. 하나는 EC2 인스턴스용이고 다른 하나는 로드 밸런서용입니다. Elastic Beanstalk은 환경을 생성할 때 이러한 보안 그룹을 함께 생성합니다. *GettingStarted5-env*는 EC2 인스턴스 하나만 있는 환경으로 로드 밸런서를 사용하지 않기 때문에, 로드 밸런서 보안 그룹이 없습니다.

**인바운드 규칙** 화면은 *GettingStarted3-env*의 인스턴스에 대한 EC2 보안 그룹으로 드릴다운합니다. 이 예제는 EC2 보안 그룹의 인바운드 규칙을 정의합니다. *인바운드 규칙*의 *소스* 열에는 이전 이미지에 나와 있는 로드 밸런서 보안 그룹의 보안 그룹 ID가 표시된다는 점에 유의하세요. 이 규칙을 사용하면 *GettingStarted3-env*의 EC2 인스턴스가 포트 80에서 특정 로드 밸런서로부터 인바운드 트래픽을 수신할 수 있습니다.

![\[Amazon EC2 콘솔에서는 Elastic Beanstalk 환경별로 보안 그룹이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-env-config-ec2-ec2console-sg-to-rule.png)






자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 보안 그룹 변경](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html) 및 [Elastic Load Balancing 규칙](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-elb)을 참조하세요.

# 를 사용하여 Amazon EC2 보안 그룹 및 인스턴스 유형 구성 AWS CLI
<a name="using-features.managing.ec2.aws-cli"></a>

 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 Elastic Beanstalk 환경에서 Amazon EC2 인스턴스를 구성할 수 있습니다.

## 를 사용하여 EC2 보안 그룹 구성 AWS CLI
<a name="using-features.managing.ec2.aws-cli.security-groups"></a>

이 주제에서는 단일 인스턴스 및 로드 밸런싱(다중 인스턴스) 환경 모두에 대한 다양한 EC2 보안 그룹 구성의 예시를 제공합니다. 이러한 예제에 사용된 옵션에 대한 자세한 내용은 [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 섹션을 참조하세요.

**참고**  
환경 생성 작업은 기본적으로 EC2 보안 그룹을 제공합니다. 또한 기본적으로 Application Load Balancer를 사용하여 환경을 생성합니다.  
환경 업데이트 작업은 `DisableDefaultEC2SecurityGroup` 부울 옵션을 사용하여 환경에 대한 기본 EC2 보안 그룹을 비활성화하거나 활성화하는 데 사용할 수 있습니다. *예제 5*는 이전에 환경을 수정한 경우 환경을 기본 보안 구성으로 다시 설정하는 방법을 보여줍니다.

다음 예제에서는 기본 EC2 보안 그룹을 옵트아웃하고 대신 사용자 지정 보안 그룹을 제공하는 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 명령을 보여줍니다. `DisableDefaultEC2SecurityGroup` 옵션이 `true`로 설정되어 있으므로 Elastic Beanstalk가 일반적으로 EC2 인스턴스에 연결하는 기본 EC2 보안 그룹은 생성되지 않습니다. 따라서 다른 보안 그룹에 `SecurityGroups` 옵션을 제공해야 합니다.

[aws:elasticbeanstalk:environment](command-options-general.md#command-options-general-elasticbeanstalkenvironment) `EnvironmentType` 옵션은 `SingleInstance`로 설정되어 있습니다. 단일 인스턴스 환경을 생성하려면 `LoadBalanced`가 기본 `EnvironmentType`이므로 이 옵션을 지정해야 합니다. 이 환경에는 로드 밸런서가 포함되어 있지 않으므로, 로드 밸런서 보안 그룹을 지정할 필요가 없습니다.

**Example 1 - 사용자 지정 EC2 보안 그룹을 사용하는 새로운 단일 인스턴스 환경(네임스페이스 옵션 인라인 구성)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 applrunning Node.js 22" \
--option-settings \
Namespace=aws:elasticbeanstalk:environment,OptionName=EnvironmentType,Value=SingleInstance \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:autoscaling:launchconfiguration,OptionName=DisableDefaultEC2SecurityGroup,Value=true \
Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=sg-abcdef01, sg-abcdef02 \
Namespace=aws:autoscaling:launchconfiguration,OptionName=EC2KeyName,Value=my-keypair
```





대안으로, 네임스페이스 옵션을 인라인으로 포함하는 대신 `options.json` 파일을 사용하여 해당 옵션을 지정하십시오.

**Example 2 - 사용자 지정 EC2 보안 그룹을 사용하는 새로운 단일 인스턴스 환경(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  { "Namespace" : "aws:elasticbeanstalk:environment", 
    "OptionName" : "EnvironmentType", 
    "Value" : "SingleInstance" 
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "EC2KeyName",
    "Value": "my-keypair"
  }
]
```

다음 예제에서는 로드 밸런싱된 환경을 생성합니다. [aws:elasticbeanstalk:environment](command-options-general.md#command-options-general-elasticbeanstalkenvironment) 네임스페이스 옵션 `LoadBalancerType`을(를) `application`으(로) 설정합니다. `DisableDefaultEC2SecurityGroup` 옵션으로 기본 EC2 보안 그룹을 비활성화하므로 이전 예제와 같이 [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) `SecurityGroups` 옵션을 사용하여 EC2 인스턴스에 대한 사용자 지정 보안 그룹을 다시 제공해야 합니다. 이 환경은 트래픽을 라우팅하기 위한 로드 밸런서를 포함하므로 로드 밸런서에 대한 보안 그룹도 제공해야 합니다.

Classic Load Balancer로 환경을 생성하려면, 동일 구성인 경우, [aws:elasticbeanstalk:environment](command-options-general.md#command-options-general-elasticbeanstalkenvironment) 네임스페이스 옵션 `LoadBalancerType`의 구성을 `classic`으(로) 업데이트합니다.

다양한 로드 밸런서 유형에는 보안 그룹을 설정할 수 있는 옵션들이 각각 다른 네임스페이스에 있습니다.


+ Application Load Balancer - [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) `SecurityGroups` 옵션
+ Classic Load Balancer - [aws:elb:loadbalancer](command-options-general.md#command-options-general-elbloadbalancer) `SecurityGroups` 옵션
+ Network Load Balancer- Network Load Balancer에 보안 그룹이 없으므로 VPC 식별자로 EC2 보안 그룹을 구성합니다. 자세한 정보는 *Network Load Balancer 사용 설명서*의 [Network Load Balancer에 대한 보안 그룹 업데이트](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-security-groups.html)를 참조하세요.

**Example 3 - 사용자 지정 EC2 보안 그룹을 사용하는 새로운 다중 인스턴스 환경(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  { 
    "Namespace" : "aws:elasticbeanstalk:environment", 
    "OptionName" : "EnvironmentType", 
    "Value" : "LoadBalanced" 
  },
  { 
  "Namespace" : "aws:elasticbeanstalk:environment",
    "OptionName" : "LoadBalancerType",
    "Value" : "application"
  },
  {
    "Namespace" : "aws:elbv2:loadbalancer",
    "OptionName" : "SecurityGroups",
    "Value" : "sg-abcdefghikl012345"
  }, 
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "EC2KeyName",
    "Value": "my-keypair"
  }
]
```

[update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 명령을 사용하여 기존 환경에 대한 기본 EC2 보안 그룹을 비활성화할 수 있습니다. 다음 예제 명령은 기본 EC2 보안 그룹을 비활성화하고 환경의 EC2 인스턴스 사용자 지정 EC2 보안 그룹을 할당합니다.

환경이 로드 밸런싱되는지 여부와 로드 밸런서 유형에 따라 예제 4(a), 4(b), 4(c)의 예제 `options.jason` 파일을 사용하세요. 구성 파일 4(a)는 단일 인스턴스 환경의 보안 그룹을 지정합니다. 로드 밸런서가 필요하지 않으므로 EC2 인스턴스에 대한 보안 그룹만 제공합니다. 구성 파일 4(b) 및 4(c)는 Application Load Balancer 및 Classic Load Balancer의 보안 그룹을 지정합니다. 이러한 경우 로드 밸런서에 대한 보안 그룹도 지정해야 합니다.

**Example 4 - 기존 환경을 업데이트하여 기본 EC2 보안 그룹 비활성화(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example 4(a) - 단일 인스턴스 환경을 위한 구성 파일(로드 밸런서 없음)**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  }
]
```

Application Load Balancer를 사용하는 환경을 업데이트하려면, `aws:elbv2:loadbalancer` 네임스페이스를 사용해 로드 밸런서의 보안 그룹을 지정하세요.

**Example 4(b) - Application Load Balancer가 있는 환경을 위한 구성 파일**  

```
### example options.json ###
[
  {
    "Namespace" : "aws:elbv2:loadbalancer",
    "OptionName" : "SecurityGroups",
    "Value" : "sg-abcdefghikl012345"
  }, 
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  }
]
```

Classic Load Balancer를 사용하는 환경을 업데이트하려면, `aws:elb:loadbalancer` 네임스페이스를 사용해 로드 밸런서의 보안 그룹을 지정하세요.

**Example 4(c) - Classic Load Balancer를 사용하는 환경용 구성 파일**  

```
### example options.json ###
[
  {
    "Namespace" : "aws:elb:loadbalancer",
    "OptionName" : "SecurityGroups",
    "Value" : "sg-abcdefghikl012345"
  }, 
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",n
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  }
]
```

환경을 Elastic Beanstalk이 할당하는 기본 보안 그룹과 기본 동작 및 구성으로 되돌리려면 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 명령을 사용하여 `DisableDefaultEC2SecurityGroup`을 `false`로 설정하세요. 다중 인스턴스 환경의 경우 Elastic Beanstalk은 환경의 로드 밸런서에 대한 보안 그룹과 네트워크 트래픽 규칙도 함께 처리합니다.

다음 예제는 단일 인스턴스 환경과 다중 인스턴스(로드 밸런싱) 환경 모두에 적용됩니다.

**Example 5 - 기본 보안 그룹을 사용하여 환경을 다시 업데이트(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "false"
  }
]
```

## 를 사용하여 인스턴스 유형으로 EC2 구성 AWS CLI
<a name="using-features.managing.ec2.aws-cli.instance-types"></a>

이 주제에서는 환경에서 EC2 인스턴스의 인스턴스 유형을 구성하는 예제를 제공합니다.

첫 두 예제는 새 환경을 만듭니다. 이 명령은 arm64 프로세서 아키텍처를 기반으로 하는 Amazon EC2 인스턴스 유형인 t4g.small을 지정합니다. Elastic Beanstalk는 리전, 플랫폼 버전 및 인스턴스 유형을 토대로 EC2 인스턴스에 대해 이미지 ID(AMI)의 기본값을 설정합니다. 인스턴스 유형은 프로세서 아키텍처에 대응됩니다. `solution-stack-name` 파라미터는 플랫폼 버전에 적용됩니다.

**Example 1 - 새로운 arm64 기반 환경 생성(네임스페이스 옵션 인라인)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small
```



대안으로, 네임스페이스 옵션을 인라인으로 포함하는 대신 `options.json` 파일을 사용하여 해당 옵션을 지정하십시오.

**Example 2 - 새로운 arm64 기반 환경 생성(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:ec2:instances",
    "OptionName": "InstanceTypes",
    "Value": "t4g.small"
  }
]
```





다음 두 가지 예제는 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 명령을 사용하여 기존 환경에 대한 구성을 업데이트합니다. 이 예제에서는 arm64 프로세서 아키텍처를 기반으로 하는 또 다른 인스턴스 유형을 추가합니다. 기존 환경의 경우 추가하는 모든 인스턴스 유형에는 동일한 프로세서 아키텍처가 있어야 합니다. 기존 인스턴스 유형을 다른 아키텍처의 인스턴스 유형으로 바꾸려면 이 작업을 수행하면 됩니다. 하지만 명령의 모든 인스턴스 유형이 동일한 유형의 아키텍처인지 확인합니다.

**Example 3 - 기존 arm64 기반 환경 업데이트 (네임스페이스 옵션 인라인)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small,t4g.micro
```



대안으로, 네임스페이스 옵션을 인라인으로 포함하는 대신 `options.json` 파일을 사용하여 해당 옵션을 지정하십시오.

**Example 4 - 기존 arm64 기반 환경 업데이트(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:ec2:instances",
    "OptionName": "InstanceTypes",
    "Value": "t4g.small, t4g.micro"
  }
]
```





다음 두 예제에는 더 많은 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 명령이 표시됩니다. 이 예제에서는 `InstanceTypes`에 대한 값을 제공하지 않습니다. `InstanceTypes` 값이 지정되지 않은 경우 Elastic Beanstalk의 기본값은 x86 기반 프로세서 아키텍처로 설정됩니다. 환경의 EC2 인스턴스에 대한 이미지 ID(AMI)는 기본값이 리전, 플랫폼 버전 및 기본 인스턴스 유형에 따라 설정됩니다. 인스턴스 유형은 프로세서 아키텍처에 대응됩니다.

**Example 5 - 새로운 x86 기반 환경 생성(네임스페이스 옵션 인라인)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
```



대안으로, 네임스페이스 옵션을 인라인으로 포함하는 대신 `options.json` 파일을 사용하여 해당 옵션을 지정하십시오.

**Example 6 - 새로운 x86 기반 환경 만들기(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  }
]
```

# 네임스페이스 옵션으로 Amazon EC2 인스턴스 구성
<a name="using-features.managing.ec2.namespace"></a>

`aws:autoscaling:launchconfiguration` 네임스페이스의 [구성 옵션](command-options.md)을 사용하여 콘솔에서 사용할 수 없는 추가 옵션을 포함하여 해당 환경에 대한 인스턴스를 구성할 수 있습니다.

**중요**  
`DisableIMDSv1`, `RootVolumeType` 또는 `BlockDeviceMappings` 옵션 설정을 사용하면 Elastic Beanstalk가 시작 템플릿으로 환경을 생성하거나 시작 구성에서 시작 템플릿으로 기존 환경을 업데이트할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

다음 [구성 파일](ebextensions.md) 예시에서는 이 주제에서 설명하는 기본 구성 옵션을 사용합니다. 로드 밸런서에 대한 보안 그룹을 지정해야 하는 경우 추가 구성 옵션의 예를 보려면 [ AWS CLI를 사용하여 구성](using-features.managing.ec2.aws-cli.md) 항목을 참조하세요.

```
option_settings:
  aws:autoscaling:launchconfiguration:
    SecurityGroups: my-securitygroup
    MonitoringInterval: "1 minute"
    DisableIMDSv1: false
    DisableDefaultEC2SecurityGroup: true
    SecurityGroups: "sg-abcdef01, sg-abcdef02"
    EC2KeyName: my-keypair
    IamInstanceProfile: "aws-elasticbeanstalk-ec2-role"
    BlockDeviceMappings: "/dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0"   
  aws:elasticbeanstalk:environment:
    EnvironmentType: SingleInstance
```

`DisableDefaultEC2SecurityGroup` 및 `BlockDeviceMappings`는 콘솔에서 사용할 수 없습니다.

`BlockDeviceMappings`을(를) 사용하여 인스턴스의 추가 블록 디바이스를 구성할 수 있습니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [블록 디바이스 매핑](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html)을 참조하세요.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 [권장 값](command-options.md#configuration-options-recommendedvalues) 섹션을 참조하세요.

# Elastic Beanstalk 환경 인스턴스에서 IMDS 구성
<a name="environments-cfg-ec2-imds"></a>

이 주제에서는 인스턴스 메타데이터 서비스(IMDS)에 대해 설명합니다.

*인스턴스 메타데이터*는 애플리케이션이 실행 중인 인스턴스를 구성 또는 관리하는 데 사용할 수 있는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 관련 데이터입니다. 인스턴스 메타데이터 서비스(IMDS)는 인스턴스의 코드가 인스턴스 메타데이터에 안전하게 액세스하기 위해 사용하는 온 인스턴스 구성 요소입니다. 이 코드는 환경 인스턴스의 Elastic Beanstalk 플랫폼 코드, 애플리케이션이 사용할 수 있는 AWS SDK 또는 애플리케이션의 자체 코드일 수 있습니다. 자세한 내용은 **Amazon EC2 사용 설명서의 [인스턴스 메타데이터 및 사용자 데이터](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)를 참조하세요.

코드는 인스턴스 메타데이터 서비스 버전 1(IMDSv1) 또는 인스턴스 메타데이터 서비스 버전 2(IMDSv2)의 두 가지 방법 중 하나를 사용하여 실행 중인 인스턴스에서 인스턴스 메타데이터에 액세스할 수 있습니다. IMDSv2는 세션 지향 요청을 사용하며 IMDS에 액세스하기 위해 사용될 수 있는 여러 유형의 취약성을 완화합니다. 이러한 두 가지 방법에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 메타데이터 서비스 구성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)을 참조하세요.

**Topics**
+ [

## IMDS에 대한 플랫폼 지원
](#environments-cfg-ec2-imds.plat)
+ [

## IMDS 방법 선택
](#environments-cfg-ec2-imds.choose)
+ [

## Elastic Beanstalk 콘솔을 사용하여 IMDS 구성
](#environments-cfg-ec2-imds.console)
+ [

## aws:autoscaling:launchconfiguration 네임스페이스
](#environments-cfg-ec2-imds.namespace)

## IMDS에 대한 플랫폼 지원
<a name="environments-cfg-ec2-imds.plat"></a>

Amazon Linux 2와 Amazon Linux 2023 및 Windows 서버에서 실행되는 Elastic Beanstalk 플랫폼은 IMDSv1과 IMDSv2를 모두 지원합니다. 자세한 내용은 [Elastic Beanstalk 콘솔을 사용하여 IMDS 구성](#environments-cfg-ec2-imds.console) 섹션을 참조하세요.

## IMDS 방법 선택
<a name="environments-cfg-ec2-imds.choose"></a>

환경에서 지원하고자 하는 IMDS 방법에 대한 결정을 내릴 때는 다음 사용 사례를 고려하세요.
+ *AWS SDK* - 애플리케이션에서 AWS SDK를 사용하는 경우 최신 버전의 SDK를 사용해야 합니다. AWS SDKs IMDS를 호출하고 최신 SDK 버전은 가능하면 IMDSv2를 사용합니다. IMDSv1을 비활성화하거나 애플리케이션에서 이전 SDK 버전을 사용하는 경우 IMDS 호출이 실패할 수 있습니다.
+ *애플리케이션 코드* - 애플리케이션에서 IMDS 호출을 수행하는 경우 직접 HTTP 요청을 하는 대신 호출을 수행할 수 있도록 AWS SDK 사용을 고려하세요. 이렇게 하면 IMDS 방법을 전환하기 위해 코드를 변경할 필요가 없습니다. AWS SDK는 가능하면 IMDSv2를 사용합니다.
+ *Elastic Beanstalk 플랫폼 코드* -이 코드는 AWS SDK를 통해 IMDS를 호출하므로 지원되는 모든 플랫폼 버전에서 IMDSv2를 사용합니다. 코드가 up-to-date AWS SDK를 사용하고 SDK를 통해 모든 IMDS 호출을 수행하는 경우 IMDSv1을 안전하게 비활성화할 수 있습니다.

## Elastic Beanstalk 콘솔을 사용하여 IMDS 구성
<a name="environments-cfg-ec2-imds.console"></a>

Elastic Beanstalk 콘솔에서 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 수정할 수 있습니다.

**중요**  
`DisableIMDSv1` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

**Elastic Beanstalk 콘솔에서 Amazon EC2 인스턴스에서 IMDS를 구성하려면**

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

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

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

1. **인스턴스 트래픽 및 스케일링(Instance traffic and scaling)** 구성 범주에서 **편집(Edit)**을 선택합니다.

1. **IMDSv1 비활성화**를 설정하고 IMDSv2를 적용합니다. IMDSv1 및 IMDSv2를 모두 활성화하려면 **IMDSv1 비활성화**를 선택 해제합니다.

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

## aws:autoscaling:launchconfiguration 네임스페이스
<a name="environments-cfg-ec2-imds.namespace"></a>

`aws:autoscaling:launchconfiguration` 네임스페이스의 [구성 옵션](command-options.md)을 사용하여 환경의 인스턴스에 IMDS를 구성할 수 있습니다.

**중요**  
`DisableIMDSv1` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

다음 [구성 파일](ebextensions.md) 예제는 `DisableIMDSv1` 옵션을 사용하여 IMDSv1을 비활성화합니다.

```
option_settings:
  aws:autoscaling:launchconfiguration:
    DisableIMDSv1: true
```

**DisableIMDSv1**을 `true`로 설정하여 IMDSv1을 비활성화하고 IMDSv2를 적용합니다.

**DisableIMDSv1**을 `false`로 설정하여 IMDSv1 및 IMDSv2를 모두 비활성화합니다.

# Elastic Beanstalk 환경 인스턴스의 Auto Scaling
<a name="using-features.managing.as"></a>

이 주제에서는 Elastic Beanstalk 환경의 워크로드를 관리하기 위해 Auto Scaling 기능을 어떻게 사용자 지정할 수 있는지 설명합니다. [Elastic Beanstalk 콘솔](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console), [네임스페이스 구성 옵션](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace), [AWS CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 또는 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli)를 사용해 환경의 Auto Scaling을 구성할 수 있습니다.

**로드 밸런싱 또는 단일 인스턴스 환경**  
 AWS Elastic Beanstalk 환경에는 환경에서 [Amazon EC2 인스턴스](using-features.managing.ec2.md)를 관리하는 *Auto Scaling 그룹이* 포함되어 있습니다. 단일 인스턴스 환경에서 Auto Scaling 그룹은 실행 중인 인스턴스가 항상 한 개가 있도록 보장합니다. 로드 밸런싱된 환경에서 사용자가 실행할 다양한 인스턴스로 이루어진 그룹을 구성하면 Auto Scaling에서는 로드를 기준으로 필요에 따라 인스턴스를 추가하거나 제거합니다.

**EC2 인스턴스 구성**  
Auto Scaling 그룹은 환경 내 EC2 인스턴스를 프로비저닝하고 관리할 때 설정한 구성 선택 사항도 적용합니다. [EC2 구성을 수정](using-features.managing.ec2.md)하여 인스턴스 유형, 키 페어, Amazon Elastic Block Store(Amazon EBS) 스토리지 및 인스턴스를 시작하는 경우에만 구성할 수 있는 기타 설정을 변경할 수 있습니다.

**온디맨드 및 스팟 인스턴스**  
옵션으로 Elastic Beanstalk은 [스팟 인스턴스](environments-cfg-autoscaling-spot.md)를 환경에 포함하고 이를 온디맨드 인스턴스와 함께 관리할 수 있습니다. [용량 리밸런싱](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html)을 활성화하여 스팟 인스턴스의 가용성에 영향을 주는 변경 사항을 모니터링하고 자동으로 대응하도록 Amazon EC2 Auto Scaling을 구성할 수 있습니다. Auto Scaling 서비스가 환경에 스팟 인스턴스를 프로비저닝하는 데 사용하는 [스팟 할당 전략](environments-cfg-autoscaling-spot-allocation-strategy.md)을(를) 구성할 수도 있습니다.

**스팟 인스턴스를 활성화할 때 필요한 권한**  
스팟 인스턴스 요청을 활성화하려면 Amazon EC2 시작 템플릿을 사용해야 합니다. 환경을 생성하거나 업데이트하는 동안 이러한 기능을 구성하면 Elastic Beanstalk에서 Amazon EC2 시작 템플릿을 사용하도록 환경 구성을 시도합니다(환경에서 아직 템플릿을 사용하지 않는 경우). 이 경우 사용자 정책에 필요한 권한이 없으면 환경 생성 또는 업데이트가 실패할 수 있습니다. 따라서 관리형 사용자 정책을 사용하거나 사용자 지정 정책에 필요한 권한을 추가하는 것이 좋습니다. 필요한 권한에 대한 자세한 내용은 [시작 템플릿에 필요한 권한](environments-cfg-autoscaling-launch-templates.md#environments-cfg-autoscaling-launch-templates-permissions) 단원을 참조하십시오.

**Auto Scaling 트리거**  
Auto Scaling 그룹은 두 가지 Amazon CloudWatch 경보를 사용하여 조정 작업을 트리거합니다. 기본 트리거는 각 인스턴스의 평균 아웃바운드 네트워크 트래픽이 5분 이상 6MiB보다 높거나 2MiB보다 낮은 경우를 조정합니다. Auto Scaling을 효과적으로 사용하려면 애플리케이션, 인스턴스 유형 및 서비스 요구 사항에 적절한 [트리거를 구성](environments-cfg-autoscaling-triggers.md)합니다. 지연 시간, 디스크 I/O, CPU 사용률 및 요청 수 등 여러 통계를 기준으로 규모를 조정할 수 있습니다.

**Auto Scaling 작업 예약**  
예측 가능한 피크 트래픽 기간에 환경에서 Amazon EC2 인스턴스의 사용을 최적화하려면 [일정에 따라 인스턴스 개수를 변경하도록 Auto Scaling 그룹을 구성](environments-cfg-autoscaling-scheduledactions.md)합니다. 매일 또는 매주 반복되는 그룹 구성에 대한 변경을 예약하거나 일회성 변경을 예약해 사이트에 많은 트래픽을 일으키는 마케팅 이벤트에 대비할 수 있습니다.

**Auto Scaling 상태 확인**  
Auto Scaling은 시작하는 각 Amazon EC2 인스턴스의 상태를 모니터링합니다. 인스턴스가 예기치 않게 종료된 경우 Auto Scaling은 종료를 감지하고 대체 인스턴스를 시작합니다. 로드 밸런서의 상태 확인 메커니즘을 사용하도록 그룹을 구성하려면 [Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정](environmentconfig-autoscaling-healthchecktype.md) 단원을 참조하세요.

**Topics**
+ [

# Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션
](environments-cfg-autoscaling-launch-templates.md)
+ [

# Elastic Beanstalk에 대한 스팟 인스턴스 환경 지원
](environments-cfg-autoscaling-spot.md)
+ [

# Elastic Beanstalk 환경에 대한 Auto Scaling 트리거
](environments-cfg-autoscaling-triggers.md)
+ [

# Elastic Beanstalk 환경에 대해 예약된 Auto Scaling 작업
](environments-cfg-autoscaling-scheduledactions.md)
+ [

# Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정
](environmentconfig-autoscaling-healthchecktype.md)

# Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션
<a name="environments-cfg-autoscaling-launch-templates"></a>

2024년 10월 1일부로 Amazon EC2 Auto Scaling은 신규 계정에 대해 시작 구성을 더 이상 지원하지 않습니다. 해당 날짜 이전에 생성된 계정에는 시작 구성이 포함되어 있을 수 있습니다.

다음과 같은 이점을 위해 **시작 템플릿**으로 마이그레이션하는 것이 좋습니다.
+ 애플리케이션의 가용성 향상
+ Auto Scaling 그룹의 워크로드 최적화 개선
+ 최신 EC2 및 Auto Scaling 기능에 대한 액세스

자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [시작 구성](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html)을 참조하세요.

## 시작 템플릿의 옵션 설정
<a name="environments-cfg-autoscaling-launch-templates-options"></a>

환경을 시작 구성에서 시작 템플릿으로 마이그레이션하려면 다음 구성 옵션 중 하나를 설정하세요.
+ `RootVolumeType` 옵션이 **gp3**로 설정됩니다. [콘솔](using-features.managing.ec2.console.md) 또는 [네임스페이스](using-features.managing.ec2.namespace.md)를 사용하여 이 옵션을 설정할 수 있습니다.
+ `BlockDeviceMappings` 옵션에는 **gp3**가 포함됩니다. [콘솔](using-features.managing.ec2.console.md) 또는 [네임스페이스](using-features.managing.ec2.namespace.md)를 사용하여 이 옵션을 설정할 수 있습니다.
+ `DisableIMDSv1` 옵션이 **true**로 설정됩니다. [네임스페이스](using-features.managing.ec2.namespace.md)를 사용하여 이 옵션을 설정하는 것이 좋습니다.
+ `EnableSpot` 옵션이 **true**로 설정됩니다. 자세한 내용은 [스팟 인스턴스 활성화](environments-cfg-autoscaling-enable-spot.md) 단원을 참조하십시오.

**중요**  
환경에서 시작 템플릿 사용을 시작한 후에는 원래 시작 템플릿 사용을 트리거한 구성 옵션을 제거하더라도 Elastic Beanstalk가 시작 구성으로 되돌아가지 않습니다.

## 환경에 시작 구성 또는 시작 템플릿이 있는지 확인
<a name="environments-cfg-autoscaling-launch-templates-determine"></a>

CloudFormation 스택 템플릿을 검사하여 환경이 이미 시작 템플릿을 사용하고 있는지 또는 시작 구성을 사용하고 있는지 확인할 수 있습니다.

**환경의 CloudFormation 스택 템플릿을 검사하려면**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) AWS CloudFormation 콘솔을 엽니다.

1. 화면 상단의 탐색 모음에서 환경을 생성한 AWS 리전을 선택합니다.

1. CloudFormation 콘솔의 **스택** 페이지에서 **설명** 열을 검사합니다.

   Elastic Beanstalk 환경의 스택을 찾아 선택합니다. CloudFormation에서 환경에 대한 스택 세부 정보를 표시합니다.

1. **스택 세부 정보**에서 **템플릿** 탭을 선택합니다.

   브라우저의 페이지 검색을 사용하여 템플릿 텍스트에서 *launchtemplate* 또는 *launchconfiguration*을 검색할 수 있습니다.

자세한 내용은 *AWS CloudFormation 사용 설명서*의 [스택 정보 보기](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)를 참조하세요.

## 시작 템플릿에 필요한 권한
<a name="environments-cfg-autoscaling-launch-templates-permissions"></a>

기본 Elastic Beanstalk 관리형 서비스 역할 정책인 [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy.html)가 시작 템플릿을 생성하고 관리하는 데 필요한 권한을 제공합니다. Elastic Beanstalk는 환경 생성을 비롯한 여러 환경 작업을 완료하기 위해 시작 템플릿을 관리해야 합니다.

Elastic Beanstalk 서비스 역할에 사용자 지정 정책을 연결하는 경우 서비스 역할에 시작 템플릿을 생성하기 위한 다음 권한이 포함되어 있는지 확인합니다. 이러한 권한은 Elastic Beanstalk이 계정 내에서 환경을 정상적으로 생성하고 업데이트할 수 있도록 합니다.

**Amazon EC2 시작 템플릿에 필요한 권한**
+ `ec2:RunInstances`
+ `ec2:CreateLaunchTemplate`
+ `ec2:CreateLaunchTemplateVersions`
+ `ec2:DeleteLaunchTemplate`
+ `ec2:DeleteLaunchTemplateVersions`
+ `ec2:DescribeLaunchTemplate`
+ `ec2:DescribeLaunchTemplateVersions`

다음 예시 IAM 정책에는 이러한 권한이 포함되어 있습니다.

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateLaunchTemplate",
        "ec2:CreateLaunchTemplateVersions",
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteLaunchTemplateVersions",
        "ec2:DescribeLaunchTemplate",
        "ec2:DescribeLaunchTemplateVersions"
      ],     
      "Resource": [
                "*"
            ]
     }
  ]
}
```

자세한 내용은 [Elastic Beanstalk 서비스 역할 관리](iam-servicerole.md) 및 [Elastic Beanstalk 사용자 정책 관리](AWSHowTo.iam.managed-policies.md) 섹션을 참조하세요.

## 시작 템플릿에 대한 자세한 정보
<a name="environments-cfg-autoscaling-launch-templates-moreinfo"></a>

시작 템플릿에 대한 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Auto Scaling 시작 템플릿](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html)을 참조하세요.

시작 템플릿으로의 AWS 전환과 템플릿이 제공하는 이점에 대해 자세히 알아보려면 *AWS 컴퓨팅 블로그*의 [ Amazon EC2 Auto Scaling에서 시작 구성에 새 EC2 기능에 대한 지원을 더 이상 추가하지 않음을 참조하세요](https://aws.amazon.com/blogs/compute/amazon-ec2-auto-scaling-will-no-longer-add-support-for-new-ec2-features-to-launch-configurations/).

**중요**  
이 블로그 글에서 언급된 절차를 따르지 않아도 이전 환경을 시작 템플릿으로 전환할 수 있습니다. 기존 Elastic Beanstalk 환경을 시작 템플릿으로 마이그레이션하려면 [시작 템플릿의 옵션 설정](#environments-cfg-autoscaling-launch-templates-options)에 나열된 옵션 중 하나만 설정하세요.

# Elastic Beanstalk에 대한 스팟 인스턴스 환경 지원
<a name="environments-cfg-autoscaling-spot"></a>

이 주제에서는 Elastic Beanstalk 환경에서 스팟 인스턴스의 용량 및 로드 밸런싱을 관리하는 데 사용할 수 있는 구성 옵션을 설명합니다. 또한 이러한 옵션을 구성하는 데 사용할 수 있는 방법에 대한 세부 정보와 예제도 제공합니다. 구성 옵션은 [Elastic Beanstalk 콘솔](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console), [네임스페이스 구성 옵션](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace), [AWS CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 또는 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli)를 사용해 관리할 수 있습니다.

**용량 리밸런싱을 통한 스팟 인스턴스 중단 최소화**  
스팟 인스턴스 중단이 애플리케이션에 미치는 영향을 최소화하려면 Amazon EC2 Auto Scaling에 포함된 용량 리밸런싱 옵션을 활성화합니다.

**중요**  
스팟 인스턴스에 대한 수요는 매 순간 상당히 다를 수 있으며 스팟 인스턴스의 가용성도 사용 가능한 미사용 Amazon EC2 인스턴스의 양에 따라 상당히 다를 수 있습니다. 스팟 인스턴스가 중단될 가능성은 항상 있습니다.

용량 리밸런싱을 활성화하면 EC2가 Auto Scaling 그룹 내의 스팟 인스턴스가 중단되기 전에 자동으로 해당 인스턴스를 교체하려고 시도합니다. 이 기능을 활성화하려면 Elastic Beanstalk 콘솔을 사용해 [Auto Scaling 그룹을 구성합니다](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console). 또는 [aws:autoscaling:asg](command-options-general.md#command-options-general-autoscalingasg) 네임스페이스에 Elastic Beanstalk `EnableCapacityRebalancing` [구성 옵션](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace)을 `true`로 설정할 수 있습니다.

자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [용량 리밸런싱](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html)과 **Amazon EC2 사용 설명서의 [스팟 인스턴스 중단](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)을 참조하세요.

**이전 인스턴스 유형 및 스팟 인스턴스 지원**  
일부 이전 AWS 계정은 스팟 인스턴스를 지원하지 않는 기본 인스턴스 유형을 Elastic Beanstalk에 제공할 수 있습니다. 스팟 인스턴스 요청을 활성화했을 때 지정한 인스턴스 유형이 스팟을 지원하지 않음 오류가 표시되면, 스팟 인스턴스를 지원하는 인스턴스 유형으로 구성을 업데이트하세요. 스팟 인스턴스 유형을 선택하려면 [스팟 인스턴스 어드바이저](https://aws.amazon.com/ec2/spot/instance-advisor/)를 사용합니다.

**Topics**
+ [

# 환경에 대한 스팟 인스턴스 활성화
](environments-cfg-autoscaling-enable-spot.md)
+ [

# 스팟 인스턴스 할당 전략
](environments-cfg-autoscaling-spot-allocation-strategy.md)
+ [

# 온디맨드 인스턴스 및 스팟 인스턴스 관리
](environments-cfg-autoscaling-spot-and-demand.md)
+ [

# Elastic Beanstalk 환경에 대한 용량 구성
](environments-cfg-autoscaling-configuration-approaches.md)

# 환경에 대한 스팟 인스턴스 활성화
<a name="environments-cfg-autoscaling-enable-spot"></a>

Amazon EC2 스팟 인스턴스를 활용하려면 환경에 `EnableSpot` 옵션을 설정하세요. 그러면 해당 환경의 Auto Scaling 그룹이 Amazon EC2 구매 옵션을 결합하고 온디맨드 인스턴스와 스팟 인스턴스를 혼합하여 유지 관리합니다.

환경에 대해 스팟 인스턴스 요청을 활성화하려면 [Elastic Beanstalk 콘솔](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console), [네임스페이스 구성 옵션](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace), [AWS CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 또는 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli)를 사용할 수 있습니다.

환경에 스팟 인스턴스를 활성화하기 전에 사용 가능한 Auto Scaling, 용량 및 로드 밸런싱 구성 옵션을 숙지하십시오. 워크로드, 인스턴스 중단의 영향 및 요금과 관련된 애플리케이션의 요구 사항은 모두 스팟 인스턴스를 활성화하기 위한 계획에서 중요한 고려 사항입니다.

다음 주제에서는 Auto Scaling 및 용량 관리 옵션과 이러한 옵션의 조합이 환경에 미치는 영향에 대한 세부 정보를 제공합니다. 다양한 옵션과 구성 방법을 알려주고 안내하는 절차와 예제 구성이 마련되어 있습니다. 또한 구성을 관리하고 이벤트에 응답하는 데 도움이 되는 도구와 기능도 제공합니다. 예측 가능한 트래픽 기간을 기반으로 구성에 대한 자동 변경을 예약하고, 트래픽 볼륨과 같은 요인에 응답하도록 트리거를 구성하고, Auto Scaling 모니터링 및 상태 확인을 구성할 수 있습니다.

스팟 인스턴스의 주요 개념과 모범 사례를 포함한 자세한 내용은 *Amazon EC2 사용 설명서*의 [스팟 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) 섹션을 참조하세요.

**중요**  
`EnableSpot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

# 스팟 인스턴스 할당 전략
<a name="environments-cfg-autoscaling-spot-allocation-strategy"></a>

Elastic Beanstalk 환경에 대해 이 주제에 나열된 할당 전략 중 하나를 선택할 수 있습니다. 환경에 대해 스팟 인스턴스 할당 전략과 관련 속성을 설정하려면 [Elastic Beanstalk 콘솔](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console), [네임스페이스 구성 옵션](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace) 또는 [AWS CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli)를 사용하세요.

Amazon EC2는 스팟 인스턴스를 관리하고 프로비저닝하기 위해 *할당 전략*을 적용합니다. 각 할당 전략은 사용 가능한 용량, 가격 및 인스턴스 유형 선택을 처리하도록 정의된 방법에 따라 할당된 인스턴스를 최적화합니다.

Amazon EC2 Auto Scaling은 스팟 인스턴스에 사용할 수 있는 다음과 같은 할당 전략을 제공합니다.
+ **용량 최적화**(기본값)
  + 시작되는 인스턴스 수에 맞게 *최적의 용량*을 가진 풀에 스팟 인스턴스를 요청합니다.
  + 이 전략은 서비스 중단 가능성을 최소화해야 하는 워크로드에 적합합니다.
+ **가격 용량 최적화**
  + *중단 가능성이 가장 낮고* *가격이 가장 낮은* 풀에서 스팟 인스턴스를 요청합니다.
  + 이는 대부분의 스팟 워크로드에 적합한 선택입니다.
+ **용량 최적화 우선시**
  + 사용자가 선택한 *인스턴스 유형 우선 순위*를 최대한 고려하면서 *용량 가용성을 기준을 우선*으로 스팟 인스턴스를 요청합니다. Elastic Beanstalk에 대한 스팟 인스턴스 옵션을 구성할 때 우선순위에 따라 정렬된 인스턴스 유형 목록을 제공할 수 있습니다.
  + 이 전략은 서비스 중단을 최소화해야 하며 특정 인스턴스 유형 우선순위 지정이 중요한 워크로드에 적합합니다.
+ **최저 가격** 
  + 가용 인스턴스가 있는 *가장 저렴한 풀*에서 스팟 인스턴스를 요청합니다.
  + 이 전략을 사용할 때는 인스턴스 가격만 고려하고 용량 가용성은 고려하지 않아 중단율이 높으므로 주의해야 합니다.

각 할당 전략에 대한 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [다중 인스턴스 유형을 위한 할당 전략](https://docs.aws.amazon.com/autoscaling/ec2/userguide/allocation-strategies.html) 항목을 참조하세요.

환경 요구 사항에 가장 적합한 스팟 인스턴스 할당 전략을 이해하려면 *Amazon EC2 사용 설명서*의 [적절한 스팟 할당 전략 선택](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html#ec2-fleet-allocation-use-cases) 항목을 참조하세요.

# 온디맨드 인스턴스 및 스팟 인스턴스 관리
<a name="environments-cfg-autoscaling-spot-and-demand"></a>

단일 Auto Scaling 그룹 내에서 온디맨드 인스턴스 및 스팟 인스턴스 플릿를 자동으로 확장할 수 있습니다. 다음 옵션을 함께 사용하여 오토 스케일링 서비스가 환경에서 스팟 인스턴스 및 온디맨드 인스턴스를 관리하는 방법을 구성할 수 있습니다.

[Elastic Beanstalk 콘솔](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-console), [네임스페이스 구성 옵션](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace), [AWS CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-aws-cli) 또는 [EB CLI](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-ebcli)를 사용해 환경에 대해 이러한 옵션을 구성할 수 있습니다.

이러한 옵션은 [aws:ec2:instances](command-options-general.md#command-options-general-ec2instances) 네임스페이스에 속합니다.
+ `EnableSpot` ‐ `true` 이 설정으로 설정하면 환경에 대한 스팟 인스턴스 요청이 활성화됩니다.
+ `SpotFleetOnDemandBase` ‐ 환경 스케일 업에 따라 스팟 인스턴스를 고려하기 전에 Auto Scaling 그룹이 프로비저닝하는 최소 온디맨드 인스턴스 수를 설정합니다.
+ `SpotFleetOnDemandAboveBasePercentage` ‐ Auto Scaling 그룹이 `SpotOnDemandBase` 인스턴스를 초과하여 프로비저닝하는 추가 용량의 일부인 온디맨드 인스턴스의 비율입니다.

앞서 나열된 옵션은 [aws:autoscaling:asg](command-options-general.md#command-options-general-autoscalingasg) 네임스페이스의 다음 옵션과 관련이 있습니다.
+ `MinSize` ‐ Auto Scaling 그룹에 필요한 최소 인스턴스 수입니다.
+ `MaxSize` ‐ Auto Scaling 그룹에 필요한 최대 인스턴스 수입니다.

**중요**  
`EnableSpot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

## 두 네임스페이스 옵션 세트 모두 적용
<a name="environments-cfg-autoscaling-spot-and-demand-combined"></a>

다음 포인트에서는 이러한 옵션 설정의 조합이 환경의 조정에 미치는 영향을 설명합니다.
+ `MinSize`만이 환경의 초기 용량, 즉 실행하려는 최소 인스턴스 수를 결정합니다.
+  `SpotFleetOnDemandBase`는 초기 용량에 영향을 주지 않습니다. 스팟이 활성화된 경우 이 옵션은 스팟 인스턴스가 고려되기 전에 프로비저닝되는 온디맨드 인스턴스 수를 결정합니다.
+ `SpotFleetOnDemandBase`가 `MinSize`보다 작은 경우를 가정합니다. 그래도 여전히 `MinSize` 인스턴스를 초기 용량으로 가져올 것입니다. 적어도 그 중 `SpotFleetOnDemandBase`는 온디맨드 인스턴스여야 합니다.
+ `SpotFleetOnDemandBase`가 `MinSize`보다 큰 경우를 가정합니다. 환경을 확장함에 따라 적어도 두 값의 차이와 동일한 추가 인스턴스 수를 확보하게 됩니다. 즉, `SpotFleetOnDemandBase` 요구 사항을 만족하기 전에 적어도 추가 `(SpotFleetOnDemandBase - MinSize)` 인스턴스를 온디맨드로 확보하게 됩니다.

**단일 인스턴스 환경**  
프로덕션 환경에서 스팟 인스턴스는 로드 밸런싱 수행 및 확장 가능 환경의 일부로 특히 유용합니다. 단일 인스턴스 환경에서는 스팟을 사용하지 않는 것이 좋습니다. 스팟 인스턴스를 사용할 수 없는 경우 환경의 전체 용량(단일 인스턴스)이 손실될 수 있습니다. 개발 또는 테스트를 위해 여전히 단일 인스턴스 환경에서 스팟 인스턴스를 사용할 수 있습니다. 이 경우 `SpotFleetOnDemandBase`와 `SpotFleetOnDemandAboveBasePercentage`를 모두 0으로 설정해야 합니다. 다른 설정은 온디맨드 인스턴스를 생성합니다.

## 조정 옵션 설정의 예
<a name="environments-cfg-autoscaling-spot-and-demand-examples"></a>

다음 예제에서는 다양한 조정 옵션을 설정하는 다양한 시나리오를 보여줍니다. 모든 예는 스팟 인스턴스 요청이 활성화된 로드 밸런싱 수행 환경이라고 가정합니다.

**Example 1: 초기 용량의 일부인 온디맨드 및 스팟**  <a name="environments-cfg-autoscaling-spot-example1"></a>


**옵션 설정**  

|  **옵션**  |  **네임스페이스**  |  **값**  | 
| --- | --- | --- | 
|  `MinSize`  |  `aws:autoscaling:asg`  |  `10`  | 
|  `MaxSize`  |  `aws:autoscaling:asg`  |  `24`  | 
|  `SpotFleetOnDemandBase`  |  `aws:ec2:instances`  |  `4`  | 
|  `SpotFleetOnDemandAboveBasePercentage`  |  `aws:ec2:instances`  |  `50`  | 

이 예에서 환경은 10개의 인스턴스로 시작합니다. 그 중 7개는 온디맨드(기본 4개, 6개의 50%는 기본 이상)이고 3개는 스팟입니다. 환경은 최대 24개의 인스턴스까지 확장할 수 있습니다. 확장 시, 4개의 기본 온디맨드 인스턴스 이상인 플릿의 온디맨드 부분은 50%로 유지되며 전체적으로 최대 24개까지 확장됩니다. 이 중 14개는 온디맨드(기본 4개, 20개 중 50%는 기본 이상)이고 10개는 스팟입니다.



**Example 2: 모든 온디맨드 초기 용량**  <a name="environments-cfg-autoscaling-spot-example1"></a>


**옵션 설정**  

|  **옵션**  |  **네임스페이스**  |  **값**  | 
| --- | --- | --- | 
|  `MinSize`  |  `aws:autoscaling:asg`  |  `4`  | 
|  `MaxSize`  |  `aws:autoscaling:asg`  |  `24`  | 
|  `SpotFleetOnDemandBase`  |  `aws:ec2:instances`  |  `4`  | 
|  `SpotFleetOnDemandAboveBasePercentage`  |  `aws:ec2:instances`  |  `50`  | 

이 예에서 환경은 네 개의 인스턴스로 시작하며 모두 온디맨드 인스턴스입니다. 환경은 최대 24개의 인스턴스까지 확장할 수 있습니다. 확장 시, 4개의 기본 온디맨드 인스턴스 이상인 플릿의 온디맨드 부분은 50%로 유지되며 전체적으로 최대 24개까지 확장됩니다. 이 중 14개는 온디맨드(기본 4개, 20개 중 50%는 기본 이상)이고 10개는 스팟입니다.

**Example 3: 초기 용량을 초과하는 추가 온디맨드 기본**  <a name="environments-cfg-autoscaling-spot-example1"></a>


**옵션 설정**  

|  **옵션**  |  **네임스페이스**  |  **값**  | 
| --- | --- | --- | 
|  `MinSize`  |  `aws:autoscaling:asg`  |  `3`  | 
|  `MaxSize`  |  `aws:autoscaling:asg`  |  `24`  | 
|  `SpotFleetOnDemandBase`  |  `aws:ec2:instances`  |  `4`  | 
|  `SpotFleetOnDemandAboveBasePercentage`  |  `aws:ec2:instances`  |  `50`  | 

이 예에서 환경은 세 개의 인스턴스로 시작하며 모두 온디맨드 인스턴스입니다. 환경은 최대 24개의 인스턴스까지 확장할 수 있습니다. 초기의 세 개 인스턴스에 처음 추가되는 인스턴스는 네 개의 기본 온디맨드 인스턴스를 완성하기 위한 온디맨드 인스턴스입니다. 계속 확장됨에 따라, 4개의 기본 온디맨드 인스턴스 이상인 플릿의 온디맨드 부분은 50%로 유지되며 전체적으로 최대 24개까지 확장됩니다. 이 중 14개는 온디맨드(기본 4개, 20개 중 50%는 기본 이상)이고 10개는 스팟입니다.

# Elastic Beanstalk 환경에 대한 용량 구성
<a name="environments-cfg-autoscaling-configuration-approaches"></a>

이 주제에서는 Elastic Beanstalk 환경에 맞게 Auto Scaling을 구성하는 다양한 접근 방식을 설명합니다. Elastic Beanstalk 콘솔, EB CLI AWS CLI, 또는 네임스페이스 옵션을 사용할 수 있습니다.

**중요**  
`EnableSpot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

## 콘솔을 사용한 구성
<a name="environments-cfg-autoscaling-console"></a>

[Elastic Beanstalk 콘솔](environments-console.md)에서 환경의 **구성** 페이지에 있는 **용량**을 편집하여 Auto Scaling 그룹의 용량 관리를 구성할 수 있습니다.

**Elastic Beanstalk 콘솔에서 Auto Scaling 그룹 용량을 구성하는 방법**

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

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

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

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

1. **Auto Scaling 그룹(Auto Scaling group)** 섹션에서 다음 설정을 구성합니다.
   + **환경 유형(Environment type)** - **로드 밸런싱 수행(Load balanced)**을 선택합니다.
   + **최소 인스턴스(Min instances)** - 항상 그룹에 있어야 하는 최소 EC2 인스턴스 수입니다. 그룹은 최소 개수로 시작해 확장 트리거 조건이 충족되면 인스턴스를 추가합니다.
   + **최대 인스턴스(Max instances)** - 항상 그룹에 있어야 하는 최대 EC2 인스턴스 수입니다.
**참고**  
롤링 업데이트를 사용하는 경우 최대 인스턴스 개수는 롤링 업데이트에 대한 [**작동 중인 최소 인스턴스 수** 설정](using-features.rollingupdates.md#rollingupdates-configure)보다 커야 합니다.
   + **플릿 구성** - 기본값은 **온디맨드 인스턴스**입니다. *스팟 인스턴스* 요청을 활성화하려면 **결합된 구매 옵션 및 인스턴스**를 선택합니다.
**중요**  
`EnableSpot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

     *스팟 인스턴스* 요청을 활성화하도록 선택하면 다음의 옵션이 활성화됩니다.
     + **스팟 할당 전략** - 가용 용량, 가격, 인스턴스 유형 선택을 기준으로 환경 내 스팟 인스턴스를 관리하고 프로비저닝하는 데 사용하는 방식을 결정합니다. *용량 최적화*(기본값), *가격 용량 최적화*, *용량 최적화 최우선* 또는 *최저 가격* 중에서 선택합니다. 각 할당 전략에 대한 설명과 자세한 내용은 [스팟 인스턴스 할당 전략](environments-cfg-autoscaling-spot-allocation-strategy.md) 항목을 참조하세요.
     + **최대 스팟 가격** - 스팟 인스턴스에 대한 최고 가격 옵션 권장 사항에 대해서는 *Amazon EC2 사용 설명서*의 [스팟 인스턴스 요금 기록](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html)을 참조하세요.
     + **온디맨드 기본** - 환경 확장에 따라 스팟 인스턴스를 고려하기 전에 Auto Scaling 그룹이 프로비저닝하는 최소 온디맨드 인스턴스 수입니다.
     + **온디맨드 기본 초과** - Auto Scaling 그룹이 온디맨드 인스턴스를 초과하여 프로비저닝하는 추가 용량의 일부인 온디맨드 인스턴스의 비율입니다.
**참고**  
**온디맨드 기본** 및 **온디맨드 기본 초과** 옵션은 앞에서 나열한 **최소** 및 **최대** *인스턴스*와 연관이 있습니다. 이러한 옵션에 대한 자세한 정보와 예시는 [Elastic Beanstalk에 대한 스팟 인스턴스 환경 지원](environments-cfg-autoscaling-spot.md) 단원을 참조하세요.
     + **용량 리밸런싱** - 이 옵션은 Auto Scaling 그룹에 스팟 인스턴스가 하나 이상 있는 경우에만 관련이 있습니다. 이 기능을 활성화하면 EC2는 Auto Scaling 그룹의 스팟 인스턴스가 중단되기 전에 인스턴스를 자동으로 교체하여 스팟 인스턴스의 애플리케이션 중단을 최소화하려고 시도합니다. 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [용량 리밸런싱](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html)을 참조하세요.
   + **아키텍처** - EC2 인스턴스의 프로세서 아키텍처입니다. 프로세서 아키텍처는 다음 필드에서 선택 가능한 EC2 인스턴스 유형을 결정합니다.
   + **인스턴스 유형** - 애플리케이션을 실행하기 위해 시작되는 Amazon EC2 인스턴스의 유형입니다. 자세한 내용은 [인스턴스 유형](using-features.managing.ec2.console.md#using-features.managing.ec2.instancetypes)을 참조하세요.
   + **AMI ID** - 사용자 환경에서 Amazon EC2 인스턴스를 시작하기 위해 Elastic Beanstalk에서 사용하는 머신 이미지입니다. 자세한 내용은 [AMI ID](using-features.managing.ec2.console.md#using-features.managing.ec2.customami) 단원을 참조하세요.
   + **가용 영역(Availability Zones)** - 환경의 인스턴스를 분산할 가용 영역의 수를 선택합니다. 기본적으로 Auto Scaling 그룹은 사용 가능한 모든 영역에서 균일하게 인스턴스를 시작합니다. 인스턴스를 더 적은 수의 영역에 집중시키려면 사용할 영역 수를 선택합니다. 프로덕션 환경의 경우 가용 영역 하나를 사용할 수 없을 때 애플리케이션을 사용할 수 있도록 가용 영역을 두 개 이상 사용합니다.
   + **배치(Placement)**(선택 사항) - 사용할 가용 영역을 선택합니다. 인스턴스를 특정 영역의 리소스에 연결해야 하는 경우 또는 특정 영역에서만 사용할 수 있는 [예약 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)를 구입한 경우에 이 설정을 사용합니다. 사용자 지정 VPC에서 환경을 시작한 경우에는 이 옵션을 구성할 수 없습니다. 사용자 지정 VPC에서 환경에 할당한 서브넷의 가용 영역을 선택합니다.
   + **조정 쿨다운(Scaling cooldown)** - 조정 후 계속해서 트리거를 평가하기 전에 인스턴스가 시작되거나 종료될 때까지 대기하는 시간(초)입니다. 자세한 내용은 [조정 쿨다운](https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html)을 참조하세요.

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

## 네임스페이스 옵션을 이용한 구성
<a name="environments-cfg-autoscaling-namespace"></a>

Elastic Beanstalk는 [`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 및 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances)라는 두 네임스페이스에서 Auto Scaling 설정에 대한 [구성 옵션](command-options.md)을 제공합니다.

### aws:autoscaling:asg 네임스페이스
<a name="environments-cfg-autoscaling-namespace.asg"></a>

[`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 네임스페이스는 전체 확장 및 가용성에 대한 옵션을 제공합니다.

다음 [구성 파일](ebextensions.md) 예에서는 2 \$1 4개의 인스턴스, 특정 가용 영역 및 12분(720초)의 휴지 기간을 사용하도록 Auto Scaling 그룹을 구성합니다. 스팟 인스턴스에 대해 [용량 리밸런싱](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html)을 활성화합니다. 이 `EnableCapacityRebalancing` 옵션은 이 뒤에 나오는 구성 파일 예제에 보이는 것과 같이 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances) 네임스페이스의 `EnableSpot`이 `true`로 설정되었을 경우에만 적용됩니다.

```
option_settings:
  aws:autoscaling:asg:
    Availability Zones: Any
    Cooldown: '720'
    Custom Availability Zones: 'us-west-2a,us-west-2b'
    MaxSize: '4'
    MinSize: '2'
    EnableCapacityRebalancing: true
```

### aws:ec2:instances 네임스페이스
<a name="environments-cfg-autoscaling-namespace.instances"></a>

**참고**  
환경 구성을 업데이트하고 `InstanceTypes` 옵션에서 하나 이상의 인스턴스 유형을 제거하면 Elastic Beanstalk는 제거된 인스턴스 유형에서 실행 중인 모든 Amazon EC2 인스턴스를 종료합니다. 그러면 환경의 Auto Scaling 그룹에서 필요에 따라 현재 지정된 인스턴스 유형을 사용하여 원하는 용량을 완료하는 데 필요한 새 인스턴스를 시작합니다.

[`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances) 네임스페이스는 스팟 인스턴스 관리를 포함하여 환경의 인스턴스와 관련된 옵션을 제공합니다. 이 옵션은 [`aws:autoscaling:launchconfiguration`](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 및 [`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg)를 보완합니다.

다음 [구성 파일](ebextensions.md) 예에서는 환경에 대한 스팟 인스턴스 요청을 활성화하도록 환경을 생성하고 Auto Scaling 그룹을 구성합니다. 사용할 수 있는 세 가지 인스턴스 유형을 지정합니다. 기본 용량에 최소 하나의 온디맨드 인스턴스를 사용하며, 모든 추가 용량에 대해 온디맨드 인스턴스 33% 유지가 사용됩니다.

이 구성은 [스팟 할당 전략](environments-cfg-autoscaling-spot-allocation-strategy.md)을 `capacity-optimized-prioritized`로 설정합니다. 이 특정 할당 전략은 `InstanceTypes` 옵션에 지정된 인스턴스 유형의 순서에 따라 풀에서 인스턴스 시작의 우선 순위를 지정합니다. `SpotAllocationStrategy`를 지정하지 않으면 기본적으로 `capacity-optimized`로 설정됩니다.

```
option_settings:
  aws:ec2:instances:
    EnableSpot: true
    InstanceTypes: 't2.micro,t3.micro,t3.small'    
    SpotAllocationStrategy: capacity-optimized-prioritized
    SpotFleetOnDemandBase: '1'
    SpotFleetOnDemandAboveBasePercentage: '33'
```

스팟 인스턴스 유형을 선택하려면 [스팟 인스턴스 어드바이저](https://aws.amazon.com/ec2/spot/instance-advisor/)를 사용합니다.

**중요**  
`EnableSpot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.

## 를 사용한 구성 AWS CLI
<a name="environments-cfg-autoscaling-aws-cli"></a>

이 섹션에서는 AWS CLI [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 명령을 사용하여이 섹션에 설명된 Auto Scaling 및 용량 옵션으로 환경을 구성하는 방법의 예를 제공합니다. 이전 [네임스페이스 구성 옵션](#environments-cfg-autoscaling-namespace) 섹션에 설명된 대로 [`aws:autoscaling:asg`](command-options-general.md#command-options-general-autoscalingasg) 및 [`aws:ec2:instances`](command-options-general.md#command-options-general-ec2instances)에 대한 네임스페이스 설정도이 예제로 구성되어 있다는 것을 살펴볼 수 있습니다.

 AWS 명령줄 인터페이스는 Elastic Beanstalk 환경을 생성하고 구성하는 명령을 제공합니다. `--option-settings` 옵션을 사용하면 Elastic Beanstalk에서 지원하는 네임스페이스 옵션을 전달할 수 있습니다. 즉, 앞에서 설명한 [네임스페이스 구성 옵션을](#environments-cfg-autoscaling-namespace) 적용 가능한 AWS CLI 명령으로 전달하여 Elastic Beanstalk 환경을 구성할 수 있습니다.

**참고**  
[update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 명령과 함께 `--option-settings`를 사용하여 네임스페이스 옵션을 추가하거나 업데이트할 수도 있습니다. 환경에서 네임스페이스 옵션을 제거해야 하는 경우 **update-environment** 명령을 `--options-to-remove`항목과 함께 사용합니다.

다음 예제에서는 새 환경을 생성합니다. 전달되는 옵션에 대한 맥락은 이전에 설명된 주제인 [네임스페이스 구성 옵션](#environments-cfg-autoscaling-namespace)을 참조하세요.

[aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 네임스페이스`IamInstanceProfile`의 첫 번째 옵션 은 Elastic Beanstalk [인스턴스 프로파일](concepts-roles-instance.md)입니다. 새 환경을 생성할 때 필요합니다.

**Example — Auto Scaling 옵션을 사용하는 create-environment(네임스페이스 옵션 인라인)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
Namespace=aws:autoscaling:asg,OptionName=Availability Zones,Value=Any \
Namespace=aws:autoscaling:asg,OptionName=Cooldown,Value=720 \
Namespace=aws:autoscaling:asg,OptionName=Custom Availability Zones,Value=us-west-2a,us-west-2b \
Namespace=aws:autoscaling:asg,OptionName=MaxSize,Value=4 \
Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=2 \
Namespace=aws:autoscaling:asg,OptionName=EnableCapacityRebalancing,Value=true \
Namespace=aws:ec2:instances,OptionName=EnableSpot,Value=true \
Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t2.micro,t3.micro,t3.small \
Namespace=aws:ec2:instances,OptionName=SpotAllocationStrategy,Value=capacity-optimized-prioritized \
Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandBase,Value=1 \
Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandAboveBasePercentage,Value=33
```





**중요**  
`EnableSpot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.





대안으로, 네임스페이스 옵션을 인라인으로 포함하는 대신 `options.json` 파일을 사용하여 해당 옵션을 지정하십시오.

**Example — Auto Scaling 옵션을 사용하는 create-environment(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12"
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
    {
        "Namespace": "aws:autoscaling:launchconfiguration",
        "OptionName": "IamInstanceProfile",
        "Value": "aws-elasticbeanstalk-ec2-role"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "Availability Zones",
        "Value": "Any"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "Cooldown",
        "Value": "720"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "Custom Availability Zones",
        "Value": "us-west-2a,us-west-2b"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "MaxSize",
        "Value": "4"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "MinSize",
        "Value": "2"
    },
    {
        "Namespace": "aws:autoscaling:asg",
        "OptionName": "EnableCapacityRebalancing",
        "Value": "true"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "EnableSpot",
        "Value": "true"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "InstanceTypes",
        "Value": "t2.micro,t3.micro,t3.small"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "SpotAllocationStrategy",
        "Value": "capacity-optimized-prioritized"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "SpotFleetOnDemandBase",
        "Value": "1"
    },
    {
        "Namespace": "aws:ec2:instances",
        "OptionName": "SpotFleetOnDemandAboveBasePercentage",
        "Value": "33"
    }
]
```

## EB CLI를 사용하여 구성
<a name="environments-cfg-autoscaling-ebcli"></a>

[**eb create**](eb3-create.md) 명령을 사용하여 환경을 생성하면 사용자 환경의 Auto Scaling 그룹과 관련된 몇 가지 옵션을 지정할 수 있습니다. 이러한 몇 개의 옵션을 통해 환경의 용량을 제어할 수 있습니다.

`--single`  
Amazon EC2 인스턴스 하나가 있고 로드 밸런서는 없는 환경을 생성합니다. 이 옵션을 사용하지 않으면 생성된 환경에 로드 밸런서가 추가됩니다.

`--enable-spot`  
환경에 대한 스팟 인스턴스 요청을 활성화합니다.  
`enable-spot` 옵션 설정으로 인해 Elastic Beanstalk이 시작 구성을 사용하는 기존 환경을 시작 템플릿으로 마이그레이션할 수 있습니다. 이 작업을 위해서는 시작 템플릿을 관리할 수 있는 권한이 필요합니다. 이러한 권한은 관리형 정책에 포함되어 있습니다. 관리형 정책 대신 사용자 지정 정책을 사용하는 경우, 환경 구성을 업데이트할 때 환경 생성 또는 업데이트가 실패할 수 있습니다. 자세한 내용 및 기타 고려 사항은 [Elastic Beanstalk 환경의 시작 템플릿으로의 마이그레이션](environments-cfg-autoscaling-launch-templates.md) 섹션을 참조하세요.
[**eb create**](eb3-create.md) 명령에 대한 다음 옵션은 `--enable-spot`과 함께 사용해야 합니다.    
`--instance-types`  
환경에서 사용할 Amazon EC2 인스턴스 유형을 나열합니다.  
`--spot-max-price`  
스팟 인스턴스에 대해 지불하려는 단위 시간당 최고 가격(미국 달러)입니다. 스팟 인스턴스에 대한 최고 가격 옵션 권장 사항에 대해서는 *Amazon EC2 사용 설명서*의 [스팟 인스턴스 요금 기록](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html)을 참조하세요.  
`--on-demand-base-capacity`  
환경 스케일 업에 따라 스팟 인스턴스를 고려하기 전에 Auto Scaling 그룹이 프로비저닝하는 최소 온디맨드 인스턴스 수입니다.  
`--on-demand-above-base-capacity`  
Auto Scaling 그룹이 `--on-demand-base-capacity` 옵션에 지정된 인스턴스 수를 초과하여 Auto Scaling 그룹에 프로비저닝하는 추가 용량의 일부인 온디맨드 인스턴스의 비율입니다.

다음 예에서는 새 환경에 대한 스팟 인스턴스 요청을 활성화하도록 환경을 생성하고 Auto Scaling 그룹을 구성합니다. 이 예제의 경우 사용 가능한 인스턴스 유형이 세 가지 있습니다.

```
$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
```

**중요**  
`--instance-type`(‘s’ 없음)이라고 부르는 유사한 이름의 옵션이 있어 온디맨드 인스턴스를 처리할 때에만 EB CLI가 인식할 수 있습니다. `--instance-type`("s" 없음)을 `--enable-spot` 옵션과 함께 사용하지 마세요. 함께 사용하면 EB CLI에서 이를 무시합니다. 그 대신 `--instance-types`("s" 포함)를 `--enable-spot` 옵션과 함께 사용합니다.

# Elastic Beanstalk 환경에 대한 Auto Scaling 트리거
<a name="environments-cfg-autoscaling-triggers"></a>

Elastic Beanstalk 환경의 Auto Scaling 그룹은 두 가지 Amazon CloudWatch 경보를 사용하여 조정 작업을 트리거합니다. 기본 트리거는 각 인스턴스의 평균 아웃바운드 네트워크 트래픽이 5분 이상 6MB보다 높거나 2MB보다 낮은 경우를 조정합니다. Amazon EC2 Auto Scaling을 효과적으로 사용하려면 애플리케이션, 인스턴스 유형 및 서비스 요구 사항에 적절한 트리거를 구성합니다. 지연 시간, 디스크 I/O, CPU 사용률 및 요청 수 등 여러 통계를 기준으로 조정할 수 있습니다.

CloudWatch 측정치 및 경보에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch 개념](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)을 참조하세요.

## Auto Scaling 트리거 구성
<a name="environments-cfg-autoscaling-triggers-console"></a>

Elastic Beanstalk 콘솔에서 환경의 Auto Scaling 그룹 내 인스턴스 수를 조정하는 트리거를 구성할 수 있습니다.

**Elastic Beanstalk 콘솔에서 트리거를 구성하려면**

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

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

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

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

1. **조정 트리거** 섹션에서 다음 설정을 구성합니다.
   + **측정치(Metric)** - Auto Scaling 트리거에 사용되는 측정치입니다.
   + **통계(Statistic)** - 트리거가 사용해야 하는 통계 계산입니다(예: `Average`).
   + **단위(Unit)** - 트리거 측정의 단위입니다(예: **바이트**).
   + **기간(Period)** - Amazon CloudWatch가 트리거의 측정치를 측정하는 빈도를 지정합니다.
   + **위반 기간(Breach duration)** - 조정 작업을 트리거하기 전 측정치가 상한 또는 하한 임계값을 벗어날 수 있는 시간(분)입니다.
   + **상위 임계값(Upper threshold)** - 위반 기간 중 측정치가 이 값보다 커지면 조정 작업이 트리거됩니다.
   + **확장 증분(Scale up increment)** - 조정 활동 수행 시 추가할 Amazon EC2 인스턴스 수입니다.
   + **하위 임계값(Lower threshold)** - 위반 기간 중 측정치가 이 값보다 작아지면 조정 작업이 트리거됩니다.
   + **축소 증분(Scale down increment)** - 조정 활동 수행 시 제거할 Amazon EC2 인스턴스 수입니다.

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

## aws:autoscaling:trigger 네임스페이스
<a name="environments-cfg-autoscaling-triggers-namespace"></a>

Elastic Beanstalk는 [`aws:autoscaling:trigger`](command-options.md) 네임스페이스의 Auto Scaling 설정에 대한 [구성 옵션](command-options-general.md#command-options-general-autoscalingtrigger)을 제공합니다. 이 네임스페이스의 설정은 해당 설정이 적용되는 리소스별로 구성됩니다.

```
option_settings:
  AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger:
    LowerBreachScaleIncrement: '-1'
  AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger:
    UpperBreachScaleIncrement: '1'
  AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger:
    UpperThreshold: '6000000'
  AWSEBCloudwatchAlarmLow.aws:autoscaling:trigger:
    BreachDuration: '5'
    EvaluationPeriods: '1'
    LowerThreshold: '2000000'
    MeasureName: NetworkOut
    Period: '5'
    Statistic: Average
    Unit: Bytes
```

# Elastic Beanstalk 환경에 대해 예약된 Auto Scaling 작업
<a name="environments-cfg-autoscaling-scheduledactions"></a>

예측 가능한 피크 트래픽 기간에 환경에서 Amazon EC2 인스턴스의 사용을 최적화하려면 일정에 따라 인스턴스 개수를 변경하도록 Amazon EC2 Auto Scaling 그룹을 구성합니다. 매일 오전에 확장되고 트래픽이 낮은 야간에는 축소되는 반복 작업으로 환경을 구성할 수 있습니다. 예를 들어 제한된 기간 동안 사이트에 대한 트래픽을 높이는 마케팅 이벤트가 있는 경우 이벤트 시작 시 확장되는 일회성 이벤트 하나와 이벤트 종료 시 축소되는 또 다른 이벤트 하나를 예약할 수 있습니다.

활성 예약 작업은 환경당 최대 120개까지 정의할 수 있습니다. 또한 Elastic Beanstalk에서는 만료된 예약 작업을 최대 150개까지 보관하므로 설정을 업데이트해 다시 사용할 수 있습니다.

## 예약 작업 구성
<a name="environments-cfg-autoscaling-scheduledactions-console"></a>

Elastic Beanstalk 콘솔에서 환경의 Auto Scaling 그룹에 대한 예약 작업을 생성할 수 있습니다.

**Elastic Beanstalk 콘솔에서 예약된 작업을 구성하려면**

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

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

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

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

1. [**시간 기반 조정**] 섹션에서 [**예약된 작업 추가**]를 선택합니다.

1. 다음 예약된 작업 설정을 채웁니다.
   + **이름(Name)** - 최대 255자의 영숫자를 공백 없이 입력해 고유한 이름을 지정합니다.
   + **인스턴스(Instances)** - Auto Scaling 그룹에 적용할 최소 및 최대 인스턴스 개수를 선택합니다.
   + **원하는 용량**(선택 사항) - Auto Scaling 그룹에 원하는 초기 용량을 설정합니다. 예약 작업이 적용되면 트리거가 설정을 기반으로 원하는 용량을 조정합니다.
   + **발생(Occurrence)** - 일정에 따라 조정 작업을 반복하려면 **반복(Recurring)**을 선택합니다.
   + **시작 시간(Start time)** - 일회성 작업의 경우 작업을 실행할 날짜와 시간을 선택합니다.

     반복 작업의 경우 시작 시간은 선택 사항입니다. 이 옵션을 지정하여 작업이 수행되는 가장 빠른 시간을 선택합니다. 이 시간이 지나면 **반복**에 따라 작업이 반복됩니다.
   + **반복 시간(Recurrence)** - [Cron](http://en.wikipedia.org/wiki/Cron#CRON_expression) 식을 사용하여 예약된 작업을 실행할 빈도를 지정합니다. 예를 들어 `30 6 * * 2`는 매주 화요일 오전 6:30 UTC에 작업을 실행합니다.
   + **종료 시간(End time)**(선택 사항) - 반복 작업에 대한 옵션입니다. 종료 시간이 지정되면 작업이 **반복** 표현식에 따라 반복되며, 이 시간 이후에는 다시 수행되지 않습니다.

     예약 작업이 종료됐을 때 Auto Scaling은 이전 설정으로 자동으로 되돌아가지 않습니다. 필요에 따라 두 번째 예약 작업은 Auto Scaling을 원래 설정으로 되돌리도록 구성할 수 있습니다.

1. [**추가**]를 선택합니다.

1. 변경 사항을 저장하려면 페이지 하단에서 **적용**을 선택합니다.
**참고**  
예약된 작업은 적용될 때까지 저장되지 않습니다.

## aws:autoscaling:scheduledaction 네임스페이스
<a name="environments-cfg-autoscaling-scheduledactions-namespace"></a>

많은 수의 예약 작업을 구성해야 하는 경우 [구성 파일](ebextensions.md) 또는 [Elastic Beanstalk API](environment-configuration-methods-after.md#configuration-options-after-awscli-commandline)를 사용하여 YAML 또는 JSON 파일의 구성 옵션 변경 사항을 적용할 수 있습니다. 또한 이러한 방법을 통해 [`Suspend` 옵션](command-options-general.md#command-options-general-autoscalingscheduledaction)에 액세스해 반복 예약 작업을 일시적으로 비활성화할 수 있습니다.

**참고**  
콘솔 외부에서 예약 작업 구성 옵션을 사용하는 경우에는 ISO 8601 시간 형식을 사용하여 시작 및 종료 시간을 UTC로 지정합니다. 예를 들면 2015-04-28T04:07:02Z입니다. ISO 8601 시간 형식에 대한 자세한 내용은 [날짜 및 시간 형식](http://www.w3.org/TR/NOTE-datetime)을 참조하십시오. 날짜는 예약된 모든 작업에서 고유해야 합니다.

Elastic Beanstalk에서는 [`aws:autoscaling:scheduledaction`](command-options-general.md#command-options-general-autoscalingscheduledaction) 네임스페이스에 예약 작업 설정에 대한 구성 옵션을 제공합니다. `resource_name` 필드를 사용해 예약 작업의 이름을 지정합니다.

**Example Scheduled-scale-up-specific-time-long.config**  
이 구성 파일은 Elastic Beanstalk가 2015-12-12T00:00:00Z에 5개에서 10개의 인스턴스를 스케일 아웃하도록 지시합니다.  

```
option_settings:
  - namespace: aws:autoscaling:scheduledaction
    resource_name: ScheduledScaleUpSpecificTime
    option_name: MinSize
    value: '5'
  - namespace: aws:autoscaling:scheduledaction
    resource_name: ScheduledScaleUpSpecificTime
    option_name: MaxSize
    value: '10'
  - namespace: aws:autoscaling:scheduledaction
    resource_name: ScheduledScaleUpSpecificTime
    option_name: DesiredCapacity
    value: '5'
  - namespace: aws:autoscaling:scheduledaction
    resource_name: ScheduledScaleUpSpecificTime
    option_name: StartTime
    value: '2015-12-12T00:00:00Z'
```

**Example Scheduled-scale-up-specific-time.config**  
EB CLI 또는 구성 파일에 간편 구문을 사용하려면 네임스페이스 앞에 리소스 이름을 추가합니다.  

```
option_settings:
  ScheduledScaleUpSpecificTime.aws:autoscaling:scheduledaction:
    MinSize: '5'
    MaxSize: '10'
    DesiredCapacity: '5'
    StartTime: '2015-12-12T00:00:00Z'
```

**Example Scheduled-scale-down-specific-time.config**  
이 구성 파일은 Elastic Beanstalk가 2015-12-12T07:00:00Z에 스케일 인을 수행하도록 지시합니다.  

```
option_settings:
  ScheduledScaleDownSpecificTime.aws:autoscaling:scheduledaction:
    MinSize: '1'
    MaxSize: '1'
    DesiredCapacity: '1'
    StartTime: '2015-12-12T07:00:00Z'
```

**Example Scheduled-periodic-scale-up.config**  
이 구성 파일은 Elastic Beanstalk가 매일 오전 9시에 스케일 아웃을 수행하도록 지시합니다. 이 작업은 2015년 5월 14일에 시작하여 2016년 1월 12일에 종료하도록 예약되어 있습니다.  

```
option_settings:
  ScheduledPeriodicScaleUp.aws:autoscaling:scheduledaction:
    MinSize: '5'
    MaxSize: '10'
    DesiredCapacity: '5'
    StartTime: '2015-05-14T07:00:00Z'
    EndTime: '2016-01-12T07:00:00Z'
    Recurrence: 0 9 * * *
```

**Example Scheduled-periodic-scale-down.config**  
이 구성 파일은 Elastic Beanstalk가 매일 오후 6시에 실행 중인 인스턴스가 없도록 스케일 인을 수행하도록 지시합니다. 애플리케이션이 영업 시간 외에는 대부분 유휴 상태인 경우에도 비슷하게 예약된 작업을 생성할 수 있습니다. 애플리케이션이 영업 시간이 아닐 때 실행되지 않도록 만들려면 `MaxSize`를 `0`로 변경합니다.  

```
option_settings:
  ScheduledPeriodicScaleDown.aws:autoscaling:scheduledaction:
    MinSize: '0'
    MaxSize: '1'
    DesiredCapacity: '0'
    StartTime: '2015-05-14T07:00:00Z'
    EndTime: '2016-01-12T07:00:00Z'
    Recurrence: 0 18 * * *
```

**Example Scheduled-weekend-scale-down.config**  
이 구성 파일은 Elastic Beanstalk가 금요일 오후 6시마다 스케일 인을 수행하도록 지시합니다. 애플리케이션이 주말 동안 많은 트래픽을 받지 못한다면 비슷한 예약된 작업을 만들 수 있습니다.  

```
option_settings:
  ScheduledWeekendScaleDown.aws:autoscaling:scheduledaction:
    MinSize: '1'
    MaxSize: '4'
    DesiredCapacity: '1'
    StartTime: '2015-12-12T07:00:00Z'
    EndTime: '2016-01-12T07:00:00Z'
    Recurrence: 0 18 * * 5
```

# Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정
<a name="environmentconfig-autoscaling-healthchecktype"></a>

Amazon EC2 Auto Scaling은 시작하는 각 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 상태를 모니터링합니다. 인스턴스가 예기치 않게 종료된 경우 Auto Scaling은 종료를 감지하고 대체 인스턴스를 시작합니다. 기본적으로 사용자의 환경을 위해 생성된 Auto Scaling 그룹에는 [Amazon EC2 상태 확인](https://docs.aws.amazon.com/autoscaling/latest/userguide/healthcheck.html)이 사용됩니다. 환경의 인스턴스가 Amazon EC2 상태 확인에 실패하면 Auto Scaling이 인스턴스를 중단하고 바꿉니다.

Amazon EC2 상태 확인은 인스턴스의 상태만 다루며, 애플리케이션, 서버 또는 인스턴스에서 실행되는 모든 Docker 컨테이너의 상태는 다루지 않습니다. 애플리케이션이 중단되었지만 애플리케이션이 실행되는 인스턴스가 여전히 정상일 경우 인스턴스가 로드 밸런서에서 제외될 수 있으나 Auto Scaling이 자동으로 바꾸지는 않습니다. 문제를 해결하려면 기본 동작을 수행하는 것이 좋습니다. 애플리케이션이 중단되는 즉시 Auto Scaling에서 인스턴스를 바꾸면 시작 후 곧바로 애플리케이션이 중단되었더라도 사용자는 무언가 잘못되었음을 깨닫지 못할 수 있습니다.

Auto Scaling에서 애플리케이션이 응답을 중지한 인스턴스를 바꾸게 하려는 경우 [구성 파일](ebextensions.md)을 사용하여 Auto Scaling 그룹에서 Elastic Load Balancing 상태 확인을 사용하도록 구성할 수 있습니다. 다음 예에서는 그룹이 로드 밸런서의 상태 확인은 물론 Amazon EC2 상태 확인도 사용하여 인스턴스 상태를 확인하도록 설정합니다.

**Example .ebextensions/autoscaling.config**  

```
Resources:
  AWSEBAutoScalingGroup:
    Type: "AWS::AutoScaling::AutoScalingGroup"
    Properties:
      HealthCheckType: ELB
      HealthCheckGracePeriod: 300
```

`HealthCheckType` 및 `HealthCheckGracePeriod` 속성에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html) 및 *Amazon EC2 Auto Scaling 사용 설명서*의 [Auto Scaling 인스턴스 상태 확인](https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html)을 참조하세요.

기본적으로 Elastic Load Balancing 상태 확인은 포트 80을 통해 인스턴스에 TCP 연결을 시도하도록 구성되어 있습니다. 이를 통해 인스턴스에서 실행 중인 웹 서버가 연결을 수락하고 있음을 확인합니다. 하지만 웹 서버뿐 아니라 애플리케이션 또한 양호한 상태가 되도록 [로드 밸런서 상태 확인을 사용자 지정](using-features.managing.elb.md)할 수 있습니다. 유예 기간 설정은 인스턴스가 종료되어 바뀌지 않고 상태 확인에 실패할 수 있는 시간(초)을 설정합니다. 로드 밸런서에서 제외된 후에도 인스턴스가 복구될 수 있으므로 애플리케이션에 적합한 시간을 인스턴스에 부여하세요.

# Elastic Beanstalk 환경의 로드 밸런서
<a name="using-features.managing.elb"></a>

로드 밸런서는 환경의 인스턴스 간에 트래픽을 분산합니다. [로드 밸런싱을 활성화](using-features-managing-env-types.md#using-features.managing.changetype)하면가 환경 전용 [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/) 로드 밸런서를 AWS Elastic Beanstalk 생성합니다. Elastic Beanstalk는 보안 설정을 처리하고 환경이 종료될 때 로드 밸런서를 종료하며 이 로드 밸런서를 완전히 관리합니다.

또는 여러 Elastic Beanstalk 환경에서 로드 밸런서를 공유하도록 선택할 수 있습니다. 공유 로드 밸런서를 사용하면 각 환경에 전용 로드 밸런서를 사용하지 않아도 되므로 운영 비용을 절감할 수 있습니다. 또한 환경에서 사용하는 공유 로드 밸런서에 대해 더 많은 관리 책임을 지게 됩니다.

Elastic Load Balancing에는 다음과 같은 로드 밸런서 유형이 있습니다.
+ [Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) – 이전 세대 로드 밸런서입니다. HTTP, HTTPS 또는 TCP 요청 트래픽을 환경 인스턴스의 다양한 포트로 라우팅합니다.
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) – 애플리케이션 계층 로드 밸런서입니다. HTTP 또는 HTTPS 요청 트래픽을 요청 경로에 따라 환경 인스턴스의 다양한 포트로 라우팅합니다.
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) – 네트워크 계층 로드 밸런서입니다. TCP 요청 트래픽을 환경 인스턴스의 다양한 포트로 라우팅합니다. 활성 및 수동 상태 확인을 둘 다 지원합니다.

Elastic Beanstalk에서는 3가지 로드 밸런서 유형을 모두 지원합니다. 다음 표에서는 두 가지 사용 패턴에서 사용할 수 있는 유형을 보여 줍니다.


| 로드 밸런서 유형 | 전용 | 공유 | 
| --- | --- | --- | 
|  Classic Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/icon-yes.png) 예  |   ![\[No\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/icon-no.png) 아니요  | 
|  Application Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/icon-yes.png) 예  |   ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/icon-yes.png) 예  | 
|  Network Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/icon-yes.png) 예  |   ![\[No\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/icon-no.png) 아니요  | 

**참고**  
**환경 만들기** 콘솔 마법사에서 Classic Load Balancer(CLB) 옵션이 비활성화되었습니다. 기존 환경이 Classic Load Balancer로 구성된 경우 Elastic Beanstalk 콘솔 또는 [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI)를 사용하여 [기존 환경을 복제](using-features.managing.clone.md)함으로써 새 환경을 만들 수 있습니다. 또한 EB CLI 또는 [AWS CLI](environments-create-awscli.md)를 사용하여 Classic Load Balancer로 구성된 새 환경을 만들 수도 있습니다. 이러한 명령줄 도구를 사용하면 계정에 이미 CLB가 없더라도 새 환경을 만들 수 있습니다.

기본적으로 Elastic Beanstalk는 Elastic Beanstalk 콘솔 또는 EB CLI로 로드 밸런싱을 활성화하면 환경에 대한 Application Load Balancer를 생성합니다. 포트 80에서 HTTP 트래픽을 수신 대기하고 동일 포트를 통해 이 트래픽을 인스턴스로 전달하도록 로드 밸런서를 구성합니다. 환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 이후에 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다.

**참고**  
사용자의 환경은 Application Load Balancer 생성을 위해 둘 이상의 가용 영역에서 서브넷이 있는 VPC에 마련해야 합니다. 모든 새 AWS 계정에는이 요구 사항을 충족하는 기본 VPCs 포함됩니다.

Elastic Beanstalk에서 지원하는 각각의 로드 밸런서 유형과 그 기능, Elastic Beanstalk 환경에서 이를 구성 및 관리하는 방법, Amazon S3로의 [액세스 로그 업로드](environments-cfg-loadbalancer-accesslogs.md)를 위한 로드 밸런서 구성 방법에 대해서는 다음 주제를 참조하세요.

**Topics**
+ [

# Classic Load Balancer 구성
](environments-cfg-clb.md)
+ [

# Application Load Balancer 구성
](environments-cfg-alb.md)
+ [

# 공유 Application Load Balancer 구성
](environments-cfg-alb-shared.md)
+ [

# Network Load Balancer 구성
](environments-cfg-nlb.md)
+ [

# 듀얼 스택 Elastic Beanstalk 로드 밸런서 구성
](environments-cfg-elbv2-ipv6-dualstack.md)
+ [

# 액세스 로그 구성
](environments-cfg-loadbalancer-accesslogs.md)

# Classic Load Balancer 구성
<a name="environments-cfg-clb"></a>

[로드 밸런싱을 활성화](using-features-managing-env-types.md#using-features.managing.changetype)하면 AWS Elastic Beanstalk 환경에 Elastic Load Balancing 로드 밸런서가 설치되어 환경의 인스턴스 간에 트래픽을 분산합니다. Elastic Load Balancing은 몇 가지 로드 밸런서 유형을 지원합니다. 자세한 내용은 [Elastic Load Balancing 사용 설명서](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)를 참조하세요. Elastic Beanstalk에서는 자동으로 로드 밸런서를 생성하거나, 생성한 공유 로드 밸런서를 지정할 수 있습니다.

이 주제에서는 Elastic Beanstalk에서 생성하고 사용자 환경 전용으로 지정하는 [Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/)의 구성에 대해 설명합니다. Elastic Beanstalk에서 지원하는 모든 로드 밸런서 유형 구성에 대한 자세한 내용은 [Elastic Beanstalk 환경의 로드 밸런서](using-features.managing.elb.md) 단원을 참조하세요.

**참고**  
환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 이후에 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다.

## 소개
<a name="environments-cfg-clb-intro"></a>

[Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/)는 Elastic Load Balancing 이전 세대 로드 밸런서입니다. 환경 인스턴스의 다양한 포트로의 HTTP, HTTPS 또는 TCP 요청 트래픽 라우팅을 지원합니다.

사용자의 환경에서 Classic Load Balancer를 사용할 때는 Elastic Beanstalk가 기본적으로 이를 포트 80에서 HTTP 트래픽 [수신](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html) 후 동일한 포트에서 인스턴스로 전달하도록 구성합니다. 포트 80 기본 리스너는 삭제할 수 없지만 비활성화하면 트래픽을 차단하여 동일한 기능을 수행할 수 있습니다. 다른 리스너를 추가하거나 삭제할 수 있습니다. 보안 연결을 지원하기 위하여 포트 443에 리스너와 TLS 인증서를 갖추어 로드 밸런서를 구성할 수 있습니다.

이 로드 밸런서는 [상태 확인](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html)을 통해 애플리케이션을 실행하는 Amazon EC2 인스턴스가 정상인지 여부를 판단합니다. 상태 확인에서는 지정된 URL에 일정한 간격으로 요청이 보내집니다. URL에서 오류 메시지를 반환하거나 정해진 시간 내에 반환에 실패할 경우에는 상태 확인에 실패합니다.

단일 서버의 동일한 클라이언트에서 여러 요청을 처리하여 애플리케이션이 더 나은 성능을 발휘하는 경우, [고정 세션](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html)을 사용하도록 로드 밸런서를 구성할 수 있습니다. 로드 밸런서는 고정 세션을 사용하여 요청을 처리한 Amazon EC2 인스턴스를 식별하는 쿠키를 HTTP 응답에 추가합니다. 동일한 클라이언트에서 후속 요청을 받게 되면, 로드 밸런서는 쿠키를 사용하여 동일한 인스턴스로 요청을 전송합니다.

[교차 영역 로드 밸런싱](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)을 사용하면 Classic Load Balancer에 대한 각각의 로드 밸런서 노드가 활성화된 모든 가용 영역에 있는 등록된 인스턴스 간에 요청을 균등하게 분산합니다. 교차 영역 로드 밸런싱이 비활성화된 경우에는 각각의 로드 밸런서 노드가 해당 가용 영역에만 있는 등록된 인스턴스 간에 요청을 균등하게 분산합니다.

비정상적인 상태나 축소된 환경으로 인해 로드 밸런서에서 인스턴스가 제거되면 [Connection Draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)은 인스턴스와 로드 밸런서 간의 연결을 종료하기 전에 요청을 완료할 시간을 인스턴스에 부여합니다. 요청을 보내거나 Connection Draining을 완전히 비활성화하여 인스턴스에 부여한 시간을 변경할 수 있습니다.

**참고**  
Elastic Beanstalk 콘솔이나 EB CLI로 환경을 생성할 때 기본적으로 Connection Draining은 활성화됩니다. 다른 클라이언트는 [구성 옵션](#environments-cfg-clb-namespace)으로 활성화할 수 있습니다.

고급 로드 밸런서 설정을 사용하여 임의의 포트에 리스너를 구성하고, 추가 고정 세션 설정을 수정하고, EC2 인스턴스에 안전하게 연결하도록 로드 밸런서를 구성할 수 있습니다. 고급 로드 밸런서 설정은 Elastic Beanstalk API를 사용하여 환경에 바로 또는 소스 코드에 구성 파일로 설정할 수 있는 [구성 옵션](#environments-cfg-clb-namespace)을 통해 사용할 수 있습니다. 이러한 설정 중 대부분은 Elastic Beanstalk 콘솔에서도 제공됩니다. 또한 Amazon S3로 [액세스 로그를 업로드](environments-cfg-loadbalancer-accesslogs.md)하도록 로드 밸런서를 구성할 수도 있습니다.

## Elastic Beanstalk 콘솔을 사용하여 Classic Load Balancer 구성
<a name="environments-cfg-clb-console"></a>

환경 생성 중에 또는 나중에 환경을 실행 중일 때 Elastic Beanstalk 콘솔을 사용하여 Classic Load Balancer의 포트, HTTPS 인증서 및 기타 설정을 구성할 수 있습니다.

**참고**  
**환경 만들기** 콘솔 마법사에서 Classic Load Balancer(CLB) 옵션이 비활성화되었습니다. 기존 환경이 Classic Load Balancer로 구성된 경우 Elastic Beanstalk 콘솔 또는 [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI)를 사용하여 [기존 환경을 복제](using-features.managing.clone.md)함으로써 새 환경을 만들 수 있습니다. 또한 EB CLI 또는 [AWS CLI](environments-create-awscli.md)를 사용하여 Classic Load Balancer로 구성된 새 환경을 만들 수도 있습니다. 이러한 명령줄 도구를 사용하면 계정에 이미 CLB가 없더라도 새 환경을 만들 수 있습니다.

**Elastic Beanstalk 콘솔에서 실행 중인 환경의 Classic Load Balancer를 구성하려면**

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

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

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

1. [**로드 밸런서**] 구성 범주에서 [**편집**]을 선택합니다.
**참고**  
[**로드 밸런서**] 구성 범주에 [**편집**] 버튼이 없으면 환경에 로드 밸런서가 없는 것입니다. 설정 방법을 알아보려면 [환경 유형 변경](using-features-managing-env-types.md#using-features.managing.changetype)을 참조하십시오.

1. 환경에 필요한 Classic Load Balancer 구성 부분을 변경합니다.

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

**Topics**
+ [

### 리스너
](#using-features.managing.elb.listeners)
+ [

### 세션
](#using-features.managing.elb.sessions)
+ [

### 교차 영역 로드 밸런싱
](#using-features.managing.elb.cross-zone)
+ [

### 연결 드레이닝
](#using-features.managing.elb.draining)
+ [

### 상태 확인
](#using-features.managing.elb.healthchecks)

### 리스너
<a name="using-features.managing.elb.listeners"></a>

이 목록을 사용하여 로드 밸런서에 대해 리스너를 지정합니다. 각 리스너는 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스로 라우팅합니다. 처음에 이 목록에는 기본 리스너가 표시되는데, 기본 리스너는 포트 80의 수신 HTTP 트래픽을 포트 80에서 HTTP 트래픽을 수신 대기 중인 환경의 인스턴스 서버로 라우팅합니다.

**참고**  
포트 80 기본 리스너는 삭제할 수 없지만 비활성화하면 트래픽을 차단하여 동일한 기능을 수행할 수 있습니다.

![\[Classic Load Balancer 구성 - 리스너 편집\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners.png)


**기존 리스너를 구성하려면**

1. 테이블 항목 옆에 있는 확인란을 선택하고 **작업**을 선택한 다음, 원하는 작업을 선택합니다.

1. **편집**을 선택한 경우 **Classic Load Balancer 리스너** 대화 상자를 사용하여 설정을 편집하고 나서 **저장**을 선택합니다.

예를 들면 기본 리스너를 편집하고 로드 밸런서를 통해 요청을 원본 그대로 전달하도록 하려는 경우 **프로토콜**을 **HTTP**에서 **TCP**로 변경할 수 있습니다. 이렇게 하면 로드 밸런서는 헤더(`X-Forwarded-For` 포함)를 재작성하지 않아도 됩니다. 고정 세션에서는 이 기술을 사용할 수 없습니다.

![\[Classic Load Balancer 구성 - 기본 리스너의 프로토콜을 TCP로 변경\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-tcp.png)


**리스너를 추가하려면**

1. **리스너 추가**를 선택합니다.

1. **Classic Load Balancer 리스너** 대화 상자에서 원하는 설정을 구성한 다음 **추가**를 선택합니다.

보안 리스너 추가는 일반 사용 사례입니다. 다음 이미지의 예제는 포트 443의 HTTPS 트래픽 리스너를 추가합니다. 이 리스너는 수신 트래픽을 포트 443에서 HTTPS 트래픽을 수신 대기 중인 환경 인스턴스 서버로 라우팅합니다.

HTTPS 리스너를 구성하기 전에 유효한 SSL 인증서가 있는지 확인해야 합니다. 다음 중 하나를 수행하세요.
+ 리전에서 AWS Certificate Manager (ACM)을 사용할 수 있는 경우 ACM을 사용하여 인증서를 생성하거나 가져옵니다. [AWS](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM 인증서 요청에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 요청](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)을 참조하세요. 서드 파티 인증서를 ACM으로 가져오는 방법에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 가져오기](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)를 참조하세요.
+ 해당 [AWS 리전에서 ACM을 사용할](https://docs.aws.amazon.com/general/latest/gr/acm.html) 수 없는 경우 기존 인증서와 키를 IAM에 업로드합니다. 인증서를 만들어서 IAM에 업로드하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [서버 인증서 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)을 참조하세요.

Elastic Beanstalk에서의 HTTPS 구성과 인증서 작업에 대한 자세한 내용은 [Elastic Beanstalk 환경에 사용할 HTTPS 구성](configuring-https.md) 단원을 참조하세요.

**SSL 인증서**에서 SSL 인증서의 ARN을 선택합니다. 예를 들어 `arn:aws:iam::123456789012:server-certificate/abc/certs/build` 또는 `arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678`입니다.

![\[Classic Load Balancer 구성 - 보안 리스너 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-https.png)


Elastic Beanstalk에서의 HTTPS 구성과 인증서 작업에 대한 자세한 내용은 [Elastic Beanstalk 환경에 사용할 HTTPS 구성](configuring-https.md) 단원을 참조하세요.

### 세션
<a name="using-features.managing.elb.sessions"></a>

**세션 고정성 활성화됨** 상자를 선택하거나 지워서 고정 세션을 활성화 또는 비활성화합니다. **쿠키 지속 시간**을 사용하여 고정 세션의 지속 시간을 최대 **1000000**초까지로 구성합니다. [**로드 밸런서 포트**] 목록에서 기본 정책(`AWSEB-ELB-StickinessPolicy`)이 적용되는 리스너 포트를 선택합니다.

![\[세션 고정성 및 지속 시간 관련 Classic Load Balancer 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-elb-sessions.png)


### 교차 영역 로드 밸런싱
<a name="using-features.managing.elb.cross-zone"></a>

**여러 가용 영역 전반에서 로드 밸런싱 활성화됨** 상자를 선택하거나 선택 해제해 교차 영역 로드 밸런싱을 활성화 또는 비활성화합니다.

![\[교차 영역 로드 밸런싱 관련 Classic Load Balancer 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-elb-cross-zone.png)


### 연결 드레이닝
<a name="using-features.managing.elb.draining"></a>

**Connection Draining 활성화됨** 상자를 선택하거나 선택 해제해 Connection Draining을 활성화 또는 비활성화합니다. **드레이닝 제한 시간**을 최대 **3600**초까지로 설정합니다.

![\[Connection Draining 및 드레이닝 제한 시간 관련 Classic Load Balancer 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-elb-draining.png)


### 상태 확인
<a name="using-features.managing.elb.healthchecks"></a>

다음 설정을 사용하여 로드 밸런서 상태 확인을 구성합니다.
+ **상태 확인 경로(Health check path)** – 로드 밸런서에서 상태 확인 요청을 전송할 경로입니다. 이 경로를 설정하지 않으면 로드 밸런서는 상태를 확인하기 위해 포트 80에서 TCP 연결을 시도합니다.
+ **제한 시간(Timeout)** – 상태 확인 응답을 기다릴 시간(초)입니다.
+ **간격(Interval)** – 개별 인스턴스의 상태 확인 간 간격(초 단위)입니다. 이 간격은 제한 시간보다 커야 합니다.
+ **비정상 임계값(Unhealthy threshold)**, **정상 임계값(Healthy threshold)** – Elastic Load Balancing이 인스턴스의 상태 확인을 변경하기 전에 각각 실패하거나 성공해야 하는 상태 확인 횟수입니다.

![\[상태 확인을 위한 Classic Load Balancer 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-elb-healthcheck.png)


**참고**  
Elastic Load Balancing 상태 확인은 환경 Auto Scaling 그룹의 상태 확인 동작에는 영향을 주지 않습니다. Elastic Load Balancing 상태 확인에 실패한 인스턴스는 자동 대체하도록 Amazon EC2 Auto Scaling을 수동으로 구성하지 않는 한 Amazon EC2 Auto Scaling으로 자동 대체되지 않습니다. 세부 정보는 [Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정](environmentconfig-autoscaling-healthchecktype.md) 섹션을 참조하세요.

전반적인 환경 상태에 영향을 미치는 정도와 상태 확인에 대한 자세한 내용은 [기본 상태 보고](using-features.healthstatus.md) 단원을 참조하세요.

## EB CLI를 사용하여 Classic Load Balancer 구성
<a name="environments-cfg-clb-ebcli"></a>

[**eb create**](eb3-create.md)를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다.

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1):
```

**Enter(입력)**를 눌러 `classic`을 선택합니다.

또한 `--elb-type` 옵션을 사용하여 로드 밸런서 유형을 지정할 수도 있습니다.

```
$ eb create test-env --elb-type classic
```

## Classic Load Balancer 구성 네임스페이스
<a name="environments-cfg-clb-namespace"></a>

다음 네임스페이스에서 Classic Load Balancer와 관련된 설정을 찾을 수 있습니다.
+ [`aws:elb:healthcheck`](command-options-general.md#command-options-general-elbhealthcheck) – 로드 밸런서 상태 확인의 임계값, 확인 간격 및 제한 시간을 구성합니다.
+ [`aws:elasticbeanstalk:application`](command-options-general.md#command-options-general-elasticbeanstalkapplication) – 상태 확인 URL을 구성합니다.
+ [`aws:elb:loadbalancer`](command-options-general.md#command-options-general-elbloadbalancer) – 교차 영역 로드 밸런싱을 활성화합니다. 로드 밸런서에 보안 그룹을 할당하고 Elastic Beanstalk가 생성하는 기본 보안 그룹을 재정의합니다. 이 네임스페이스에는 `aws:elb:listener` 네임스페이스의 옵션에서 바꾼 표준 및 보안 리스너를 구성하기 위한 지원되지 않는 옵션이 포함되어 있습니다.
+ [`aws:elb:listener`](command-options-general.md#command-options-general-elblistener) – 포트 80의 기본 리스너, 포트 443의 보안 리스너, 다른 모든 포트의 프로토콜에 대한 추가 리스너를 구성합니다. 네임스페이스로 `aws:elb:listener`를 지정한 경우, 포트 80에서 기본 리스너에 설정이 적용됩니다. 포트를 지정한 경우(예: `aws:elb:listener:443`), 리스너가 해당 포트에 구성됩니다.
+ [`aws:elb:policies`](command-options-general.md#command-options-general-elbpolicies) – 로드 밸런서에 대한 추가 설정을 구성합니다. 이 네임스페이스의 옵션을 사용하여 임의의 포트에 리스너를 구성하고, 추가 고정 세션 설정을 수정하고, Amazon EC2 인스턴스에 안전하게 연결하도록 로드 밸런서를 구성합니다.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 [권장 값](command-options.md#configuration-options-recommendedvalues) 단원을 참조하십시오.

**Example .ebextensions/loadbalancer-terminatehttps.config**  
다음 예제 구성 파일은 포트 443에 HTTPS를 만들고, 로드 밸런서가 보안 연결을 종료할 때 사용하는 인증서를 할당하고, 포트 80에 기본 리스너를 비활성화합니다. 로드 밸런서는 HTTP:80에서 환경의 EC2 인스턴스로 암호화된 요청을 전달합니다.  

```
option_settings:
  aws:elb:listener:443:
    ListenerProtocol: HTTPS
    SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
    InstancePort: 80
    InstanceProtocol: HTTP
  aws:elb:listener:
    ListenerEnabled: false
```

# Application Load Balancer 구성
<a name="environments-cfg-alb"></a>

[로드 밸런싱을 활성화](using-features-managing-env-types.md#using-features.managing.changetype)하면 AWS Elastic Beanstalk 환경에 Elastic Load Balancing 로드 밸런서가 설치되어 환경의 인스턴스 간에 트래픽을 분산합니다. Elastic Load Balancing은 몇 가지 로드 밸런서 유형을 지원합니다. 자세한 내용은 [Elastic Load Balancing 사용 설명서](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)를 참조하세요. Elastic Beanstalk에서는 자동으로 로드 밸런서를 생성하거나, 생성한 공유 로드 밸런서를 지정할 수 있습니다.

이 주제에서는 Elastic Beanstalk에서 생성하고 사용자 환경 전용으로 지정하는 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/)의 구성에 대해 설명합니다. 또한 [공유 Application Load Balancer 구성](environments-cfg-alb-shared.md) 섹션도 참조하세요. Elastic Beanstalk에서 지원하는 모든 로드 밸런서 유형 구성에 대한 자세한 내용은 [Elastic Beanstalk 환경의 로드 밸런서](using-features.managing.elb.md) 단원을 참조하세요.

**참고**  
환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다. 전용 로드 밸런서에서 공유 로드 밸런서로 전환하거나 그 반대로 전환할 수 없습니다.

## 소개
<a name="environments-cfg-alb-intro"></a>

Application Load Balancer는 여러 경로에 대한 요청을 서로 다른 대상으로 보낼 수 있도록 애플리케이션 네트워크 프로토콜 계층에서 트래픽을 검사하여 요청 경로를 식별합니다.

환경에서 Application Load Balancer를 사용하는 경우 Elastic Beanstalk는 기본적으로 Classic Load Balancer와 동일한 기능을 수행하도록 구성합니다. 기본 리스너는 포트 80에서 HTTP 요청을 수락하고 이를 환경의 인스턴스로 분산합니다. 포트 443에서 HTTPS 트래픽을 해독하는 인증서가 있는 보안 리스너를 추가하고, 상태 확인 동작을 구성하고, 로드 밸런서에서 Amazon Simple Storage Service(Amazon S3) 버킷으로 액세스 로그를 푸시할 수 있습니다.

**참고**  
Classic Load Balancer 또는 Network Load Balancer와 달리 Application Load Balancer는 전송 계층(계층 4) TCP 또는 SSL/TLS 리스너를 가질 수 없습니다. 오직 HTTP 및 HTTPS 리스너만 지원합니다. 또한, 백엔드 인증을 사용하여 로드 밸런서와 백엔드 인스턴스 간에 HTTPS 연결을 인증할 수 없습니다.

Elastic Beanstalk 환경에서 Application Load Balancer를 사용하여 특정 경로의 트래픽을 웹 서버 인스턴스의 다른 포트로 보낼 수 있습니다. Classic Load Balancer를 통해 리스너가 수신하는 모든 트래픽이 백엔드 인스턴스의 단일 포트로 라우팅됩니다. Application Load Balancer를 통해 리스너에 대한 여러 *규칙*을 구성하여 특정 경로에 대한 요청을 여러 백엔드 프로세스로 라우팅할 수 있습니다. 프로세스가 수신 대기하는 포트로 각 프로세스를 구성합니다.

예를 들어, 기본 애플리케이션과 별도로 로그인 프로세스를 실행할 수 있습니다. 환경의 인스턴스에서 실행하는 기본 애플리케이션이 대부분의 요청을 수락하고 포트 80에서 수신 대기하지만, 로그인 프로세스는 포트 5000에서 수신 대기하고 `/login` 경로에 대한 요청을 수락합니다. 클라이언트에서 수신되는 모든 요청은 포트 80으로 들어옵니다. Application Load Balancer를 사용하는 경우 요청의 경로에 따라 개별 프로세스 두 개로 트래픽을 라우팅하는 두 규칙을 통해 포트 80으로 수신되는 트래픽에 대해 단일 리스너를 구성할 수 있습니다. 포트 5000에서 수신 대기 중인 로그인 프로세스에 `/login`에 대한 트래픽을 라우팅하는 사용자 지정 규칙을 추가합니다. 기본 규칙은 그 밖의 모든 트래픽을 포트 80에서 수신 대기하는 기본 애플리케이션 프로세스로 라우팅합니다.

Application Load Balancer 규칙은 요청을 *대상 그룹*에 매핑합니다. Elastic Beanstalk에서 대상 그룹은 *프로세스*로 표현됩니다. 프로토콜, 포트 및 상태 확인 설정을 사용하여 프로세스를 구성할 수 있습니다. 프로세스는 환경의 인스턴스에서 실행되는 프로세스를 나타냅니다. 기본 프로세스는 애플리케이션 앞에서 실행되는 역방향 프록시(nginx 또는 Apache)의 포트 80에 있는 리스너입니다.

**참고**  
Elastic Beanstalk 외부에서는 대상 그룹이 인스턴스 그룹으로 매핑됩니다. 리스너는 규칙과 대상 그룹을 사용하여 트래픽을 경로에 따라 다른 인스턴스에 라우팅할 수 있습니다. Elastic Beanstalk 내에서는 환경의 모든 인스턴스가 동일하므로 서로 다른 포트에서 수신 대기하는 프로세스 간에 구별됩니다.

Classic Load Balancer는 전체 환경에 대해 하나의 상태 확인 경로를 사용합니다. Application Load Balancer를 사용할 경우 로드 밸런서 및 Elastic Beanstalk 확장 상태 모니터링을 통해 모니터링되는 별도의 상태 확인 경로가 프로세스마다 있습니다.

Application Load Balancer를 사용하려면 환경이 기본 또는 사용자 지정 VPC에 있어야 하며, 표준 권한 세트를 보유한 서비스 역할이 있어야 합니다. 서비스 역할이 오래된 경우 `elasticloadbalancing:DescribeTargetHealth` 및 `elasticloadbalancing:DescribeLoadBalancers`를 포함하도록 해당 역할의 [권한을 업데이트](iam-instanceprofile.md#iam-instanceprofile-addperms)해야 할 수 있습니다. Application Load Balancer에 대한 자세한 내용은 [Application Load Balancer란 무엇인가요?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/)를 참조하세요.

**참고**  
Application Load Balancer 상태 확인은 Elastic Beanstalk 상태 확인 경로를 사용하지 않습니다. 대신에 각 프로세스마다 개별적으로 구성된 특정 경로가 사용됩니다.

## Elastic Beanstalk 콘솔을 사용하여 Application Load Balancer 구성
<a name="environments-cfg-alb-console"></a>

환경 생성 중에 또는 나중에 환경을 실행 중일 때 Elastic Beanstalk 콘솔을 사용하여 Application Load Balancer의 리스너, 프로세스 및 규칙을 구성할 수 있습니다.

**환경 생성 중에 Elastic Beanstalk 콘솔에서 Application Load Balancer를 구성하려면**

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

1. 탐색 창에서 **환경**을 선택합니다.

1. [새 환경 생성](environments-create-wizard.md)을 선택하여 환경 생성을 시작합니다.

1. 마법사의 기본 페이지에서 **환경 생성**을 선택하기 전에 **추가 옵션 구성**을 선택합니다.

1. **고가용성** 구성 프리셋을 선택합니다.

   또는 **용량** 구성 범주에서 **로드 밸런싱 수행** 환경 유형을 구성합니다. 자세한 내용은 [Capacity](environments-create-wizard.md#environments-create-wizard-capacity)을 참조하세요.

1. [**로드 밸런서**] 구성 범주에서 [**편집**]을 선택합니다.

1. **Application Load Balancer** 및 **전용(Dedicated)** 옵션을 아직 선택하지 않은 경우 선택합니다.  
![\[Elastic Load Balancing 구성 페이지 - 로드 밸런서 유형 선택\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-type-chooser.png)

1. 환경에 필요한 Application Load Balancer 구성 부분을 모두 변경합니다.

1. **저장**을 선택하고 난 후 환경에 필요한 다른 구성 부분을 변경합니다.

1. **환경 생성**을 선택합니다.

**Elastic Beanstalk 콘솔에서 실행 중인 환경의 Application Load Balancer를 구성하려면**

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

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

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

1. [**로드 밸런서**] 구성 범주에서 [**편집**]을 선택합니다.
**참고**  
[**로드 밸런서**] 구성 범주에 [**편집**] 버튼이 없으면 환경에 로드 밸런서가 없는 것입니다. 설정 방법을 알아보려면 [환경 유형 변경](using-features-managing-env-types.md#using-features.managing.changetype)을 참조하십시오.

1. 환경에 필요한 Application Load Balancer 구성 부분을 변경합니다.

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

**Topics**
+ [

### 리스너
](#environments-cfg-alb-console-listeners)
+ [

### 프로세스
](#environments-cfg-alb-console-processes)
+ [

### 규칙
](#environments-cfg-alb-console-rules)
+ [

### 액세스 로그 캡처
](#environments-cfg-alb-console-logs)

### 리스너
<a name="environments-cfg-alb-console-listeners"></a>

이 목록을 사용하여 로드 밸런서에 대해 리스너를 지정합니다. 각 리스너는 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스의 하나 이상의 프로세스로 라우팅합니다. 처음에 이 목록에는 기본 리스너가 표시되는데, 이 리스너는 포트 80을 통해 전송되는 수신 HTTP 트래픽을 **기본** 프로세스로 라우팅합니다.

![\[Application Load Balancer 구성 - 리스너 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners.png)


**기존 리스너를 구성하려면**

1. 테이블 항목 옆에 있는 확인란을 선택한 다음 **작업**, **편집**을 선택합니다.

1. **Application Load Balancer 리스너** 대화 상자를 사용하여 설정을 편집하고 나서 **저장**을 선택합니다.

**리스너를 추가하려면**

1. **리스너 추가**를 선택합니다.

1. **Application Load Balancer 리스너(Application Load Balancer listener)** 대화 상자에서 원하는 설정을 구성한 다음 **추가(Add)**를 선택합니다.

**Application Load Balancer 리스너** 대화 상자 설정을 사용하여 리스너가 트래픽을 수신 대기하는 포트 및 프로토콜과 트래픽을 라우팅할 프로세스를 선택합니다. HTTPS 프로토콜을 선택하는 경우 SSL 설정을 구성합니다.

![\[Application Load Balancer 리스너 대화 상자\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-listener-dialog.png)


HTTPS 리스너를 구성하기 전에 유효한 SSL 인증서가 있는지 확인해야 합니다. 다음 중 하나를 수행하세요.
+ 리전에서 AWS Certificate Manager (ACM)을 사용할 수 있는 경우 ACM을 사용하여 인증서를 생성하거나 가져옵니다. [AWS](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM 인증서 요청에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 요청](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)을 참조하세요. 서드 파티 인증서를 ACM으로 가져오는 방법에 대한 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 가져오기](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)를 참조하세요.
+ 해당 [AWS 리전에서 ACM을 사용할](https://docs.aws.amazon.com/general/latest/gr/acm.html) 수 없는 경우 기존 인증서와 키를 IAM에 업로드합니다. 인증서를 만들어서 IAM에 업로드하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [서버 인증서 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)을 참조하세요.

Elastic Beanstalk에서의 HTTPS 구성과 인증서 작업에 대한 자세한 내용은 [Elastic Beanstalk 환경에 사용할 HTTPS 구성](configuring-https.md) 단원을 참조하세요.

### 프로세스
<a name="environments-cfg-alb-console-processes"></a>

이 목록을 사용하여 로드 밸런서에 대해 프로세스를 지정합니다. 프로세스는 리스너가 트래픽을 라우팅하기 위한 대상입니다. 각 리스너는 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스의 하나 이상의 프로세스로 라우팅합니다. 처음에 목록에는 기본 프로세스가 표시되는데, 이 프로세스는 포트 80을 통해 수신 HTTP 트래픽을 수신 대기합니다.

![\[Application Load Balancer 구성 - 프로세스 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-processes.png)


기존 프로세스 설정을 편집하거나 새 프로세스를 추가할 수 있습니다. 목록에 있는 프로세스 편집 또는 목록에 프로세스 추가를 시작하려면 [리스너 목록](#environments-cfg-alb-console-listeners)에 대해 나열된 동일한 단계를 사용합니다. **환경 프로세스** 대화 상자가 열립니다.

**Topics**
+ [

#### 정의
](#environments-cfg-alb-console-process-definition)
+ [

#### 상태 확인
](#environments-cfg-alb-console-process-healthchecks)
+ [

#### 세션
](#environments-cfg-alb-console-process-sessions)

#### 정의
<a name="environments-cfg-alb-console-process-definition"></a>

**이름**과 요청을 수신 대기할 **포트** 및**프로토콜** 설정을 사용하여 프로세스를 정의합니다.

![\[이름, 포트 및 프로토콜에 대한 Application Load Balancer 프로세스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


#### 상태 확인
<a name="environments-cfg-alb-console-process-healthchecks"></a>

다음 설정을 사용하여 프로세스 상태 확인을 구성합니다.
+ **HTTP 코드(HTTP code)** – 정상 프로세스를 지정하는 HTTP 상태 코드입니다.
+ **경로(Path)** – 프로세스에 대한 상태 확인 요청 경로입니다.
+ **제한 시간(Timeout)** – 상태 확인 응답을 기다릴 시간(초)입니다.
+ **간격(Interval)** – 개별 인스턴스의 상태 확인 간 간격(초 단위)입니다. 이 간격은 제한 시간보다 커야 합니다.
+ **비정상 임계값(Unhealthy threshold)**, **정상 임계값(Healthy threshold)** – Elastic Load Balancing이 인스턴스의 상태 확인을 변경하기 전에 각각 실패하거나 성공해야 하는 상태 확인 횟수입니다.
+ **등록 취소 지연(Deregistration delay)** – 인스턴스 등록을 취소하기 전에 활성 요청이 완료될 때까지 기다려야 하는 시간(초)입니다.

![\[상태 확인에 대한 Application Load Balancer 프로세스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-healthcheck.png)


**참고**  
Elastic Load Balancing 상태 확인은 환경 Auto Scaling 그룹의 상태 확인 동작에는 영향을 주지 않습니다. Elastic Load Balancing 상태 확인에 실패한 인스턴스는 자동 대체하도록 Amazon EC2 Auto Scaling을 수동으로 구성하지 않는 한 Amazon EC2 Auto Scaling으로 자동 대체되지 않습니다. 세부 정보는 [Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정](environmentconfig-autoscaling-healthchecktype.md) 섹션을 참조하세요.

전반적인 환경 상태에 영향을 미치는 정도와 상태 확인에 대한 자세한 내용은 [기본 상태 보고](using-features.healthstatus.md) 단원을 참조하세요.

#### 세션
<a name="environments-cfg-alb-console-process-sessions"></a>

**고정 정책 활성화됨** 상자를 선택하거나 지워서 고정 세션을 활성화 또는 비활성화합니다. **쿠키 지속 시간**을 사용하여 고정 세션의 지속 시간을 최대 **604800**초까지로 구성합니다.

![\[세션 고정성에 대한 Application Load Balancer 프로세스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### 규칙
<a name="environments-cfg-alb-console-rules"></a>

이 목록을 사용하여 로드 밸런서에 대한 사용자 지정 리스너 규칙을 지정합니다. 규칙은 리스너가 특정 경로 패턴에서 수신하는 요청을 대상 프로세스로 매핑합니다. 각 리스너에는 다양한 경로의 요청을 인스턴스의 서로 다른 프로세스로 라우팅하는 여러 규칙이 있을 수 있습니다.

규칙에는 수신 중인 요청에 적용되는 우선 순위를 결정하는 숫자 우선 순위가 지정되어 있습니다. 추가하는 각각의 새 리스너마다 Elastic Beanstalk는 모든 리스너의 트래픽을 기본 프로세스로 라우팅하는 기본 규칙을 추가합니다. 기본 규칙의 우선 순위는 최하위입니다. 이 순위는 동일 리스너에 대해 수신 요청과 일치하는 다른 규칙이 없는 경우에 적용됩니다. 먼저 사용자 지정 규칙을 추가하지 않은 경우 목록이 비어 있습니다. 모든 리스너의 기본 규칙은 표시되지 않습니다.

![\[Application Load Balancer 구성 - 규칙 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-rules.png)


기존 규칙의 설정을 편집하거나 새 규칙을 추가할 수 있습니다. 목록에 있는 규칙 편집 또는 목록에 프로세스 추가를 시작하려면 [리스너 목록](#environments-cfg-alb-console-listeners)에 대해 나열된 동일한 단계를 사용합니다. **리스너 규칙** 대화 상자가 열리고 다음 설정이 표시됩니다.
+ **이름(Name)** – 규칙의 이름입니다.
+ **리스너 포트(Listener port)** – 규칙이 적용되는 리스너의 포트입니다.
+ **우선 순위(Priority)** – 규칙의 우선 순위입니다. 우선 순위 숫자가 작을수록 우선 적용됩니다. 리스너 규칙의 우선 순위는 고유해야 합니다.
+ **일치 조건(Match conditions)** – 규칙이 적용되는 요청 URL 조건의 목록입니다. 조건에는 두 가지 유형, 즉 **HostHeader**(URL의 도메인 부분)와 **PathPattern**(URL의 경로 부분)이 있습니다. 최대 5개의 조건을 추가할 수 있습니다. 각 조건 값은 최대 128자이며 와일드카드 문자를 포함할 수 있습니다.
+ **프로세스(Process)** – 로드 밸런서가 규칙과 일치하는 요청을 라우팅할 프로세스입니다.

기존 규칙을 편집하는 경우 **이름** 및 **리스너 포트**는 변경할 수 없습니다.

![\[Application Load Balancer 구성 - 규칙 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


### 액세스 로그 캡처
<a name="environments-cfg-alb-console-logs"></a>

이 설정을 사용하여 Elastic Load Balancing을 구성하여 Application Load Balancer에 전송된 요청에 대한 상세 정보와 함께 로그를 캡처할 수 있습니다. 액세스 로그 캡처는 기본적으로 비활성화되어 있습니다. **로그 저장(Store logs)**이 활성화되면 Elastic Load Balancing은 사용자가 구성한 **S3 버킷**에 로그를 저장합니다. **접두사(Prefix)** 설정은 버킷에서 로그를 위한 최상위 폴더를 지정합니다. Elastic Load Balancing은 해당 접두사 아래의 `AWSLogs`라는 폴더에 로그를 저장합니다. 접두사를 지정하지 않으면 Elastic Load Balancing이 버킷의 루트 수준 폴더에 로그를 저장합니다.

**참고**  
액세스 로그 캡처를 위해 구성한 Amazon S3 버킷이 Elastic Beanstalk가 계정에 대해 생성한 버킷이 아닌 경우 AWS Identity and Access Management (IAM) 사용자에게 적절한 권한이 있는 사용자 정책을 추가해야 합니다. Elastic Beanstalk이 제공하는 [관리형 사용자 정책](AWSHowTo.iam.managed-policies.md)은 Elastic Beanstalk 관리 리소스에 대한 권한만 다룹니다.

권한 및 기타 요구 사항을 비롯한 액세스 로그에 대한 자세한 내용은 [Application Load Balancer를 위한 액세스 로그](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html)를 참조하세요.

![\[Application Load Balancer 구성 - 액세스 로그\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-logs.png)


## 예제: 보안 리스너 하나와 프로세스 2개를 사용하는 Application Load Balancer
<a name="environments-cfg-alb-console-example"></a>

이 예제에서는 애플리케이션에 관리 요청을 처리하기 위한 별도의 프로세스와 엔드 투 엔드 트래픽 암호가 필요합니다.

이러한 요구 사항을 충족하도록 환경의 Application Load Balancer를 구성하려는 경우 기본 리스너를 제거하고 HTTPS 리스너를 추가하며, 기본 프로세스가 HTTPS의 포트 443에서 수신 대기하도록 지정하고, 다른 경로에 관리 트래픽용 프로세스 및 리스너 규칙을 추가할 수 있습니다.

**이 예제용 로드 밸런서를 구성하려면**

1. *보안 리스너를 추가합니다.* **포트**에 **443**을 입력합니다. **프로토콜**에서 **HTTPS**를 선택합니다. **SSL 인증서**에서 SSL 인증서의 ARN을 선택합니다. 예를 들어 **arn:aws:iam::123456789012:server-certificate/abc/certs/build** 또는 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**입니다.

   **기본 프로세스**의 경우 **default**를 선택한 상태로 유지합니다.  
![\[Application Load Balancer 구성 - 보안 리스너 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-https.png)

   이제 목록에서 추가 리스너를 볼 수 있습니다.  
![\[Application Load Balancer 구성 예제 - 2개의 리스너를 포함하는 리스너 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners2.png)

1. *기본 포트 80 HTTP 리스너를 비활성화합니다.* 기본 리스너의 경우 **활성** 옵션을 끕니다.  
![\[Application Load Balancer 구성 예제 - 기본 리스너 비활성화\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-disabled.png)

1. *기본 프로세스를 HTTPS로 구성합니다.* 기본 프로세스를 선택한 다음 **작업**에서 **편집**을 선택합니다. **포트**에 **443**을 입력합니다. **프로토콜**에서 **HTTPS**를 선택합니다.  
![\[Application Load Balancer 구성 예제 - HTTPS로의 기본 프로세스 구성\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *관리 프로세스를 추가합니다.* **Name**에 **admin**를 입력합니다. **포트**에 **443**을 입력합니다. **프로토콜**에서 **HTTPS**를 선택합니다. **상태 확인**에서 **경로**에 **/admin**을 입력합니다.  
![\[Application Load Balancer 구성 예제 - 관리 프로세스 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *관리 트래픽 규칙을 추가합니다.* **Name**에 **admin**를 입력합니다. **리스너 포트**에 **443**을 입력합니다. **일치 조건(Match conditions)**에서 **/admin/\$1** 값과 함께 **PathPattern**을 추가합니다. **프로세스**에 **admin**을 선택합니다.  
![\[Application Load Balancer 구성 예제 - 관리 규칙 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## EB CLI를 사용하여 Application Load Balancer 구성
<a name="environments-cfg-alb-ebcli"></a>

[**eb create**](eb3-create.md)를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다.

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 2):
```

또한 `--elb-type` 옵션으로 로드 밸런서 유형을 지정할 수 있습니다.

```
$ eb create test-env --elb-type application
```

## Application Load Balancer 네임스페이스
<a name="environments-cfg-alb-namespaces"></a>

다음 네임스페이스에서 Application Load Balancer와 관련된 설정을 찾을 수 있습니다.
+ `aws:elasticbeanstalk:environment` – 환경을 위한 로드 밸런서를 선택합니다. Application Load Balancer의 값은 `application`입니다.

  구성 파일([.Ebextensions](ebextensions.md))에서는 이 옵션을 설정할 수 없습니다.
+ `aws:elbv2:loadbalancer` – Application Load Balancer 전체에 적용되는 액세스 로그 및 기타 설정을 구성합니다.
+ `aws:elbv2:listener` – Application Load Balancer에서 리스너를 구성합니다. 이러한 설정은 Classic Load Balancer에 대한 `aws:elb:listener`의 설정에 매핑됩니다.
+ `aws:elbv2:listenerrule` – 요청 경로에 따라 트래픽을 서로 다른 프로세스로 라우팅하는 규칙을 구성합니다. 규칙은 Application Load Balancer에 고유합니다.
+ `aws:elasticbeanstalk:environment:process` – 상태 확인을 구성하고 환경의 인스턴스에서 실행되는 프로세스의 포트 및 프로토콜을 지정합니다. 이 포트 및 프로토콜 설정은 Classic Load Balancer의 리스너에 대한 `aws:elb:listener`의 인스턴스 포트 및 인스턴스 프로토콜 설정에 매핑됩니다. 상태 확인 설정은 `aws:elb:healthcheck` 및 `aws:elasticbeanstalk:application` 네임스페이스의 설정에 매핑됩니다.

**Example .ebextensions/alb-access-logs.config**  
다음 구성 파일을 사용하여 Application Load Balancer가 있는 환경에 대해 액세스 로그를 업로드하도록 할 수 있습니다.  

```
option_settings:
  aws:elbv2:loadbalancer:
    AccessLogsS3Bucket: amzn-s3-demo-bucket
    AccessLogsS3Enabled: 'true'
    AccessLogsS3Prefix: beanstalk-alb
```

**Example .ebextensions/alb-default-process.config**  
다음 구성 파일은 기본 프로세스의 상태 확인 및 고정성 설정을 수정합니다.  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '15'
    HealthCheckPath: /
    HealthCheckTimeout: '5'
    HealthyThresholdCount: '3'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: HTTP
    StickinessEnabled: 'true'
    StickinessLBCookieDuration: '43200'
```

**Example .ebextensions/alb-secure-listener.config**  
다음 구성 파일은 포트 443에서 보안 리스너 및 일치하는 프로세스를 추가합니다.  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/alb-admin-rule.config**  
다음 구성 파일은 요청 경로가 `/admin`인 트래픽을 포트 4443에서 수신 대기하는 `admin` 프로세스로 라우팅하는 규칙이 있는 보안 리스너를 추가합니다.  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    Rules: admin
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# 공유 Application Load Balancer 구성
<a name="environments-cfg-alb-shared"></a>

[로드 밸런싱을 활성화](using-features-managing-env-types.md#using-features.managing.changetype)하면 AWS Elastic Beanstalk 환경에 Elastic Load Balancing 로드 밸런서가 설치되어 환경의 인스턴스 간에 트래픽을 분산합니다. Elastic Load Balancing은 몇 가지 로드 밸런서 유형을 지원합니다. 자세한 내용은 [Elastic Load Balancing 사용 설명서](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)를 참조하세요. Elastic Beanstalk에서는 자동으로 로드 밸런서를 생성하거나, 생성한 공유 로드 밸런서를 지정할 수 있게 합니다.

이 주제에서는 사용자가 생성하여 환경에 연결한 공유 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/)의 구성에 대해 설명합니다. 또한 [Application Load Balancer 구성](environments-cfg-alb.md) 섹션도 참조하세요. Elastic Beanstalk에서 지원하는 모든 로드 밸런서 유형 구성에 대한 자세한 내용은 [Elastic Beanstalk 환경의 로드 밸런서](using-features.managing.elb.md) 단원을 참조하세요.

**참고**  
환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다. 전용 로드 밸런서에서 공유 로드 밸런서로 전환하거나 그 반대로 전환할 수 없습니다.

## 소개
<a name="environments-cfg-alb-shared-intro"></a>

*공유 로드 밸런서*는 Amazon Elastic Compute Cloud(Amazon EC2) 서비스를 사용하여 직접 생성 및 관리한 다음 여러 Elastic Beanstalk 환경에서 사용하는 로드 밸런서입니다.

로드 밸런싱된 조정 환경을 생성하고 Application Load Balancer를 사용하도록 선택할 때마다 Elastic Beanstalk는 기본적으로 사용자 환경 전용 로드 밸런서를 만듭니다. Application Load Balancer가 무엇인지와 Elastic Beanstalk 환경에서 어떻게 작동하는지 알아보려면 Elastic Beanstalk에 대한 Application Load Balancer 구성 [소개](environments-cfg-alb.md#environments-cfg-alb-intro)를 참조하세요.

경우에 따라 여러 개의 전용 로드 밸런서를 사용하는 데 드는 비용을 절감할 수 있습니다. 이는 애플리케이션이 모놀리식 서비스 대신 마이크로서비스 제품군인 경우와 같이 여러 환경이 있을 때 유용할 수 있습니다. 이러한 경우 공유 로드 밸런서를 사용하도록 선택할 수 있습니다.

공유 로드 밸런서를 사용하려면 먼저 Amazon EC2에서 이를 생성하고 하나 이상의 리스너를 추가합니다. Elastic Beanstalk 환경을 만드는 동안 로드 밸런서를 제공하고 리스너 포트를 선택합니다. Elastic Beanstalk는 리스너를 환경의 기본 프로세스와 연결합니다. 사용자 지정 리스너 규칙을 추가하여 특정 호스트 헤더 및 경로에서 다른 환경 프로세스로 트래픽을 라우팅할 수 있습니다.

Elastic Beanstalk가 공유 로드 밸런서에 태그를 추가합니다. 태그 이름은 `elasticbeanstalk:shared-elb-environment-count`이고 값은 이 로드 밸런서를 공유하는 환경 수입니다.

공유 로드 밸런서를 사용하는 것은 전용 로드 밸런서를 사용하는 것과 여러 가지 면에서 차이가 있습니다.


| 관련 | 전용 Application Load Balancer | 공유 Application Load Balancer | 
| --- | --- | --- | 
|  관리  |  Elastic Beanstalk는 로드 밸런서, 리스너, 리스너 규칙 및 프로세스(대상 그룹)를 만들고 관리합니다. 환경을 종료하면 Elastic Beanstalk도 해당 환경을 제거합니다. 해당 옵션을 선택하는 경우 Elastic Beanstalk는 로드 밸런서 액세스 로그 캡처를 설정할 수 있습니다.  |  Elastic Beanstalk 외부에서 로드 밸런서와 리스너를 만들고 관리합니다. Elastic Beanstalk는 기본 규칙과 기본 프로세스를 만들고 관리하며, 사용자가 규칙 및 프로세스를 추가할 수 있습니다. Elastic Beanstalk는 환경 생성 중에 추가된 리스너 규칙 및 프로세스를 제거합니다.  | 
|  리스너 규칙  |  Elastic Beanstalk는 각 리스너에 대한 기본 규칙을 생성하여 모든 트래픽을 리스너의 기본 프로세스로 라우팅합니다.  |  Elastic Beanstalk는 기본 규칙을 포트 80 리스너(있는 경우)에만 연결합니다. 사용자가 다른 기본 리스너 포트를 선택하는 경우 기본 규칙을 해당 포트에 연결해야 합니다(Elastic Beanstalk 콘솔 및 EB CLI에서 자동으로 수행). 로드 밸런서를 공유하는 환경 간의 리스너 규칙 조건 충돌을 해결하기 위해 Elastic Beanstalk는 환경의 CNAME을 호스트 헤더 조건으로 리스너 규칙에 추가합니다. Elastic Beanstalk는 로드 밸런서를 공유하는 환경 전체에서 규칙 우선 순위 설정을 상대적으로 취급하고 생성 시 절대 우선 순위에 매핑합니다.  | 
|  보안 그룹  |  Elastic Beanstalk는 기본 보안 그룹을 생성하여 로드 밸런서에 연결합니다.  |  사용자는 로드 밸런서에 사용할 하나 이상의 보안 그룹을 구성할 수 있으며, 구성하지 않으면 Elastic Beanstalk가 Elastic Beanstalk에 의해 관리되는 기존 보안 그룹이 로드 밸런서에 이미 연결되어 있는지 확인합니다. 이미 연결되어 있지 않으면 Elastic Beanstalk는 보안 그룹을 생성하여 로드 밸런서에 연결합니다. Elastic Beanstalk는 로드 밸런서를 공유하는 마지막 환경이 종료되면 이 보안 그룹을 삭제합니다.  | 
|  업데이트  |  환경 생성 후 Application Load Balancer를 업데이트할 수 있습니다. 리스너, 리스너 규칙 및 프로세스를 편집할 수 있고, 로드 밸런서 액세스 로그 캡처를 구성할 수 있습니다.  |  Application Load Balancer에서 액세스 로그 캡처를 구성하는 데 Elastic Beanstalk를 사용할 수 없으며 환경 생성 후에는 리스너 및 리스너 규칙을 업데이트할 수 없습니다. 프로세스(대상 그룹)만 업데이트할 수 있습니다. 액세스 로그 캡처를 구성하고 리스너 및 리스너 규칙을 업데이트하려면 Amazon EC2를 사용합니다.  | 

## Elastic Beanstalk 콘솔을 사용하여 공유 Application Load Balancer 구성
<a name="environments-cfg-alb-shared-console"></a>

Elastic Beanstalk 콘솔을 사용하여, 환경 생성 중에 공유 Application Load Balancer를 구성할 수 있습니다. 환경에서 사용할 계정의 공유 가능 로드 밸런서 중 하나를 선택하고, 기본 리스너 포트를 선택하고, 추가 프로세스 및 리스너 규칙을 구성할 수 있습니다.

환경이 생성된 후에는 Application Load Balancer 콘솔에서 공유 Application Load Balancer 구성을 편집할 수 없습니다. 리스너, 리스너 규칙, 프로세스(대상 그룹) 및 액세스 로그 캡처를 구성하려면 Amazon EC2를 사용합니다.

**환경 생성 중에 Elastic Beanstalk 콘솔에서 Application Load Balancer를 구성하려면**

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

1. 탐색 창에서 **환경**을 선택합니다.

1. [새 환경 생성](environments-create-wizard.md)을 선택하여 환경 생성을 시작합니다.

1. 마법사의 기본 페이지에서 **환경 생성**을 선택하기 전에 **추가 옵션 구성**을 선택합니다.

1. **고가용성** 구성 프리셋을 선택합니다.

   또는 **용량** 구성 범주에서 **로드 밸런싱 수행** 환경 유형을 구성합니다. 자세한 내용은 [Capacity](environments-create-wizard.md#environments-create-wizard-capacity)을 참조하세요.

1. [**로드 밸런서**] 구성 범주에서 [**편집**]을 선택합니다.

1. **Application Load Balancer** 옵션을 선택하고 **공유(Shared)** 옵션을 선택합니다(이미 선택되어 있지 않은 경우).  
![\[Elastic Load Balancing 구성 페이지 - 로드 밸런서 유형 선택\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-type-chooser.png)

1. 환경에 필요한 공유 Application Load Balancer 구성 부분을 모두 변경합니다.

1. **저장**을 선택하고 난 후 환경에 필요한 다른 구성 부분을 변경합니다.

1. **환경 생성**을 선택합니다.

**Topics**
+ [

### 공유 Application Load Balancer
](#environments-cfg-alb-shared-console-alb)
+ [

### 프로세스
](#environments-cfg-alb-shared-console-processes)
+ [

### 규칙
](#environments-cfg-alb-shared-console-rules)

### 공유 Application Load Balancer
<a name="environments-cfg-alb-shared-console-alb"></a>

이 단원에서는 환경에 사용할 공유 Application Load Balancer를 선택하고 기본 트래픽 라우팅을 구성합니다.

여기에서 공유 Application Load Balancer를 구성하기 전에 Amazon EC2를 사용하여 계정에 하나 이상의 리스너와 공유하기 위한 Application Load Balancer를 하나 이상 정의합니다. 아직 선택하지 않은 경우 **로드 밸런서 관리(Manage load balancers)**를 선택할 수 있습니다. Elastic Beanstalk는 새 브라우저 탭에서 Amazon EC2 콘솔을 엽니다.

Elastic Beanstalk 외부에서 공유 로드 밸런서를 구성했으면 이 콘솔 섹션에서 다음 설정을 구성합니다.
+ **로드 밸런서 ARN(Load balancer ARN)** – 이 환경에서 사용할 공유 로드 밸런서입니다. 로드 밸런서 목록에서 선택하거나 로드 밸런서 Amazon 리소스 이름(ARN)을 입력합니다.
+ **기본 리스너 포트(Default listener port)** – 공유 로드 밸런서가 수신 대기하는 리스너 포트입니다. 기존 리스너 포트 목록에서 선택합니다. 호스트 헤더에 환경의 CNAME이 있는 이 리스너의 트래픽은 이 환경의 기본 프로세스로 라우팅됩니다.

![\[Application Load Balancer 구성 - 공유 로드 밸런서 선택\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-alb.png)


### 프로세스
<a name="environments-cfg-alb-shared-console-processes"></a>

이 목록을 사용하여 공유 로드 밸런서에 대해 프로세스를 지정합니다. 프로세스는 리스너가 트래픽을 라우팅하기 위한 대상입니다. 처음에 목록에는 기본 프로세스가 표시되는데, 이 프로세스는 기본 리스너에서 트래픽을 수신합니다.

![\[Application Load Balancer 구성 - 프로세스 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-processes.png)


**기존 프로세스를 구성하려면**

1. 테이블 항목 옆에 있는 확인란을 선택한 다음 **작업**, **편집**을 선택합니다.

1. **환경 프로세스(Environment process)** 대화 상자를 사용하여 설정을 편집한 다음 **저장(Save)**을 선택합니다.

**프로세스를 추가하려면**

1. **프로세스 추가(Add process)**를 선택합니다.

1. **환경 프로세스(Environment process)** 대화 상자에서 원하는 설정을 구성한 다음 **추가(Add)**를 선택합니다.

**Topics**
+ [

#### 정의
](#environments-cfg-alb-console-process-definition)
+ [

#### 상태 확인
](#environments-cfg-alb-shared-console-process-healthchecks)
+ [

#### 세션
](#environments-cfg-alb-shared-console-process-sessions)

#### 정의
<a name="environments-cfg-alb-console-process-definition"></a>

**이름**과 요청을 수신 대기할 **포트** 및**프로토콜** 설정을 사용하여 프로세스를 정의합니다.

![\[이름, 포트 및 프로토콜에 대한 Application Load Balancer 프로세스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


#### 상태 확인
<a name="environments-cfg-alb-shared-console-process-healthchecks"></a>

다음 설정을 사용하여 프로세스 상태 확인을 구성합니다.
+ **HTTP 코드(HTTP code)** – 정상 프로세스를 지정하는 HTTP 상태 코드입니다.
+ **경로(Path)** – 프로세스에 대한 상태 확인 요청 경로입니다.
+ **제한 시간(Timeout)** – 상태 확인 응답을 기다릴 시간(초)입니다.
+ **간격(Interval)** – 개별 인스턴스의 상태 확인 간 간격(초 단위)입니다. 이 간격은 제한 시간보다 커야 합니다.
+ **비정상 임계값(Unhealthy threshold)**, **정상 임계값(Healthy threshold)** – Elastic Load Balancing이 인스턴스의 상태 확인을 변경하기 전에 각각 실패하거나 성공해야 하는 상태 확인 횟수입니다.
+ **등록 취소 지연(Deregistration delay)** – 인스턴스 등록을 취소하기 전에 활성 요청이 완료될 때까지 기다려야 하는 시간(초)입니다.

![\[상태 확인에 대한 Application Load Balancer 프로세스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-healthcheck.png)


**참고**  
Elastic Load Balancing 상태 확인은 환경 Auto Scaling 그룹의 상태 확인 동작에는 영향을 주지 않습니다. Elastic Load Balancing 상태 확인에 실패한 인스턴스는 자동 대체하도록 Amazon EC2 Auto Scaling을 수동으로 구성하지 않는 한 Amazon EC2 Auto Scaling으로 자동 대체되지 않습니다. 세부 정보는 [Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정](environmentconfig-autoscaling-healthchecktype.md) 섹션을 참조하세요.

전반적인 환경 상태에 영향을 미치는 정도와 상태 확인에 대한 자세한 내용은 [기본 상태 보고](using-features.healthstatus.md) 단원을 참조하세요.

#### 세션
<a name="environments-cfg-alb-shared-console-process-sessions"></a>

**고정 정책 활성화됨** 상자를 선택하거나 지워서 고정 세션을 활성화 또는 비활성화합니다. **쿠키 지속 시간**을 사용하여 고정 세션의 지속 시간을 최대 **604800**초까지로 구성합니다.

![\[세션 고정성에 대한 Application Load Balancer 프로세스 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### 규칙
<a name="environments-cfg-alb-shared-console-rules"></a>

이 목록을 사용하여 공유 로드 밸런서에 대한 사용자 지정 리스너 규칙을 지정합니다. 규칙은 리스너가 특정 경로 패턴에서 수신하는 요청을 대상 프로세스로 매핑합니다. 각 리스너에는 리스너를 공유하는 다양한 환경의 인스턴스에서 다양한 경로의 요청을 서로 다른 프로세스로 라우팅하는 여러 규칙이 있을 수 있습니다.

규칙에는 수신 중인 요청에 적용되는 우선 순위를 결정하는 숫자 우선 순위가 지정되어 있습니다. Elastic Beanstalk는 모든 기본 리스너의 트래픽을 새 환경의 기본 프로세스로 라우팅하는 기본 규칙을 추가합니다. 기본 규칙의 우선 순위는 최하위입니다. 이 순위는 동일 리스너에 대해 수신 요청과 일치하는 다른 규칙이 없는 경우에 적용됩니다. 먼저 사용자 지정 규칙을 추가하지 않은 경우 목록이 비어 있습니다. 기본 규칙은 표시되지 않습니다.

![\[Application Load Balancer 구성 - 규칙 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-rules.png)


기존 규칙의 설정을 편집하거나 새 규칙을 추가할 수 있습니다. 목록에 있는 규칙 편집 또는 목록에 프로세스 추가를 시작하려면 [프로세스 목록](#environments-cfg-alb-shared-console-processes)에 대해 나열된 동일한 단계를 사용합니다. **리스너 규칙** 대화 상자가 열리고 다음 설정이 표시됩니다.
+ **이름(Name)** – 규칙의 이름입니다.
+ **리스너 포트(Listener port)** – 규칙이 적용되는 리스너의 포트입니다.
+ **우선 순위(Priority)** – 규칙의 우선 순위입니다. 우선 순위 숫자가 작을수록 우선 적용됩니다. 리스너 규칙의 우선 순위는 고유해야 합니다. Elastic Beanstalk는 공유 환경 전체에서 규칙 우선 순위를 상대적으로 취급하고 생성 시 절대 우선 순위에 매핑합니다.
+ **일치 조건(Match conditions)** – 규칙이 적용되는 요청 URL 조건의 목록입니다. 조건에는 두 가지 유형, 즉 **HostHeader**(URL의 도메인 부분)와 **PathPattern**(URL의 경로 부분)이 있습니다. 하나의 조건이 환경 하위 도메인에 예약되어 있으며 최대 4개의 조건을 추가할 수 있습니다. 각 조건 값은 최대 128자이며 와일드카드 문자를 포함할 수 있습니다.
+ **프로세스(Process)** – 로드 밸런서가 규칙과 일치하는 요청을 라우팅할 프로세스입니다.

![\[Application Load Balancer 구성 - 규칙 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


## 예제: 안전한 마이크로서비스 기반 애플리케이션에 공유 Application Load Balancer 사용
<a name="environments-cfg-alb-shared-console-example"></a>

이 예제에서 애플리케이션은 여러 마이크로 서비스로 구성되며 각 서비스는 하나의 Elastic Beanstalk 환경으로 구현됩니다. 또한 엔드 투 엔드 트래픽 암호화가 필요합니다. 이 예제에서는 사용자 요청을 처리하는 주 프로세스와 관리 요청을 처리하는 별도의 프로세스가 있는 마이크로서비스 환경 중 하나를 보여줍니다.

이러한 요구 사항을 충족하려면 Amazon EC2를 사용하여 마이크로서비스 간에 공유할 Application Load Balancer를 생성합니다. 포트 443과 HTTPS 프로토콜에 보안 리스너를 추가합니다. 그런 다음, 마이크로서비스 도메인당 하나씩, 여러 SSL 인증서를 리스너에 추가합니다. Application Load Balancer 및 보안 리스너 생성에 대한 자세한 내용은 *Application Load Balancers 사용 설명서*의 [Application Load Balancer 생성](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) 및 [Application Load Balancer용 HTTPS 리스너 생성](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)을 참조하세요.

Elastic Beanstalk에서 공유 Application Load Balancer를 사용하도록 각 마이크로서비스 환경을 구성하고 기본 리스너 포트를 443으로 설정합니다. 여기서 설명하는 환경의 경우 기본 프로세스가 HTTPS를 사용하여 포트 443에서 수신함을 나타내고 다른 경로의 관리자 트래픽에 대한 프로세스 및 리스너 규칙을 추가합니다.

**이 예제용 공유 로드 밸런서를 구성하려면**

1. **공유 Application Load Balancer(Shared Application Load Balancer)** 섹션에서 로드 밸런서를 선택한 다음 **기본 리스너 포트(Default listener)**로 **443**을 선택합니다. 이 리스너 포트가 로드 밸런서에 있는 유일한 리스너인 경우 이미 선택되어 있습니다.  
![\[Application Load Balancer 구성 - 보안 리스너 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-example-alb.png)

1. *기본 프로세스를 HTTPS로 구성합니다.* 기본 프로세스를 선택한 다음 **작업**에서 **편집**을 선택합니다. **포트**에서 **443**를 입력합니다. **프로토콜**에서 **HTTPS**를 선택합니다.  
![\[Application Load Balancer 구성 예제 - HTTPS로의 기본 프로세스 구성\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *관리 프로세스를 추가합니다.* **이름**에 **admin**를 입력합니다. **포트**에서 **443**를 입력합니다. **프로토콜**에서 **HTTPS**를 선택합니다. **상태 확인(Health check)**에서 **경로(Path)**에 **/admin**을 입력합니다.  
![\[Application Load Balancer 구성 예제 - 관리 프로세스 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *관리 트래픽 규칙을 추가합니다.* **이름**에 **admin**를 입력합니다. **리스너 포트(Listener port)**에 **443**을 입력합니다. **일치 조건(Match conditions)**에서 **/admin/\$1** 값과 함께 **PathPattern**을 추가합니다. **프로세스**에 **admin**을 선택합니다.  
![\[Application Load Balancer 구성 예제 - 관리 규칙 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## EB CLI를 사용하여 공유 Application Load Balancer 구성
<a name="environments-cfg-alb-shared-ebcli"></a>

[**eb create**](eb3-create.md)를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다. `application`(기본값)을 선택하고 계정에 하나 이상의 공유 가능 Application Load Balancer가 있는 경우 EB CLI에서 공유 Application Load Balancer를 사용할지 여부도 묻습니다. **y**로 응답하면 로드 밸런서와 기본 포트를 선택하라는 메시지가 표시됩니다.

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 2): 

Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y

Select a shared load balancer
1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e
2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
(default is 1): 2

Select a listener port for your shared load balancer
1) 80
2) 100
3) 443
(default is 1): 3
```

명령 옵션을 사용하여 공유 로드 밸런서를 지정할 수도 있습니다.

```
$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443
```

## 공유 Application Load Balancer 네임스페이스
<a name="environments-cfg-alb-shared-namespaces"></a>

다음 네임스페이스에서 공유 Application Load Balancer와 관련된 설정을 찾을 수 있습니다.
+ `aws:elasticbeanstalk:environment` – 환경의 로드 밸런서 유형을 선택하고 공유 로드 밸런서를 사용하도록 Elastic Beanstalk에 지정합니다.

  구성 파일([.Ebextensions](ebextensions.md))에서는 이 두 옵션을 설정할 수 없습니다.
+ `aws:elbv2:loadbalancer` – 공유 Application Load Balancer ARN 및 보안 그룹을 구성합니다.
+ `aws:elbv2:listener` – 리스너 규칙을 나열하여 공유 Application Load Balancer의 리스너를 환경 프로세스와 연결합니다.
+ `aws:elbv2:listenerrule` – 요청 경로에 따라 트래픽을 서로 다른 프로세스로 라우팅하는 리스너 규칙을 구성합니다. 규칙은 전용 및 고유 Application Load Balancer에 고유합니다.
+ `aws:elasticbeanstalk:environment:process` – 상태 확인을 구성하고 환경의 인스턴스에서 실행되는 프로세스의 포트 및 프로토콜을 지정합니다.

**Example .ebextensions/application-load-balancer-shared.config**  
공유 Application Load Balancer를 시작하려면 Elastic Beanstalk 콘솔, EB CLI 또는 API를 사용하여 로드 밸런서 유형을 `application`으로 설정하고 공유 로드 밸런서를 사용하도록 선택합니다. [구성 파일](ebextensions.md)을 사용하여 공유 로드 밸런서를 구성합니다.  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
```

**참고**  
이 옵션은 환경을 만드는 동안에만 구성할 수 있습니다.

**Example .ebextensions/alb-shared-secure-listener.config**  
다음 구성 파일은 공유 로드 밸런서에 포트 443의 기본 보안 리스너를 선택하고 기본 프로세스가 포트 443에서 수신하도록 설정합니다.  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/alb-shared-admin-rule.config**  
다음 구성 파일은 이전 예제를 기반으로 하여 요청 경로가 `/admin`인 트래픽을 포트 4443에서 수신 대기하는 `admin` 프로세스로 라우팅하는 규칙을 추가합니다.  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default,admin
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# Network Load Balancer 구성
<a name="environments-cfg-nlb"></a>

[로드 밸런싱을 활성화](using-features-managing-env-types.md#using-features.managing.changetype)하면 AWS Elastic Beanstalk 환경에 Elastic Load Balancing 로드 밸런서가 설치되어 환경의 인스턴스 간에 트래픽을 분산합니다. Elastic Load Balancing은 몇 가지 로드 밸런서 유형을 지원합니다. 자세한 내용은 [Elastic Load Balancing 사용 설명서](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)를 참조하세요. Elastic Beanstalk에서는 자동으로 로드 밸런서를 생성하거나, 생성한 공유 로드 밸런서를 지정할 수 있습니다.

이 주제에서는 Elastic Beanstalk에서 생성하고 사용자 환경 전용으로 지정하는 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/)의 구성에 대해 설명합니다. Elastic Beanstalk에서 지원하는 모든 로드 밸런서 유형 구성에 대한 자세한 내용은 [Elastic Beanstalk 환경의 로드 밸런서](using-features.managing.elb.md) 단원을 참조하세요.

**참고**  
환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다.

## 소개
<a name="environments-cfg-nlb-intro"></a>

Network Load Balancer를 통해 기본 리스너는 포트 80에서 TCP 요청을 수락하고 이러한 요청을 환경의 인스턴스로 분산합니다. 상태 확인 동작 구성, 리스너 포트 구성, 또는 다른 포트로의 리스너 추가가 가능합니다.

**참고**  
Classic Load Balancer 또는 Application Load Balancer와 달리 Network Load Balancer는 애플리케이션 계층(계층 7) HTTP 또는 HTTPS 리스너를 가질 수 없습니다. 이는 전송 계층 (계층 4) TCP 리스너만 지원합니다. HTTP 및 HTTPS 트래픽은 TCP를 통해 환경으로 라우팅될 수 있습니다. 웹 클라이언트와 환경 간의 보안 HTTPS 연결을 설정하려면 환경 인스턴스에 [자체 서명된 인증서](configuring-https-ssl.md)를 설치하고 인스턴스가 알맞은 포트(일반적으로 443)에 대해 수신 대기하고 HTTPS 연결을 종료하도록 구성합니다. 구성은 플랫폼에 따라 다릅니다. 자세한 내용은 [인스턴스에서 HTTPS 종료 구성](https-singleinstance.md) 섹션을 참조하세요. 그 후에는 Network Load Balancer를 구성하여 알맞은 포트에 대해 수신 대기하는 프로세스로 매핑하는 리스너를 추가합니다.

Network Load Balancer는 활성 상태 확인을 지원합니다. 이러한 확인 작업은 루트(`/`) 경로로의 메시지에 기반합니다. 또한 Network Load Balancer는 패시브 상태 확인을 지원합니다. 오류가 있는 백엔드 인스턴스를 자동으로 검출하여 상태에 이상이 없는 인스턴스로만 트래픽을 라우팅합니다.

## Elastic Beanstalk 콘솔을 사용하여 Network Load Balancer 구성
<a name="environments-cfg-nlb-console"></a>

Elastic Beanstalk 콘솔을 사용하여 환경을 생성하는 동안 또는 나중에 환경이 실행 중일 때 Network Load Balancer의 리스너와 프로세스를 구성할 수 있습니다.

**환경 생성 중에 Elastic Beanstalk 콘솔에서 Network Load Balancer를 구성하려면**

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

1. 탐색 창에서 **환경**을 선택합니다.

1. [새 환경 생성](environments-create-wizard.md)을 선택하여 환경 생성을 시작합니다.

1. 마법사의 기본 페이지에서 **환경 생성**을 선택하기 전에 **추가 옵션 구성**을 선택합니다.

1. **고가용성** 구성 프리셋을 선택합니다.

   또는 **용량** 구성 범주에서 **로드 밸런싱 수행** 환경 유형을 구성합니다. 자세한 내용은 [Capacity](environments-create-wizard.md#environments-create-wizard-capacity)을 참조하세요.

1. [**로드 밸런서**] 구성 범주에서 [**편집**]을 선택합니다.

1. 아직 선택하지 않은 경우 **Network Load Balancer** 옵션을 선택합니다.  
![\[Elastic Load Balancing 구성 페이지 - 로드 밸런서 유형 선택\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-type-chooser.png)

1. 환경에 필요한 Network Load Balancer 구성 부분을 모두 변경합니다.

1. **저장**을 선택하고 난 후 환경에 필요한 다른 구성 부분을 변경합니다.

1. **환경 생성**을 선택합니다.

**Elastic Beanstalk 콘솔에서 실행 중인 환경의 Network Load Balancer를 구성하려면**

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

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

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

1. [**로드 밸런서**] 구성 범주에서 [**편집**]을 선택합니다.
**참고**  
[**로드 밸런서**] 구성 범주에 [**편집**] 버튼이 없으면 환경에 로드 밸런서가 없는 것입니다. 설정 방법을 알아보려면 [환경 유형 변경](using-features-managing-env-types.md#using-features.managing.changetype)을 참조하십시오.

1. 환경에 필요한 Network Load Balancer 구성 부분을 변경합니다.

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

**Topics**
+ [

### 리스너
](#environments-cfg-nlb-console-listeners)
+ [

### 프로세스
](#environments-cfg-nlb-console-processes)

### 리스너
<a name="environments-cfg-nlb-console-listeners"></a>

이 목록을 사용하여 로드 밸런서에 대해 리스너를 지정합니다. 각 리스너는 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스의 프로세스로 라우팅합니다. 처음에 이 목록에는 기본 리스너가 표시되는데, 이 리스너는 포트 80을 통해 전송되는 트래픽을 포트 80을 수신 대기하는 **기본** 프로세스로 라우팅합니다.

![\[Network Load Balancer 구성 - 리스너 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listeners.png)


**기존 리스너를 구성하려면**

1. 테이블 항목 옆에 있는 확인란을 선택한 다음 **작업**, **편집**을 선택합니다.

1. 편집을 선택한 경우 **Network Load Balancer 리스너** 대화 상자를 사용하여 설정을 편집하고 나서 **저장**을 선택합니다.

**리스너를 추가하려면**

1. **리스너 추가**를 선택합니다.

1. **Network Load Balancer 리스너** 대화 상자에서 필요한 설정을 구성한 다음 **추가**를 선택합니다.

**Network Load Balancer 리스너** 대화 상자를 사용하여 리스너가 트래픽을 수신 대기하는 포트를 구성하고, 사용자가 트래픽을 라우팅하려는 프로세스를 선택합니다(프로세스가 수신 대기하는 포트에 의해 지정됨).

![\[Network Load Balancer 리스너 대화 상자\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listener-dialog.png)


### 프로세스
<a name="environments-cfg-nlb-console-processes"></a>

이 목록을 사용하여 로드 밸런서에 대해 프로세스를 지정합니다. 프로세스는 리스너가 트래픽을 라우팅하기 위한 대상입니다. 각 리스너는 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스의 프로세스로 라우팅합니다. 처음에 목록에는 기본 프로세스가 표시되는데, 이 프로세스는 포트 80을 통해 수신 트래픽을 수신 대기합니다.

![\[Network Load Balancer 구성 - 프로세스 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-processes.png)


기존 프로세스 설정을 편집하거나 새 프로세스를 추가할 수 있습니다. 목록에 있는 프로세스 편집 또는 목록에 프로세스 추가를 시작하려면 [리스너 목록](environments-cfg-alb.md#environments-cfg-alb-console-listeners)에 대해 나열된 동일한 단계를 사용합니다. **환경 프로세스** 대화 상자가 열립니다.

**Topics**
+ [

#### 정의
](#environments-cfg-nlb-console-process-definition)
+ [

#### 상태 확인
](#environments-cfg-nlb-console-process-healthchecks)

#### 정의
<a name="environments-cfg-nlb-console-process-definition"></a>

**이름**과 요청을 수신 대기할 **Process port(프로세스 포트)** 설정을 사용하여 프로세스를 정의합니다.

![\[이름, 리스너 포트, 프로세스 포트에 대한 Network Load Balancer 프로세스 대화 상자 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-definition.png)


#### 상태 확인
<a name="environments-cfg-nlb-console-process-healthchecks"></a>

다음 설정을 사용하여 프로세스 상태 확인을 구성합니다.
+ **간격(Interval)** – 개별 인스턴스의 상태 확인 간 간격(초 단위)입니다.
+ **정상 임계 값(Healthy threshold)** – Elastic Load Balancing이 인스턴스 상태를 바꾸기 전에 통과해야 하는 상태 확인 수입니다. (Network Load Balancer의 경우, **비정상 임계값**은 읽기 전용 설정으로서 정상 임계 값과 항상 동일합니다.)
+ **등록 취소 지연(Deregistration delay)** – 인스턴스 등록을 취소하기 전에 활성 요청이 완료될 때까지 기다려야 하는 시간(초)입니다.

![\[상태 확인에 대한 Network Load Balancer 프로세스 대화 상자 설정\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-healthcheck.png)


**참고**  
Elastic Load Balancing 상태 확인은 환경 Auto Scaling 그룹의 상태 확인 동작에는 영향을 주지 않습니다. Elastic Load Balancing 상태 확인에 실패한 인스턴스는 자동 대체하도록 Amazon EC2 Auto Scaling을 수동으로 구성하지 않는 한 Amazon EC2 Auto Scaling으로 자동 대체되지 않습니다. 세부 정보는 [Elastic Beanstalk 환경에 대한 Auto Scaling 상태 확인 설정](environmentconfig-autoscaling-healthchecktype.md) 섹션을 참조하세요.

전반적인 환경 상태에 영향을 미치는 정도와 상태 확인에 대한 자세한 내용은 [기본 상태 보고](using-features.healthstatus.md) 단원을 참조하세요.

## 예제: 엔드 투 엔드 암호화 환경에 대한 Network Load Balancer
<a name="environments-cfg-nlb-console-example"></a>

이 예제에서는 애플리케이션에 엔드 투 엔드 트래픽 암호화가 필요합니다. 이러한 요구 조건에 부합하도록 사용자 환경의 Network Load Balancer를 구성하려면 포트 443을 수신 대기하도록 기본 프로세스를 구성하고, 기본 프로세스에 트래픽을 라우팅하는 포트 443에 리스너를 추가하며, 기본 리스너를 비활성화합니다.

**이 예제용 로드 밸런서를 구성하려면**

1. *기본 프로세스를 구성합니다.* 기본 프로세스를 선택한 다음 **작업**에서 **편집**을 선택합니다. **Process port(프로세스 포트)**에서 `443`을 입력합니다.  
![\[Network Load Balancer 구성 예제 - 프로세스 포트 443 사용을 위한 기본 프로세스 구성\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-process-443.png)

1. *포트 443 리스너를 추가합니다.* 새로운 리스너를 추가합니다. **리스너 포트**에 `443`을 입력합니다. **Process port(프로세스 포트)**의 경우 `443`의 선택 여부를 확인합니다.  
![\[Network Load Balancer 구성 예제 - 포트 443 리스너 추가\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listener-443.png)

   이제 목록에서 추가 리스너를 볼 수 있습니다.  
![\[Network Load Balancer 구성 예제 - 2개의 리스너를 포함하는 리스너 목록\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners.png)

1. *기본 포트 80 리스너를 비활성화합니다.* 기본 리스너의 경우 **활성** 옵션을 끕니다.  
![\[Network Load Balancer 구성 예제 - 기본 리스너 비활성화\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners-disabled.png)

## EB CLI를 사용하여 Network Load Balancer 구성
<a name="environments-cfg-nlb-ebcli"></a>

[**eb create**](eb3-create.md)를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다.

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1): 3
```

또한 `--elb-type` 옵션으로 로드 밸런서 유형을 지정할 수 있습니다.

```
$ eb create test-env --elb-type network
```

## Network Load Balancer 네임스페이스
<a name="environments-cfg-nlb-namespaces"></a>

다음 네임스페이스에서 Network Load Balancer와 관련된 설정을 찾을 수 있습니다.
+ `aws:elasticbeanstalk:environment` – 환경을 위한 로드 밸런서를 선택합니다. Network Load Balancer의 값은 `network`입니다.
+ `aws:elbv2:listener` – Network Load Balancer에서 리스너를 구성합니다. 이러한 설정은 Classic Load Balancer에 대한 `aws:elb:listener`의 설정에 매핑됩니다.
+ `aws:elasticbeanstalk:environment:process` – 상태 확인을 구성하고 환경의 인스턴스에서 실행되는 프로세스의 포트 및 프로토콜을 지정합니다. 이 포트 및 프로토콜 설정은 Classic Load Balancer의 리스너에 대한 `aws:elb:listener`의 인스턴스 포트 및 인스턴스 프로토콜 설정에 매핑됩니다. 상태 확인 설정은 `aws:elb:healthcheck` 및 `aws:elasticbeanstalk:application` 네임스페이스의 설정에 매핑됩니다.

**Example .ebextensions/network-load-balancer.config**  
Network Load Balancer를 시작하려면 [구성 파일](ebextensions.md)을 사용하여 로드 밸런서 유형을 `network`로 설정합니다.  

```
option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: network
```

**참고**  
환경을 생성하는 동안에만 로드 밸런서 유형을 설정할 수 있습니다.

**Example .ebextensions/nlb-default-process.config**  
다음 구성 파일은 기본 프로세스의 상태 확인 설정을 수정합니다.  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '10'
    HealthyThresholdCount: '5'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: TCP
```

**Example .ebextensions/nlb-secure-listener.config**  
다음 구성 파일은 포트 443에서의 보안 트래픽을 위한 리스너와 포트 443에서 수신하는 대상 프로세스를 추가합니다.  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
```
Application Load Balancers에는 특정 경로로 전송되는 트래픽을 위한 동일한 포트에 기본이 아닌 리스너가 있을 수 있기 때문에 `DefaultProcess` 옵션이라는 이름이 지정되었습니다. 자세한 내용은 [Application Load Balancer](environments-cfg-alb.md) 단원을 참조하세요. Network Load Balancer의 경우 이 옵션은 이 리스너의 대상 프로세스만 지원합니다.  
이 예제에서는 프로세스가 보안(HTTPS) 트래픽을 수신하기 때문에 프로세스 이름을 `https`로 지정했습니다. Network Load Balancer는 TCP로만 작동하기 때문에 이 리스너는 TCP 프로토콜을 사용하여 트래픽을 대상 포트의 프로세스로 전송합니다. HTTP와 HTTPS 네트워크 트래픽은 TCP 최상위에서 구현되기 때문에 이렇게 해도 됩니다.

# 듀얼 스택 Elastic Beanstalk 로드 밸런서 구성
<a name="environments-cfg-elbv2-ipv6-dualstack"></a>

듀얼 스택으로 구성된 로드 밸런서를 사용하여 IPv4 및 IPv6 프로토콜을 모두 제공하도록 Elastic Beanstalk 환경을 활성화할 수 있습니다. 로드 밸런싱된 환경을 생성할 때 인프라는 기본적으로 IPv4로 설정됩니다. 듀얼 스택 구성을 사용하여 새 환경을 생성하거나 기존의 IPv4 전용 환경을 듀얼 스택으로 업데이트할 수 있습니다.

환경의 로드 밸런서가 IPv6 및 IPv4 네트워크 트래픽을 모두 처리하도록 하려면 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 네임스페이스에서 `IpAddressType` 옵션을 *듀얼 스택*으로 설정하세요.

**참고**  
Elastic Beanstalk은 Application Load Balancer와 네트워크 로드 밸런서에 대해서만 듀얼 스택 프로토콜을 지원합니다. Classic Load Balancer를 사용하거나 단일 인스턴스 환경인 경우, 듀얼 스택은 지원되지 않습니다.

## Amazon VPC 사전 조건
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs"></a>

Elastic Beanstalk 환경에서 로드 밸런서를 구성하기 전에, 먼저 다음과 같이 Amazon VPC에서 일부 구성을 완료해야 합니다.

1. IPv6 CIDR 블록을 사용자 환경의 VPC와 연결

1. VPC의 모든 서브넷에 IPv6 CIDR 블록을 연결하세요.

1. (선택 사항) 환경이 VPC 외부의 구성 요소와 네트워크 트래픽을 주고받는 경우, VPC가 통신할 수 있는 네트워크를 지정하는 라우팅 테이블이 필요합니다. 이 경우, IPv6 트래픽을 활성화하려면 VPC 라우팅 테이블을 업데이트해야 합니다.

이러한 사전 조건은 Amazon VPC 콘솔 또는 AWS CLI 명령어를 사용하여 완료할 수 있습니다. 다음 주제에서는 자세한 내용을 안내하고 *Amazon VPC 사용 설명서* 및 *AWS CLI 명령 참조*로 안내합니다.

**참고**  
VPC 구성을 완료한 후 로드 밸런서에 듀얼 스택을 구성하기 전에 변경 사항이 전파될 때까지 몇 분 정도 기다려 주세요. 듀얼 스택 설정 중에 VPC 또는 서브넷 구성 오류가 발생하면 VPC 구성이 전파될 때까지 몇 분 정도 기다렸다가 듀얼 스택 구성을 다시 시도하세요.

### 콘솔을 사용하여 VPC 사전 구성 완료
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.console"></a>

*Amazon VPC 사용 설명서*에서는 이러한 사전 필수 작업을 완료하기 위한 자세한 단계를 제공합니다.

1. *Amazon VPC 사용 설명서*의 [1단계: VPC 및 서브넷에 IPv6 CIDR 블록 연결](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-cidr)을 참조하세요.

   이 단계에서는 완료해야 하는 두 가지 절차를 제공합니다.
   + IPv6 CIDR 블록을 VPC와 연결
   + IPv6 CIDR 블록을 VPC 서브넷과 연결

1. (선택 사항) 환경이 VPC 외부의 구성 요소와 네트워크 트래픽을 주고받는 경우, VPC가 통신할 수 있는 네트워크를 지정하는 라우팅 테이블이 필요합니다. 이 경우, IPv6 트래픽을 활성화하려면 VPC 라우팅 테이블을 업데이트해야 합니다. 이 구성을 완료하려면 *Amazon VPC 사용 설명서*의 [2단계: 라우팅 테이블 업데이트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-routes)를 참조하세요.

### 를 사용하여 VPC 사전 조건 완료 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.cli"></a>

 AWS CLI 를 사용하여 사전 조건 구성을 완료하고 확인할 수 있습니다.

1. IPv6 CIDR 블록을 사용자 환경의 VPC와 연결

   1. [associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html) 명령을 사용하여 CIDR 블록을 VPC에 연결합니다.

   1. [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 명령을 사용하여 VPC 구성을 확인하세요.

   

     
**Example   명령**  

   ```
   # Associate an Amazon-provided IPv6 CIDR block with your VPC
   aws ec2 associate-vpc-cidr-block \
       --vpc-id vpc-12345678 \
       --region us-east-1  \
       --amazon-provided-ipv6-cidr-block
   
   # Verify the IPv6 CIDR block association
   aws ec2 describe-vpcs \
       --vpc-ids vpc-12345678 \
       --region us-east-1  \
       --query 'Vpcs[0].Ipv6CidrBlockAssociationSet'
   ```

1. VPC의 모든 서브넷에 IPv6 CIDR 블록을 연결하세요.

   1. [associate-subnet-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-subnet-cidr-block.html) 명령을 사용하여 CIDR 블록을 VPC에 연결합니다.

   1. [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 명령을 사용하여 서브넷 구성을 확인합니다.

   

     
**Example   명령**  

   ```
   # List all subnets in your VPC
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,AvailabilityZone:AvailabilityZone}'
   
   # Associate IPv6 CIDR block with each subnet
   aws ec2 associate-subnet-cidr-block \
       --subnet-id subnet-12345678 \
       --region us-east-1  \
       --ipv6-cidr-block 2001:db8::/64
   
   # Verify IPv6 CIDR block association for all subnets
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}'
   ```

1.  (선택 사항) 환경이 VPC 외부의 구성 요소와 네트워크 트래픽을 주고받는 경우, VPC가 통신할 수 있는 네트워크를 지정하는 라우팅 테이블이 필요합니다. 이 경우, IPv6 트래픽을 활성화하려면 VPC 라우팅 테이블을 업데이트해야 합니다.

   1. [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 명령을 사용하여 VPC 내 라우팅 테이블에 경로를 추가합니다.

   1. [describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html) 명령을 사용하여 라우팅 테이블을 확인합니다.

   

     
**Example   명령**  

   ```
   # Add IPv6 route to Internet Gateway for public subnets
   aws ec2 create-route \
       --route-table-id rtb-12345678 \
       --destination-ipv6-cidr-block ::/0 \
       --gateway-id igw-12345678  \
       --region us-east-1
   
   # Add IPv6 route to NAT Gateway for private subnets (if applicable)
   aws ec2 create-route \
       --route-table-id rtb-87654321 \
       --destination-ipv6-cidr-block ::/0 \
       --nat-gateway-id nat-12345678 \
       --region us-east-1
   
   # Verify routes
   aws ec2 describe-route-tables \
       --route-table-ids rtb-12345678 \
       --region us-east-1 \
       --query 'RouteTables[0].Routes'
   ```

## 듀얼 스택 Elastic Beanstalk 로드 밸런서 구성
<a name="environments-cfg-elbv2-ipv6-dualstack.enable"></a>

환경에 VPC 사전 조건 구성을 설정한 후 IPv4 및 IPv6 프로토콜을 모두 제공할 수 있도록 듀얼 스택 옵션으로 로드 밸런서를 구성할 수 있습니다. Elastic Beanstalk 콘솔, AWS CLI,의 구성 파일 `.ebextensions`및 AWS SDK를 사용하여 듀얼 스택 트래픽을 제공하도록 로드 밸런서를 구성할 수 있습니다.

### 콘솔 사용
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.console"></a>

Elastic Beanstalk 콘솔을 사용하여 환경의 로드 밸런서에 대해 듀얼 스택 구성을 설정할 수 있습니다.

**참고**  
이 구성은 여러 시점의 데이터 전파 시기에 따라 달라집니다. 로드 밸런서를 구성하고 변경 사항을 테스트할 때 다음 타이밍 요구 사항을 고려하세요.  
*VPC 구성 시간.* [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs)에 설명된 VPC 구성을 완료한 후 변경 사항이 전파될 때까지 몇 분 기다린 후 다음 절차를 따릅니다. 듀얼 스택 설정 중에 VPC 또는 서브넷 구성 오류가 발생하면 몇 분 정도 기다렸다가 구성 단계를 다시 시도하세요.  
*DNS 전파 시간입니다.* `IpAddressType` 옵션을 *듀얼 스택*으로 설정한 후 변경 사항이 전파될 때까지 몇 분 기다렸다가 테스트합니다. Route 53 DNS 전파는 1\$12분 정도 소요될 수 있습니다. 이 과정 중 IPv6 프로토콜을 사용해 클라이언트에서 애플리케이션으로의 통신을 테스트하면 일시적인 문제가 발생할 수 있습니다.

**신규 환경 생성: 듀얼 스택 지원에 로드 밸런서를 구성하는 방법**

1. Elastic Beanstalk 콘솔을 실행하고 새 환경 생성을 위한 단계를 시작하세요. **서비스 액세스 구성** 페이지에서 **서비스 역할** 및 **EC2 인스턴스 프로파일** 필수 항목을 설정한 후, 이 절차의 다음 단계로 진행하여 로드 밸런서를 듀얼 스택 구성으로 설정하세요. 시작하는 데 필요한 자세한 내용은 [Elastic Beanstalk 환경 생성](using-features.environments.md) 섹션을 참조하세요.

1. **서비스 액세스 구성** 단계에서 **다음**을 선택하세요.

1. **네트워킹, 데이터베이스 및 태그 설정** 페이지가 표시됩니다.

   이전 섹션에서 설명한 [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs) 항목을 완료한 경우, 필요한 VPC와 서브넷을 이미 설정한 것입니다. 이 경우 이 단계를 하위 단계와 함께 건너뛰고 계속 진행하여 VPC를 선택합니다.

   1. VPC 및 서브넷을 구성하려면 **VPC 생성** 선택하여 VPC 콘솔로 이동할 수 있습니다. [콘솔을 사용하여 VPC 사전 구성 완료](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 섹션의 단계를 따르세요.

   1.  VPC 업데이트가 전파되기까지 몇 분 정도 소요될 수 있으니 기다린 후, Elastic Beanstalk 콘솔로 돌아가 새로 고침을 선택하고 다음 단계로 계속 진행하세요.

       나머지 단계에서 VPC 또는 서브넷 구성 오류가 발생하면 VPC 구성이 전파될 때까지 몇 분 정도 기다렸다가 단계를 다시 시도하세요.

1. **네트워킹, 데이터베이스 및 태그 설정** 페이지에서 IPv6 CIDR 블록이 연결된 **VPC**를 VPC 드롭다운에서 선택하세요.

   VPC를 선택하면 **인스턴스 서브넷**이 VPC 서브넷으로 채워집니다.

1. **인스턴스 서브넷**을 하나 이상 선택한 후 **다음**을 선택합니다.

1. **인스턴스 트래픽 및 규모 조정 구성** 페이지가 표시됩니다.

   **로드 밸런서 네트워크 설정**에서 **Dualstack (IPv4 & IPv6)** 항목을 **활성화**로 선택하세요.

1. **로드 밸런서 유형**을 선택합니다. **Application Load Balancer**와 **Network Load Balancer** 모두 *dualstack*을 지원합니다.

1. 현재 콘솔 페이지에서 로드 밸런서의 다른 옵션도 계속 구성할 수 있습니다. 로드 밸런서 옵션 및 구성에 대한 자세한 내용은 이 장의 다른 주제를 참조하세요.

1. 단계를 계속 진행하여 환경의 구성 및 생성을 완료합니다. 자세한 내용은 [Elastic Beanstalk 환경 생성](using-features.environments.md) 단원을 참조하십시오.



**기존 환경: 듀얼 스택 지원에 로드 밸런서를 구성하는 방법**

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

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

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

1. **네트워크 및 데이터베이스** 구성 범주에서 **편집**을 선택합니다.

1. 이전 섹션에서 설명한 [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs) 항목을 완료한 경우, 필요한 VPC와 서브넷을 이미 설정한 것입니다. 이 경우 이 단계를 하위 단계와 함께 건너뛰고 계속 진행하여 VPC를 선택합니다.

   1. VPC 및 서브넷을 구성하려면 **VPC 생성** 선택하여 VPC 콘솔로 이동할 수 있습니다. [콘솔을 사용하여 VPC 사전 구성 완료](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 섹션의 단계를 따르세요.

   1.  VPC 업데이트가 전파되기까지 몇 분 정도 소요될 수 있으니 기다린 후, Elastic Beanstalk 콘솔로 돌아가 새로 고침을 선택하고 다음 단계로 계속 진행하세요.

       나머지 단계에서 VPC 또는 서브넷 구성 오류가 발생하면 VPC 구성이 전파될 때까지 몇 분 정도 기다렸다가 단계를 다시 시도하세요.

1. **네트워크 및 데이터베이스** 페이지에서 IPv6 CIDR 블록이 연결된 값을 **VPC** 드롭다운에서 선택하세요.

   VPC를 선택하면 **인스턴스 서브넷**이 VPC 서브넷으로 채워집니다.

1. 하나 이상의 **인스턴스 서브넷**을 선택하세요.

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

1. **인스턴스 트래픽 및 스케일링(Instance traffic and scaling)** 구성 범주에서 **편집(Edit)**을 선택합니다.

1. **로드 밸런서 네트워크 설정**에서 **Dualstack (IPv4 & IPv6)** 항목을 **활성화**하도록 선택하세요.

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

### 사용 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.cli"></a>

 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 IPv6 및 IPv4 네트워크 트래픽을 모두 처리하도록 환경의 로드 밸런서를 구성할 수 있습니다. 이 섹션에서는 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 네임스페이스를 사용한 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 및 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 명령의 예제를 제공합니다.

**참고**  
이 구성은 여러 시점의 데이터 전파 시기에 따라 달라집니다. 로드 밸런서를 구성하고 변경 사항을 테스트할 때 다음 타이밍 요구 사항을 고려하세요.  
*VPC 구성 시간.* [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs)에 설명된 VPC 구성을 완료한 후 로드 밸런서에 듀얼 스택을 구성하기 위하여 이러한 명령을 실행하기 전에 변경 사항이 전파될 때까지 몇 분 정도 기다려 주세요. 듀얼 스택 설정 중에 VPC 또는 서브넷 구성 오류가 발생하면 몇 분 정도 기다렸다가 명령을 다시 시도하세요.  
*DNS 전파 시간입니다.* `IpAddressType` 옵션을 *듀얼 스택*으로 설정한 후 변경 사항이 전파될 때까지 몇 분 기다렸다가 테스트합니다. Route 53 DNS 전파는 1\$12분 정도 소요될 수 있습니다. 이 과정 중 IPv6 프로토콜을 사용해 클라이언트에서 애플리케이션으로의 통신을 테스트하면 일시적인 문제가 발생할 수 있습니다.

 

**Example 듀얼 스택 구성을 사용한 생성 환경(네임스페이스 옵션 인라인)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=dualstack
```



대안으로, 네임스페이스 옵션을 인라인으로 포함하는 대신 `options.json` 파일을 사용하여 해당 옵션을 지정하십시오. 다음 예제 명령은 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 명령을 설명합니다.

**Example 듀얼 스택 구성을 사용한 업데이트 환경(`options.json` 파일의 네임스페이스 옵션)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \ file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:elbv2:loadbalancer",
    "OptionName": "IpAddressType",
    "Value": "dualstack"
  }
]
```



다음 예제는 기존 환경을 업데이트하여 `IpAddressType` 옵션을 *IPv4*로 설정합니다.

**참고**  
이 예제 `update-environment` 명령은 환경 구성을 듀얼 스택에서 IPv4로 롤백해야 할 경우 유용합니다.

**Example IpAddressType을 IPv4로 설정하기 위한 update-environment**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=ipv4
```

### .ebextensions 구성 파일 사용
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.ebx"></a>

환경의 로드 밸런서가 IPv6 및 IPv4 네트워크 트래픽을 모두 처리할 수 있도록 하려면 Elastic Beanstalk [구성 파일](ebextensions.md)을 사용할 수 있습니다. [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 네임스페이스의 `IpAddressType` 옵션을 *dualstack*으로 설정하세요.

**참고**  
이 구성은 여러 시점의 데이터 전파 시기에 따라 달라집니다. 로드 밸런서를 구성하고 변경 사항을 테스트할 때 다음 타이밍 요구 사항을 고려하세요.  
*VPC 구성 시간.* [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs)에 설명된 VPC 구성을 완료한 후, `.ebextensions`구성을 적용하기 전에 몇 분간 VPC 변경 사항이 전파되도록 기다리세요. 이 구성 설정 중에 VPC 또는 서브넷 구성 오류가 발생하면 몇 분 정도 기다렸다가 다시 시도하세요.  
*DNS 전파 시간입니다.* `IpAddressType` 옵션을 *듀얼 스택*으로 설정한 후 변경 사항이 전파될 때까지 몇 분 기다렸다가 테스트합니다. Route 53 DNS 전파는 1\$12분 정도 소요될 수 있습니다. 이 과정 중 IPv6 프로토콜을 사용해 클라이언트에서 애플리케이션으로의 통신을 테스트하면 일시적인 문제가 발생할 수 있습니다.

**Example 로드 밸런서 듀얼 스택 구성을 위한 .ebextensions/options.config([간접 구문](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  aws:elbv2:loadbalancer:
    IpAddressType: dualstack
```

**Example 로드 밸런서 듀얼 스택 구성을 위한 .ebextensions/options.config([표준 구문](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  - namespace: aws:elbv2:loadbalancer
    option_name: IpAddressType
    value: dualstack
```

### AWS SDK 사용
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.sdk"></a>

[AWS SDK](https://docs.aws.amazon.com//code-library/)를 사용하여 듀얼 스택을 구성할 수 있습니다. 이전 섹션에서 언급한 `update-environment` 및 `create-environment` AWS CLI 명령과 마찬가지로 [CreateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_CreateEnvironment.html) 및 [UpdateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_UpdateEnvironment.html) API 작업을 사용할 수 있습니다. `OptionSettings` 요청 파라미터를 사용하여 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 네임스페이스의 옵션을 지정합니다.

**참고**  
이 구성은 여러 시점의 데이터 전파 시기에 따라 달라집니다. 로드 밸런서를 구성하고 변경 사항을 테스트할 때 다음 타이밍 요구 사항을 고려하세요.  
*VPC 구성 시간.* [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs)에 설명된 VPC 구성을 완료한 후 변경 사항이 전파될 때까지 몇 분 정도 기다린 후 프로그램을 실행하여 듀얼 스택용 로드 밸런서를 구성합니다. 듀얼 스택 설정 중에 VPC 또는 서브넷 구성 오류가 발생하면 몇 분 정도 기다렸다가 듀얼 스택 구성을 위한 프로그램을 다시 실행해 보십시오.  
*DNS 전파 시간입니다.* `IpAddressType` 옵션을 *듀얼 스택*으로 설정한 후 변경 사항이 전파될 때까지 몇 분 기다렸다가 테스트합니다. Route 53 DNS 전파는 1\$12분 정도 소요될 수 있습니다. 이 과정 중 IPv6 프로토콜을 사용해 클라이언트에서 애플리케이션으로의 통신을 테스트하면 일시적인 문제가 발생할 수 있습니다.

## 문제 해결
<a name="environments-cfg-elbv2-ipv6-dualstack.troubleshooting"></a>

**AI 지원 문제 해결을 위해 Amazon Q Developer CLI 사용**  
 Amazon Q Developer CLI를 사용하면 환경 문제를 신속하게 해결할 수 있습니다. Q CLI는 환경 상태를 확인하고, 이벤트를 검토하고, 로그를 분석하고, 명확한 질문을 하여 솔루션을 제공합니다. 자세한 내용과 자세한 안내는 AWS 블로그의 [Amazon Q Developer CLI를 사용한 Elastic Beanstalk 환경 문제 해결을 ](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/) 참조하세요.

이 섹션에서는 로드 밸런서 듀얼 스택 구성 관련 문제를 해결하기 위한 지침을 제공합니다.

**이벤트:** *VPC *vpc\$1id*에 IPv6 CIDR 블록이 구성되어 있지 않습니다. 듀얼 스택 로드 밸런서를 사용하려면 IPv6 CIDR 블록이 필요합니다. 듀얼 스택 모드를 사용하기 전에 VPC에 IPv6 CIDR 블록을 연결하세요.*

VPC와 모든 서브넷에는 IPv6 CIDR 블록이 연결되어 있어야 합니다. 이는 듀얼 스택 지원을 위해 로드 밸런서를 구성하기 전에 완료해야 하는 VPC 사전 조건 중 하나입니다. 이 작업을 완료하는 데 필요한 자세한 내용은 이 주제 전반부의 [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs) 섹션을 참조하세요.

 **이벤트:** *VPC *vpc\$1id*의 하나 이상의 서브넷에 IPv6 CIDR 블록이 구성되어 있지 않습니다. 듀얼 스택 로드 밸런서와 함께 사용할 서브넷에는 반드시 IPv6 CIDR 블록이 연결되어 있어야 합니다. 듀얼 스택 모드를 사용하기 전에 IPv6 CIDR 블록을 모든 필수 서브넷과 연결하세요.*

VPC의 모든 서브넷에는 IPv6 CIDR 블록이 연결되어 있어야 합니다. 이는 듀얼 스택 지원을 위해 로드 밸런서를 구성하기 전에 완료해야 하는 VPC 사전 조건 중 하나입니다. 이 작업을 완료하는 데 필요한 자세한 내용은 이 주제 전반부의 [Amazon VPC 사전 조건](#environments-cfg-elbv2-ipv6-dualstack.prereqs) 섹션을 참조하세요.

 **오류:** *이 `IpAddressType` 옵션은 Application Load Balancer 또는 Network Load Balancer로 구성된 Elastic Beanstalk 환경에서만 적용할 수 있습니다.*

이 메시지는 사용자의 Elastic Beanstalk 환경이 단일 인스턴스 환경이거나 Classic Load Balancer를 사용하고 있을 수 있음을 나타냅니다. Application Load Balancer 또는 Network Load Balancer로 구성된 환경에서만 `IpAddressType`를 구성할 수 있습니다.

# 액세스 로그 구성
<a name="environments-cfg-loadbalancer-accesslogs"></a>

[구성 파일](ebextensions.md)을 사용하여 액세스 로그를 Amazon S3 버킷에 업로드하도록 환경 로드 밸런서를 구성할 수 있습니다. 자세한 내용은 GitHub의 다음 예제 구성 파일을 참조하십시오.
+ `[loadbalancer-accesslogs-existingbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config)` – 액세스 로그를 기존의 Amazon S3 버킷에 업로드하도록 로드 밸런서를 구성합니다.
+ `[loadbalancer-accesslogs-newbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config)` – 액세스 로그를 새 버킷에 업로드하도록 로드 밸런서를 구성합니다.

# Elastic Beanstalk 환경에 데이터베이스 추가
<a name="using-features.managing.db"></a>

Elastic Beanstalk은 [Amazon Relational Database Service(Amazon RDS)](https://aws.amazon.com/rds/)와의 *연동형* 데이터베이스 통합 기능을 제공합니다. Elastic Beanstalk를 사용하여 기존 환경 또는 새 환경 생성 시 새 환경에 MySQL, PostgreSQL, Oracle 또는 SQL Server 데이터베이스를 추가할 수 있습니다. 환경에 연동된 데이터베이스 인스턴스를 추가하면 Elastic Beanstalk이 애플리케이션에 연결 정보를 제공합니다. 데이터베이스 호스트 이름, 포트, 사용자 이름, 암호 및 데이터베이스 이름의 환경 속성을 설정하여 수행합니다.

**결합된 데이터베이스 사용의 이점**  
이전에 애플리케이션에서 데이터베이스 인스턴스를 사용하지 않은 경우, 먼저 이 주제에 설명된 프로세스를 사용하여 Elastic Beanstalk 서비스를 사용해 테스트 환경에 데이터베이스를 하나 추가하는 것이 좋습니다. 이렇게 하면 Elastic Beanstalk 외부 데이터베이스에 필요한 추가 구성 작업 없이 애플리케이션이 환경 속성을 읽고 연결 문자열을 구성하며 데이터베이스 인스턴스에 연결할 수 있는지 확인할 수 있습니다.

**프로덕션으로 이동할 때 고려 사항**  
애플리케이션이 데이터베이스에서 올바르게 작동하는지 확인한 후 프로덕션 환경으로의 이동을 고려할 수 있습니다. 이 시점에 데이터베이스를 Elastic Beanstalk 환경에서 분리하여 유연성이 뛰어난 구성으로 이동할 수 있습니다. 분리된 데이터베이스는 외부 Amazon RDS 데이터베이스 인스턴스로 계속 작동할 수 있습니다. 환경의 상태는 데이터베이스를 분리해도 영향을 받지 않습니다. 환경을 종료해야 하는 경우 환경을 종료할 수 있으며 Elastic Beanstalk 외부에서 데이터베이스를 사용 가능하고 작동하도록 유지하는 옵션을 선택할 수도 있습니다.

**분리된 데이터베이스로 이동할 때의 이점**  
외부 데이터베이스를 사용하면 몇 가지 장점이 있습니다. 여러 환경에서 외부 데이터베이스에 연결하고, 통합 데이터베이스에서 지원되지 않는 데이터베이스 유형을 사용하고, 블루/그린 배포를 수행할 수 있습니다. Elastic Beanstalk가 생성한 분리된 데이터베이스를 사용하는 대신 Elastic Beanstalk 환경 외부에서 데이터베이스 인스턴스를 생성할 수도 있습니다. Elastic Beanstalk 환경 외부에 있는 데이터베이스 인스턴스를 사용할 경우 추가 보안 그룹과 연결 문자열 구성이 필요합니다. 자세한 내용은 [Amazon RDS와 함께 Elastic Beanstalk 사용](AWSHowTo.RDS.md)을(를) 참조하세요.

**Topics**
+ [

## 데이터베이스 수명 주기
](#environments-cfg-rds-lifecycle)
+ [

## 콘솔을 사용하여 환경에 Amazon RDS DB 인스턴스 추가
](#environments-cfg-rds-create)
+ [

## 데이터베이스에 연결
](#environments-cfg-rds-connect)
+ [

## 콘솔을 사용하여 통합 RDS DB 인스턴스 구성
](#using-features.managing.db.CON)
+ [

## 구성 파일을 사용하여 통합 RDS DB 인스턴스 구성
](#using-features.managing.db.namespace)
+ [

## 콘솔을 사용하여 RDS DB 인스턴스 분리
](#using-features.decoupling.db)
+ [

## 구성 파일을 사용하여 RDS DB 인스턴스 분리
](#using-features.decoupling-config-files.db)

## 데이터베이스 수명 주기
<a name="environments-cfg-rds-lifecycle"></a>

Elastic Beanstalk 환경에서 데이터베이스를 분리한 후 데이터베이스에서 수행할 작업을 선택할 수 있습니다. 선택할 수 있는 옵션을 총칭하여 *삭제 정책*이라고 합니다. 다음 삭제 정책은 [Elastic Beanstalk 환경에서 분리](#using-features.decoupling.db)하거나 Elastic Beanstalk 환경을 종료한 이후에 데이터베이스에 적용됩니다.
+ *스냅샷* - Elastic Beanstalk가 데이터베이스를 종료하기 전에 데이터베이스의 스냅샷을 저장합니다. Elastic Beanstalk 환경에 DB 인스턴스를 추가하거나 독립형 데이터베이스를 생성할 때 스냅샷에서 데이터베이스를 복원할 수 있습니다. 스냅샷에서 새 독립형 DB 인스턴스를 생성하는 방법에 대한 자세한 내용은 *Amazon RDS 사용 설명서*의 [DB 스냅샷에서 복원](https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html)을 참조하세요. 데이터베이스 스냅샷 저장에 대한 요금이 발생할 수 있습니다. 자세한 내용은 [Amazon RDS 요금](https://aws.amazon.com/rds/pricing/)의 *Backup 스토리지* 섹션을 참조하세요.
+ *삭제* - Elastic Beanstalk에서 데이터베이스를 종료합니다. 종료된 후에는 데이터베이스 인스턴스를 더 이상 작업에 사용할 수 없습니다.
+ *보관* - 데이터베이스 인스턴스가 종료되지 않았습니다. Elastic Beanstalk에서 분리되어 있지만 사용 가능하며 작동 상태를 유지합니다. 그런 다음 하나 이상의 환경을 구성하여 외부 Amazon RDS 데이터베이스 인스턴스로 데이터베이스에 연결하도록 할 수 있습니다. 자세한 내용은 [Amazon RDS와 함께 Elastic Beanstalk 사용](AWSHowTo.RDS.md)을(를) 참조하세요.

## 콘솔을 사용하여 환경에 Amazon RDS DB 인스턴스 추가
<a name="environments-cfg-rds-create"></a>

Elastic Beanstalk 콘솔을 사용하여 환경에 DB 인스턴스를 추가할 수 있습니다.

**환경에 DB 인스턴스를 추가하려면**

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

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

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

1. **데이터베이스** 구성 범주에서 **편집**을 선택합니다.

1. DB 엔진을 선택하고 사용자 이름과 암호를 입력합니다.

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

다음 옵션을 구성할 수 있습니다.
+ **스냅샷** - 기존 데이터베이스 스냅샷을 선택합니다. Elastic Beanstalk는 스냅샷을 복원하여 환경에 추가합니다. 기본값은 **없음**입니다. 기본값은 **없음**이며, 이 페이지의 다른 설정을 사용하여 새 데이터베이스를 구성할 수 있습니다.
+ **엔진(Engine)** - 데이터베이스 엔진을 선택합니다.
+ **엔진 버전(Engine version)** - 데이터베이스 엔진의 특정 버전을 선택합니다.
+ **인스턴스 클래스(Instance class)** - DB 인스턴스 클래스를 선택합니다. DB 인스턴스 클래스에 대한 자세한 내용은 [http://aws.amazon.com/rds/](https://aws.amazon.com/rds/)를 참조하세요.
+ **스토리지(Storage)** - 데이터베이스에 프로비저닝할 스토리지 양을 선택합니다. 나중에 할당된 스토리지를 늘릴 수 있으나 줄일 수는 없습니다. 스토리지 할당에 대한 자세한 내용은 [기능](https://aws.amazon.com/rds/#features) 단원을 참조하세요.
+ **사용자 이름** - 숫자와 문자만 조합하여 사용자 이름을 입력합니다.
+ **암호(Password)** - 8\$116자의 인쇄 가능한 ASCII 문자(`/`, `\` 및 `@` 제외)가 포함된 암호를 입력합니다.
+ **가용성(Availability)** - 고가용성을 위해 두 번째 가용 영역에서 웜 백업을 실행하려면 **높음(다중 AZ)**을 선택합니다.
+ **데이터베이스 삭제 정책** - 삭제 정책에 따라 사용자 환경에서 [분리](#using-features.decoupling.db)된 후 데이터베이스가 어떻게 되는지 결정됩니다. 이는 `Create Snapshot`, `Retain` 또는 `Delete` 값 중 하나로 설정할 수 있습니다. 이러한 값은 같은 주제의 [데이터베이스 수명 주기](#environments-cfg-rds-lifecycle)에 설명되어 있습니다.

**참고**  
제공한 사용자 이름과 암호를 사용하여 Elastic Beanstalk는 데이터베이스에 대한 마스터 사용자를 생성합니다. 마스터 사용자와 그 권한에 대해 자세히 알아보려면 [마스터 사용자 계정 권한](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html) 단원을 참조하세요.

DB 인스턴스를 추가하는 데 약 10분이 걸립니다. 업데이트가 완료되면 새 데이터베이스가 환경에 *결합*됩니다. 다음 환경 속성을 통해 애플리케이션에서 DB 인스턴스의 호스트 이름과 기타 연결 정보를 사용할 수 있습니다.


| 속성 이름 | 설명 | 속성 값 | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  DB 인스턴스의 호스트 이름입니다.  |  Amazon RDS 콘솔 **연결 및 보안** 탭의 **엔드포인트**입니다.  | 
|  `RDS_PORT`  |  DB 인스턴스가 연결을 허용하는 포트입니다. DB 엔진마다 기본값이 다릅니다.  |  Amazon RDS 콘솔 **연결 및 보안** 탭의 **포트**입니다.  | 
|  `RDS_DB_NAME`  |  데이터베이스 이름은 **ebdb**입니다.  |  Amazon RDS 콘솔 **구성** 탭의 **DB 이름**입니다.  | 
|  `RDS_USERNAME`  |  데이터베이스에 구성된 사용자 이름입니다.  |  Amazon RDS 콘솔 **구성** 탭의 **마스터 사용자 이름**입니다.  | 
|  `RDS_PASSWORD`  |  데이터베이스에 구성된 암호입니다.  |  Amazon RDS 콘솔에서 참조용 정보를 사용할 수 없습니다.  | 

## 데이터베이스에 연결
<a name="environments-cfg-rds-connect"></a>

연결 정보를 사용하여 환경 변수를 통해 애플리케이션 내에서 데이터베이스에 연결합니다. 애플리케이션에서 Amazon RDS를 사용하는 방법에 대한 자세한 내용은 다음 주제를 참조하십시오.
+ Java SE – [데이터베이스에 연결(Java SE 플랫폼)](java-rds.md#java-rds-javase)
+ Java with Tomcat – [데이터베이스에 연결(Tomcat 플랫폼)](java-rds.md#java-rds-tomcat)
+ Node.js – [데이터베이스로 연결](create-deploy-nodejs.rds.md#nodejs-rds-connect)
+ .NET – [데이터베이스에 연결](create_deploy_NET.rds.md#dotnet-rds-connect)
+ PHP – [PDO 또는 MySQLi를 사용하여 데이터베이스에 연결](create_deploy_PHP.rds.md#php-rds-connect)
+ Python – [데이터베이스로 연결](create-deploy-python-rds.md#python-rds-connect)
+ Ruby – [데이터베이스로 연결](create_deploy_Ruby.rds.md#ruby-rds-connect)

## 콘솔을 사용하여 통합 RDS DB 인스턴스 구성
<a name="using-features.managing.db.CON"></a>

[Elastic Beanstalk 콘솔](environments-console.md)에 있는 환경의 **구성** 페이지의 데이터베이스(Database) 섹션에서 **데이터터베이스** 인스턴스의 구성 설정을 보고 수정할 수 있습니다.

**Elastic Beanstalk 콘솔에서 환경의 DB 인스턴스를 구성하려면**

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

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

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

1. **데이터베이스** 구성 범주에서 **편집**을 선택합니다.

데이터베이스를 생성한 후 **인스턴스 클래스**, ****스토리지**, 암호**, **가용성** 및 **데이터베이스 삭제 정책** 설정을 수정할 수 있습니다. 인스턴스 클래스를 변경하면 Elastic Beanstalk에서 DB 인스턴스를 다시 프로비저닝합니다.

데이터베이스를 환경에 연결하는 데 Elastic Beanstalk가 더 이상 필요하지 않은 경우 **데이터베이스 분리**를 선택하여 데이터베이스를 분리하도록 선택할 수 있습니다. 이 작업과 관련된 옵션 및 고려 사항을 이해하는 것이 중요합니다. 자세한 내용은 [콘솔을 사용하여 RDS DB 인스턴스 분리](#using-features.decoupling.db) 단원을 참조하십시오.

**경고**  
Elastic Beanstalk의 기능 범위를 넘어서서 연결된 데이이터페이스 인스턴스 설정을 수정하지 마세요(예: Amazon RDS 콘솔에서 수정). 수정할 경우 Amazon RDS DB 구성이 해당 환경 정의와 동기화되지 않을 수 있습니다. 환경을 업데이트하거나 다시 시작하면 환경에 지정된 설정이 Elastic Beanstalk 외부에서 이루어진 모든 설정을 덮어씁니다.  
Elastic Beanstalk에서 직접 지원하지 않는 설정을 수정해야 하는 경우 Elastic Beanstalk [구성 파일](#using-features.managing.db.namespace)을 사용합니다.

## 구성 파일을 사용하여 통합 RDS DB 인스턴스 구성
<a name="using-features.managing.db.namespace"></a>

[구성 파일](ebextensions.md)을 사용하여 환경의 데이터베이스 인스턴스를 구성할 수 있습니다. [`aws:rds:dbinstance`](command-options-general.md#command-options-general-rdsdbinstance) 네임스페이스의 옵션을 사용하십시오. 다음 예제는 할당된 데이터베이스 스토리지 크기를 100GB를 수정합니다.

**Example .ebextensions/db-instance-options.config**  

```
option_settings:
  aws:rds:dbinstance:
    DBAllocatedStorage: 100
```

Elastic Beanstalk가 지원하지 않는 DB 인스턴스 속성을 구성하려는 경우 구성 파일을 사용할 수 있으며 `resources` 키를 사용하여 설정을 지정할 수 있습니다. 다음 예제는 값을 `StorageType` 및 `Iops` Amazon RDS 속성으로 설정합니다.

**Example .ebextensions/db-instance-properties.config**  

```
Resources:
  AWSEBRDSDatabase:
    Type: AWS::RDS::DBInstance
    Properties:
      StorageType:io1
      Iops: 1000
```

## 콘솔을 사용하여 RDS DB 인스턴스 분리
<a name="using-features.decoupling.db"></a>

환경의 상태에 영향을 주지 않고 Elastic Beanstalk 환경에서 데이터베이스를 분리할 수 있습니다. 데이터베이스를 분리하기 전에 다음 요구 사항을 고려하세요.
+ *데이터베이스가 분리된 후 데이터베이스는 어떻게 될까요?*

  데이터베이스의 스냅샷을 생성한 다음 종료하거나, 데이터베이스를 Elastic Beanstalk 외부의 독립 실행형 데이터베이스로 유지하거나, 데이터베이스를 영구적으로 삭제하도록 선택할 수 있습니다. **데이터베이스 삭제 정책** 설정에 따라 이 결과가 결정됩니다. 삭제 정책에 대한 자세한 설명은 같은 주제의 [데이터베이스 수명 주기](#environments-cfg-rds-lifecycle)을(를) 참조하세요.
+ *분리하기 전에 데이터베이스 구성 설정을 변경해야 하나요?*

  데이터베이스에 구성을 변경해야 하는 경우, 데이터베이스를 *분리*하기 전에 구성을 적용해야 합니다. 여기에는 **데이터베이스 삭제 정책**에 대한 변경 사항이 포함됩니다. **데이터베이스 분리** 설정과 동시에 제출되는 보류 중인 모든 변경 사항은 무시되며, 분리 설정만 적용됩니다.

  

**환경에서 DB 인스턴스 분리하기**

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

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

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

1. **데이터베이스** 구성 범주에서 **편집**을 선택합니다.

1. **데이터베이스 설정** 섹션의 모든 구성 값을 검토합니다. 특히 데이터베이스가 분리된 후 데이터베이스에 어떤 일이 발생하는지 결정하는 **데이터베이스 삭제 정책**을 검토합니다.

     
![\[Database settings form with engine, instance, storage, and deletion policy options.\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-rds-options-w-db-deletion-policies.png)

   

   다른 구성 설정이 모두 올바르면 **6단계**로 건너뛰어 데이터베이스를 분리합니다.
**주의**  
**데이터베이스 삭제 정책** 설정을 **데이터베이스 분리**와 *별도로* *적용*해야 합니다. **데이터베이스 분리** 및 새로 선택한 **데이터베이스 삭제 정책** 모두를 저장할 의도로 **적용**을 선택한 경우, 선택한 새 삭제 정책이 무시됩니다. Elastic Beanstalk는 우선 순위로 설정된 삭제 정책에 따라 데이터베이스를 분리합니다. 우선 순위로 설정된 삭제 정책이 `Delete` 또는 `Create Snapshot`인 경우 예정된 보류 중인 정책을 따르는 대신 데이터베이스가 손실될 위험이 있습니다.

   업데이트가 필요한 구성이 있는 경우 다음을 수행합니다.

   1. **데이터베이스 설정** 패널에서 필요한 수정 작업을 수행합니다.

   1. **적용**을 선택합니다. 데이터베이스의 구성 변경 사항을 저장하는 데 몇 분 정도 걸립니다.

   1. **3단계**로 돌아가서 탐색 창에서 **구성**을 선택합니다.

1. 창의 **데이터베이스 연결** 섹션으로 이동합니다.

     
![\[Database connection options showing "Couple database" selected and "Decouple database" unselected.\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/aeb-rds-couple-decouple-db.png)

   

1. **데이터베이스 분리**를 선택합니다.

1. **적용**을 선택하여 데이터베이스 분리 작업을 시작합니다.

삭제 정책 설정은 데이터베이스의 결과와 데이터베이스를 분리하는 데 필요한 시간을 결정합니다.
+ 삭제 정책이 `Delete`(으)로 설정된 경우 데이터베이스가 삭제됩니다. 데이터베이스 크기에 따라 작업이 약 10\$120분이 소요될 수 있습니다.
+ 삭제 정책이 `Snapshot`(으)로 설정된 경우 데이터베이스의 스냅샷이 생성됩니다. 그런 다음 데이터베이스가 삭제됩니다. 이 프로세스에 필요한 시간은 데이터베이스 크기에 따라 다릅니다.
+ 삭제 정책이 `Retain`(으)로 설정된 경우 Elastic Beanstalk 환경 외부에서 데이터베이스가 계속 작동합니다. 일반적으로 데이터베이스를 분리하는 데 5분 미만이 걸립니다.

 Elastic Beanstalk 환경 외부에 데이터베이스를 유지하기로 결정한 경우 이를 구성하기 위해 추가 단계를 수행해야 합니다. 자세한 내용은 [Amazon RDS와 함께 Elastic Beanstalk 사용](AWSHowTo.RDS.md)을(를) 참조하세요. 프로덕션 환경에 대해 분리된 데이터베이스를 사용하려는 경우 데이터베이스에서 사용하는 스토리지 유형이 워크로드에 적합한지 확인합니다. 자세한 내용은 *Amazon RDS 사용 설명서*의 [DB 인스턴스 스토리지](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 및 [DB 인스턴스 수정](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html)을 참조하세요.

## 구성 파일을 사용하여 RDS DB 인스턴스 분리
<a name="using-features.decoupling-config-files.db"></a>

환경의 상태에 영향을 주지 않고 DB 인스턴스를 Elastic Beanstalk 환경에서 분리할 수 있습니다. 데이터베이스 인스턴스는 데이터베이스가 분리될 때 적용된 *데이터베이스 삭제 정책*을 따릅니다.

데이터베이스를 분리하는 데 필요한 두 옵션 모두 [aws:rds:dbinstance](command-options-general.md#command-options-general-rdsdbinstance) 네임스페이스 내에 있습니다. 그 속성이란 다음과 같습니다.
+ `DBDeletionPolicy` 옵션은 삭제 정책을 설정합니다. 이는 `Snapshot`, `Delete` 또는 `Retain` 값 중 하나로 설정할 수 있습니다. 이러한 값은 같은 주제의 [데이터베이스 수명 주기](#environments-cfg-rds-lifecycle)에 설명되어 있습니다.
+ `HasCoupledDatabase` 옵션은 환경에 연결된 데이터베이스가 있는지 여부를 결정합니다.
  + `true`(으)로 토글된 경우, Elastic Beanstalk는 사용자 환경에 연결된 새 DB 인스턴스를 생성합니다.
  + `false`(으)로 토글된 경우, Elastic Beanstalk가 DB 인스턴스를 사용자 환경에서 분리하기 시작합니다.

분리하기 전에 데이터베이스 구성을 변경하려는 경우 먼저 구성 변경 사항을 별도의 작업에 적용합니다. 여기에는 `DBDeletionPolicy` 구성 변경이 포함됩니다. 변경 사항을 적용한 후 별도의 명령을 실행하여 분리 옵션을 설정합니다. 다른 구성 설정과 분리 설정을 동시에 제출하면 분리 설정이 적용되는 동안 다른 구성 옵션 설정은 무시됩니다.

**주의**  
`DBDeletionPolicy` 및 `HasCoupledDatabase` 설정을 두 개의 개별 작업으로 적용하려면 명령을 실행해야 합니다. 활성 삭제 정책이 이미 `Delete` 또는 `Snapshot`(으)로 설정된 경우 데이터베이스가 손실될 위험이 있습니다. 데이터베이스는 사용자가 의도한 보류 중인 삭제 정책이 아니라 현재 활성 상태인 삭제 정책을 따릅니다.

**환경에서 DB 인스턴스 분리하기**

Elastic Beanstalk 환경에서 데이터베이스를 분리하려면 다음 단계를 수행합니다. EB CLI 또는를 사용하여 단계를 AWS CLI 완료할 수 있습니다. 자세한 내용은 [구성 파일로 고급 환경 사용자 지정](ebextensions.md)을 참조하세요.

1. 삭제 정책을 변경하려는 경우 다음 형식으로 구성 파일을 설정합니다. 이 예에서는 삭제 정책이 유지되도록 설정되어 있습니다.  
**Example**  

   ```
   option_settings:
     aws:rds:dbinstance:
       DBDeletionPolicy: Retain
   ```

1. 원하는 도구를 사용하여 명령을 실행하여 구성 업데이트를 완료합니다.

1. 설정할 구성 파일을 `HasCoupledDatabase`에서 `false`(으)로 설정합니다.  
**Example**  

   ```
   option_settings:
     aws:rds:dbinstance:
       HasCoupledDatabase: false
   ```

1. 원하는 도구를 사용하여 명령을 실행하여 구성 업데이트를 완료합니다.

삭제 정책 설정은 데이터베이스의 결과와 데이터베이스를 분리하는 데 필요한 시간을 결정합니다.
+ 삭제 정책이 `Delete`(으)로 설정된 경우 데이터베이스가 삭제됩니다. 데이터베이스 크기에 따라 작업이 약 10\$120분이 소요될 수 있습니다.
+ 삭제 정책이 `Snapshot`(으)로 설정된 경우 데이터베이스의 스냅샷이 생성됩니다. 그런 다음 데이터베이스가 삭제됩니다. 이 프로세스에 필요한 시간은 데이터베이스 크기에 따라 다릅니다.
+ 삭제 정책이 `Retain`(으)로 설정된 경우 Elastic Beanstalk 환경 외부에서 데이터베이스가 계속 작동합니다. 일반적으로 데이터베이스를 분리하는 데 5분 미만이 걸립니다.

 Elastic Beanstalk 환경 외부에 데이터베이스를 유지하기로 결정한 경우 이를 구성하기 위해 추가 단계를 수행해야 합니다. 자세한 내용은 [Amazon RDS와 함께 Elastic Beanstalk 사용](AWSHowTo.RDS.md)을(를) 참조하세요. 프로덕션 환경에 대해 분리된 데이터베이스를 사용하려는 경우 데이터베이스에서 사용하는 스토리지 유형이 워크로드에 적합한지 확인합니다. 자세한 내용은 *Amazon RDS 사용 설명서*의 [DB 인스턴스 스토리지](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 및 [DB 인스턴스 수정](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html)을 참조하세요.

# AWS Elastic Beanstalk 환경 보안
<a name="using-features.managing.security"></a>

Elastic Beanstalk는 환경과 환경 내 Amazon EC2 인스턴스의 서비스 액세스(보안)를 제어하는 몇 가지 옵션을 제공합니다. 이 주제에서는 이러한 옵션의 구성을 설명합니다.

**Topics**
+ [

## 환경 보안 구성
](#using-features.managing.security.console)
+ [

## 환경 보안 구성 네임스페이스
](#using-features.managing.security.namespaces)

## 환경 보안 구성
<a name="using-features.managing.security.console"></a>

Elastic Beanstalk 콘솔에서 Elastic Beanstalk 환경 보안 구성을 수정할 수 있습니다.

**Elastic Beanstalk 콘솔에서 환경 서비스 액세스(보안)를 구성하려면**

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

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

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

1. **서비스 액세스(Service access)** 구성 범주에서 **편집(Edit)**을 선택합니다.

다음 설정이 사용 가능합니다.

**Topics**
+ [

### 서비스 역할
](#using-features.managing.security.servicerole)
+ [

### EC2 키 페어
](#using-features.managing.security.keypair)
+ [

### IAM 인스턴스 프로파일
](#using-features.managing.security.profile)

![\[Elastic Beanstalk 보안 서비스 액세스 구성 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/configuration-configure-service-access.png)


### 서비스 역할
<a name="using-features.managing.security.servicerole"></a>

Elastic Beanstalk 환경과 연결할 [서비스 역할](iam-servicerole.md)을 선택합니다. Elastic Beanstalk는 사용자를 대신하여 다른 서비스에 액세스할 때 AWS 서비스 역할을 수임합니다. 자세한 내용은 [Elastic Beanstalk 서비스 역할 관리](iam-servicerole.md)을 참조하세요.

### EC2 키 페어
<a name="using-features.managing.security.keypair"></a>

Amazon EC2 키 페어로 Elastic Beanstalk 애플리케이션에 대해 프로비저닝된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 안전하게 로그인할 수 있습니다. 키 페어를 생성하는 방법에 대한 지침은 *Amazon EC2 사용 설명서*의 [Amazon EC2를 사용하여 키 페어 만들기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair)를 참조하세요.

**참고**  
키 페어를 만들면 Amazon EC2가 해당 퍼블릭 키의 복사본을 저장합니다. 환경 인스턴스에 연결하는 데 이 키를 더 이상 사용하지 않는 경우 Amazon EC2에서 삭제해도 됩니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [키 페어 삭제](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#delete-key-pair)를 참조하세요.

드롭다운 메뉴에서 **EC2 키 페어**를 선택하여 환경의 인스턴스에 할당합니다. 키 페어를 할당할 때 로컬에 저장한 프라이빗 키를 인증하기 위해 퍼블릭 키가 인스턴스에 저장됩니다. 프라이빗 키는 절대 저장되지 않습니다 AWS.

Amazon EC2 인스턴스에 연결하는 방법에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) 및 [PuTTY를 사용하여 Windows에서 Linux/UNIX 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)을 참조하세요.

### IAM 인스턴스 프로파일
<a name="using-features.managing.security.profile"></a>

EC2 [인스턴스 프로파일](concepts-roles-instance.md)은 Elastic Beanstalk 환경에서 시작되는 인스턴스에 적용되는 IAM 역할입니다. Amazon EC2 인스턴스는 인스턴스 프로파일 역할을 수임하여 Amazon S3에 로그를 업로드하는 등 APIs에 대한 요청에 서명하고 AWS 액세스합니다.

Elastic Beanstalk 콘솔에서 환경을 처음 생성할 때 Elastic Beanstalk에서 기본 권한 세트가 있는 인스턴스 프로파일을 생성하라는 메시지를 표시합니다. 이 프로파일에 권한을 추가하여 인스턴스에 다른 AWS 서비스에 대한 액세스 권한을 제공할 수 있습니다. 자세한 내용은 [Elastic Beanstalk 인스턴스 프로파일 관리](iam-instanceprofile.md)을 참조하세요.

**참고**  
이전에 Elastic Beanstalk는 AWS 계정이 환경을 `aws-elasticbeanstalk-ec2-role` 처음 생성할 때 라는 기본 EC2 인스턴스 프로파일을 생성했습니다. 이 인스턴스 프로파일에는 기본 관리형 정책이 포함되었습니다. 계정에 이미 이 인스턴스 프로파일이 있는 경우 사용자 환경에 계속 할당할 수 있습니다.  
그러나 최근 AWS 보안 지침에서는 AWS 서비스가 다른 AWS 서비스인 EC2에 대한 신뢰 정책이 있는 역할을 자동으로 생성하는 것을 허용하지 않습니다. 이러한 보안 지침 때문에 Elastic Beanstalk는 더 이상 기본 `aws-elasticbeanstalk-ec2-role` 인스턴스 프로파일을 생성하지 않습니다.

**참고**  
EC2 인스턴스 보안에는 EC2 인스턴스에 대한 방화벽 규칙을 지정하는 측면도 있습니다. 이는 EC2 보안 그룹에 의해 제어됩니다. 자세한 내용은 [Elastic Beanstalk 환경에 대한 Amazon EC2 인스턴스](using-features.managing.ec2.md) 단원을 참조하십시오.

## 환경 보안 구성 네임스페이스
<a name="using-features.managing.security.namespaces"></a>

Elastic Beanstalk는 다음 네임스페이스에 [구성 옵션](command-options.md)을 제공하여 환경의 보안을 사용자 지정합니다.
+ [`aws:elasticbeanstalk:environment`](command-options-general.md#command-options-general-elasticbeanstalkenvironment) – `ServiceRole` 옵션을 사용하여 환경의 서비스 역할을 구성합니다.
+ [`aws:autoscaling:launchconfiguration`](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) – `EC2KeyName`, `IamInstanceProfile`, `DisableDefaultEC2SecurityGroup` 및 `SecurityGroups` 옵션을 사용하여 환경의 Amazon EC2 인스턴스에 대한 권한을 구성합니다.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 [권장 값](command-options.md#configuration-options-recommendedvalues) 섹션을 참조하세요.

# Elastic Beanstalk 환경의 리소스에 태그 지정
<a name="using-features.tagging"></a>

 AWS Elastic Beanstalk 환경에 태그를 적용할 수 있습니다. 태그는 AWS 리소스와 연결된 키-값 페어입니다. Elastic Beanstalk 리소스 태그 지정, 사용 사례, 태그 키 및 값 제약, 지원되는 리소스 유형에 대한 자세한 내용은 [Elastic Beanstalk 애플리케이션 리소스 태그 지정](applications-tagging-resources.md)을 참조하세요.

Elastic Beanstalk는 환경 리소스 자체와 Elastic Beanstalk가 환경에 대해 생성하는 다른 AWS 리소스에 환경 태그를 적용합니다. 태그를 사용하여 환경 내 특정 리소스 수준에서 권한을 관리할 수 있습니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2 리소스에 태그 지정](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)을 참조하세요.

기본적으로 Elastic Beanstalk는 환경에 다음 몇 가지 태그를 적용합니다.
+ `elasticbeanstalk:environment-name` – 환경의 이름입니다.
+ `elasticbeanstalk:environment-id` – 환경 ID입니다.
+ `Name` – 이 또한 환경의 이름입니다. `Name`은 Amazon EC2 대시보드에서 리소스 식별과 정렬에 사용됩니다.

이러한 기본 태그는 편집할 수 없습니다.

Elastic Beanstalk 환경을 생성할 때 태그를 지정할 수 있습니다. 기존 환경에서 태그를 추가 또는 제거할 수 있으며, 기존 태그의 값을 업데이트할 수 있습니다. 각 환경에는 기본 태그를 포함하여 최대 50개의 태그가 포함될 수 있습니다.

## 환경 생성 중 태그 추가
<a name="using-features.tagging.create"></a>

Elastic Beanstalk 콘솔을 사용하여 환경을 생성할 때 [새 환경 생성 마법사](environments-create-wizard.md)의 **태그 수정(Modify tags)** 구성 페이지에서 태그 키와 값을 지정할 수 있습니다.

![\[Elastic Beanstalk 콘솔에서 환경을 생성할 때의 태그 수정 구성 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environment-create-tags.png)


EB CLI를 사용하여 환경을 생성하는 경우 `--tags` 옵션을 **[eb create](eb3-create.md)**와 함께 사용하여 태그를 추가합니다.

```
~/workspace/my-app$ eb create --tags mytag1=value1,mytag2=value2
```

 AWS CLI 또는 기타 API 기반 클라이언트에서는 **[create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html)** 명령에서 `--tags` 파라미터를 사용합니다.

```
$ aws elasticbeanstalk create-environment \
      --tags Key=mytag1,Value=value1 Key=mytag2,Value=value2 \
      --application-name my-app --environment-name my-env --cname-prefix my-app --version-label v1 --template-name my-saved-config
```

[저장된 구성](environment-configuration-methods-before.md#configuration-options-before-savedconfig)에는 사용자 정의 태그가 포함되어 있습니다. 환경 생성 중에 태그가 포함되어 있는 저장된 구성을 적용하는 경우, 새 태그를 지정하지 않는 한 구성에 포함된 태그가 새 환경에 적용됩니다. 앞서 다룬 방법 중 하나를 사용하여 환경에 태그를 추가하면 저장된 구성에 정의된 모든 태그가 삭제됩니다.

## 기존 환경의 태그 관리
<a name="using-features.tagging.manage"></a>

기존 Elastic Beanstalk 환경에서 태그를 추가, 업데이트 및 삭제할 수 있습니다. Elastic Beanstalk는 환경의 리소스에 이러한 변경 사항을 적용합니다.

하지만 Elastic Beanstalk가 환경에 적용하는 기본 태그는 편집할 수 없습니다.

**Elastic Beanstalk 콘솔에서 환경의 태그를 관리하려면**

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

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

1. 탐색 창에서 **태그**를 선택합니다.

   태그 관리 페이지에 현재 환경에 있는 태그 목록이 표시됩니다.  
![\[환경의 태그를 보여주는 태그 관리 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environment-manage-tags.png)

1. 태그를 추가, 업데이트 또는 삭제합니다:
   + 태그를 추가하려면 목록 맨 아래에 있는 빈 상자에 태그를 입력합니다. 다른 태그를 추가하려면 **태그 추가**를 선택합니다. 그러면 Elastic Beanstalk는 다른 한 쌍의 빈 상자를 추가합니다.
   + 태그의 키 또는 값을 업데이트하려면 태그 행의 해당 상자를 편집합니다.
   + 태그를 삭제하려면 태그 값 상자 옆의 [**제거**]를 선택합니다.

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

EB CLI를 사용하여 환경을 업데이트하는 경우 **[eb tags](eb3-tags.md)**를 사용하여 태그를 추가, 업데이트, 삭제 또는 나열합니다.

예를 들어 다음 명령은 기본 환경의 태그를 나열합니다.

```
~/workspace/my-app$ eb tags --list
```

다음 명령은 태그 `mytag1`를 업데이트하고 태그 `mytag2`를 삭제합니다.

```
~/workspace/my-app$ eb tags --update mytag1=newvalue --delete mytag2
```

전체 옵션 목록과 예제를 더 살펴보려면 `eb tags`를 참조하십시오.

 AWS CLI 또는 기타 API 기반 클라이언트에서 **[list-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-tags-for-resource.html)** 명령을 사용하여 환경의 태그를 나열합니다.

```
$ aws elasticbeanstalk list-tags-for-resource --resource-arn "arn:aws:elasticbeanstalk:us-east-2:my-account-id:environment/my-app/my-env"
```

**[update-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-tags-for-resource.html)** 명령을 사용하여 환경에서 태그를 추가, 업데이트 또는 삭제합니다.

```
$ aws elasticbeanstalk update-tags-for-resource \
      --tags-to-add Key=mytag1,Value=newvalue --tags-to-remove mytag2 \
      --resource-arn "arn:aws:elasticbeanstalk:us-east-2:my-account-id:environment/my-app/my-env"
```

**update-tags-for-resource**의 `--tags-to-add` 파라미터에 추가할 태그 및 업데이트할 모든 태그를 지정합니다. 새로운 태그가 추가되고 기존 태그 값은 업데이트됩니다.

**참고**  
Elastic Beanstalk 환경에서이 두 AWS CLI 명령을 사용하려면 환경의 ARN이 필요합니다. 다음 명령을 사용하여 ARN을 검색할 수 있습니다.  

```
$ aws elasticbeanstalk describe-environments
```

# 환경 변수 및 기타 소프트웨어 설정
<a name="environments-cfg-softwaresettings"></a>

**업데이트, 모니터링, 로깅 구성** 페이지에서는 애플리케이션을 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 대한 소프트웨어를 구성할 수 있습니다. 환경 변수, AWS X-Ray 디버깅, 인스턴스 로그 저장 및 스트리밍, 플랫폼별 설정을 구성할 수 있습니다.

**Topics**
+ [

## 플랫폼별 설정 구성
](#environments-cfg-softwaresettings-specific)
+ [

## 환경 속성 구성(환경 변수)
](#environments-cfg-softwaresettings-console)
+ [

## 소프트웨어 설정 네임스페이스
](#environments-cfg-softwaresettings-configfiles)
+ [

## 환경 속성에 액세스
](#environments-cfg-softwaresettings-accessing)
+ [

# AWS X-Ray 디버깅 구성
](environment-configuration-debugging.md)
+ [

# Elastic Beanstalk 환경 로그 보기
](environments-cfg-logging.md)

## 플랫폼별 설정 구성
<a name="environments-cfg-softwaresettings-specific"></a>

대부분의 Elastic Beanstalk 플랫폼에서는 모든 환경에 사용할 수 있는 표준 옵션 세트 이외에 언어별 또는 프레임워크별 설정을 지정할 수 있습니다. 이는 **업데이트, 모니터링, 로깅 구성** 페이지의 **플랫폼 소프트웨어** 섹션에 표시되며 다음과 같은 형식을 취할 수 있습니다.
+ **사전 설정 환경 속성** - Ruby 플랫폼에서는 프레임워크 설정에 대해 `RACK_ENV` 및 `BUNDLE_WITHOUT`과 같은 환경 속성을 사용합니다.
+ **자리표시자 환경 속성** - Tomcat 플랫폼은 값이 설정되지 않은 환경 속성 `JDBC_CONNECTION_STRING`을 정의합니다. 이러한 설정 유형은 이전 플랫폼 버전에서 더 일반적입니다.
+ **구성 옵션** - 대부분의 플랫폼에서는 `aws:elasticbeanstalk:xray` 또는 `aws:elasticbeanstalk:container:python`과 같은 플랫폼별 또는 공유 네임스페이스에서 [구성 옵션](command-options.md)을 정의합니다.

**Elastic Beanstalk 콘솔에서 플랫폼별 설정을 구성하려면**

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

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

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

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

1. **플랫폼 소프트웨어**(Platform software)에서 필요한 옵션 설정을 변경합니다.

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

플랫폼별 옵션 및 코드에 환경 속성 값 가져오기에 대한 자세한 내용은 해당 언어 또는 프레임워크에 대한 플랫폼 주제를 참조하십시오.
+ Docker – [Elastic Beanstalk Docker 환경 구성](create_deploy_docker.container.console.md)
+ Go – [Elastic Beanstalk Go 플랫폼 사용](go-environment.md)
+ Java SE – [Elastic Beanstalk Java SE 플랫폼 사용](java-se-platform.md)
+ Tomcat – [Elastic Beanstalk Tomcat 플랫폼 사용](java-tomcat-platform.md)
+ Linux 기반 .NET Core – [Linux 기반 Elastic Beanstalk .NET Core 플랫폼 사용](dotnet-linux-platform.md)
+ .NET – [Elastic Beanstalk .NET Windows 플랫폼 사용](create_deploy_NET.container.console.md)
+ Node.js – [Elastic Beanstalk Node.js 플랫폼 사용](create_deploy_nodejs.container.md)
+ PHP – [Elastic Beanstalk PHP 플랫폼 사용](create_deploy_PHP.container.md)
+ Python – [Elastic Beanstalk Python 플랫폼 사용](create-deploy-python-container.md)
+ Ruby – [Elastic Beanstalk Ruby 플랫폼 사용](create_deploy_Ruby.container.md)

## 환경 속성 구성(환경 변수)
<a name="environments-cfg-softwaresettings-console"></a>

**환경 속성**(또는 **환경 변수**)을 사용하여 애플리케이션에 엔드포인트, 디버그 설정 및 기타 정보를 전달할 수 있습니다. 환경 변수를 사용하면 여러 환경에서 개발, 테스트, 준비 및 프로덕션 등의 다양한 목적에 맞춰 애플리케이션을 실행할 수 있습니다.

또한 [환경에 데이터베이스를 추가](using-features.managing.db.md)하면 Elastic Beanstalk에서는 연결 객체 또는 문자열을 생성하기 위해 애플리케이션 코드에서 읽을 수 있는 `RDS_HOSTNAME`과 같은 환경 변수를 설정합니다.

**Elastic Beanstalk 콘솔에서 환경 변수를 구성하는 방법**

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

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

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

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

1. 아래로 스크롤하여 **런타임 환경 변수**를 찾습니다.

1. **환경 변수 추가**를 선택합니다.

1. **소스**에서 **일반 텍스트**를 선택합니다.
**참고**  
드롭다운에 표시되는 **Secrets Manager** 및 **SSM 파라미터 스토어** 값은 자격 증명이나 API 키와 같은 민감한 데이터를 저장하기 위해 환경 변수를 보안 암호로 구성할 때 사용됩니다. 자세한 내용은 [AWS Secrets Manager 및 AWS Systems Manager 파라미터 스토어와 함께 Elastic Beanstalk 사용](AWSHowTo.secrets.md) 단원을 참조하십시오.

1. **환경 변수 이름**과 **환경 변수 값** 페어를 입력하세요.

1. 환경 변수 페어를 더 추가하려면 **6단계**부터 **8단계**까지 반복하세요.

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

**환경 속성 제한**
+ **키**에는 영숫자 문자와 `_ . : / + \ - @`의 기호가 포함될 수 있습니다.

  위에 나열된 기호는 환경 속성 키에는 사용할 수 있지만 환경 플랫폼의 환경 변수 이름에는 사용하지 못할 수 있습니다. 모든 플랫폼과의 호환성을 위해 환경 속성을 `[A-Z_][A-Z0-9_]*` 패턴으로 제한합니다.
+ **값**에는 영숫자 문자, 공백 및 `_ . : / = + \ - @ ' "`의 기호가 포함될 수 있습니다.
**참고**  
환경 속성 값의 일부 문자는 이스케이프되어야 합니다. 백슬래시 문자(`\`)를 사용하여 일부 특수 문자 및 제어 문자를 나타냅니다. 다음 목록에는 이스케이프해야 하는 일부 문자를 나타내는 예시가 포함되어 있습니다.  
백슬래시(`\`) — `\\`로 나타냅니다
작은 따옴표(`'`) — `\'`로 나타냅니다
큰 따옴표(`"`) — `\"`로 나타냅니다
+ **키**와 **값**은 대/소문자를 구분합니다.
+ *key*=*value* 형식의 문자열로 저장하는 경우 모든 환경 속성을 결합한 크기는 4,096바이트를 초과할 수 없습니다.

## 소프트웨어 설정 네임스페이스
<a name="environments-cfg-softwaresettings-configfiles"></a>

[구성 파일](ebextensions.md)을 사용하여 구성 옵션을 설정하고 배포 중 다른 인스턴스 구성 작업을 수행할 수 있습니다. 구성 옵션은 [플랫폼별](command-options-specific.md)로 다르거나 Elastic Beanstalk 서비스의 [모든 플랫폼](command-options-general.md)에 전체적으로 적용될 수 있습니다. 구성 옵션은 *네임스페이스*로 구성됩니다.

Elastic Beanstalk [구성 파일](ebextensions.md)을 사용하여 소스 코드에서 환경 속성 및 구성 옵션을 설정할 수 있습니다. [`aws:elasticbeanstalk:application:environment` 네임스페이스](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)를 사용하여 환경 속성을 정의합니다.

**Example .ebextensions/options.config**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    API_ENDPOINT: www.example.com/api
```

구성 파일 또는 CloudFormation 템플릿을 사용하여 [사용자 지정 리소스를](environment-resources.md) 생성하는 경우 함수를 CloudFormation 사용하여 리소스에 대한 정보를 가져오고 배포 중에 환경 속성에 동적으로 할당할 수 있습니다. [elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/) GitHub 리포지토리의 다음 예에서는 [Ref 함수](ebextensions-functions.md)를 사용하여 이 리포지토리가 생성한 Amazon SNS 주제의 ARN을 가져와 환경 속성 `NOTIFICATION_TOPIC`에 할당합니다.

**참고**  
 CloudFormation 함수를 사용하여 환경 속성을 정의하는 경우 함수를 평가하기 전에 Elastic Beanstalk 콘솔에 속성 값이 표시됩니다. [`get-config` 플랫폼 스크립트](custom-platforms-scripts.md)를 사용하여 애플리케이션에 사용 가능한 환경 속성의 값을 확인할 수 있습니다.
[멀티컨테이너 Docker](create_deploy_docker_ecs.md) 플랫폼은 CloudFormation 를 사용하여 컨테이너 리소스를 생성하지 않습니다. 따라서이 플랫폼은 CloudFormation 함수를 사용한 환경 속성 정의를 지원하지 않습니다.

**Example .Ebextensions/[sns-topic.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/sns-topic.config)**  

```
Resources:
  NotificationTopic:
    Type: AWS::SNS::Topic

option_settings:
  aws:elasticbeanstalk:application:environment:
    NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'
```

또한 이 기능을 사용하여 [CloudFormation 가상 파라미터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html)에서 정보를 전파할 수도 있습니다. 다음 예에서는 현재 리전을 가져와 속성 `AWS_REGION`에 할당합니다.

**Example .Ebextensions/[env-regionname.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/env-regionname.config)**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    AWS_REGION: '`{"Ref" : "AWS::Region"}`'
```

대부분의 Elastic Beanstalk 플랫폼에서는 인스턴스에서 실행되는 소프트웨어 구성을 위한 옵션을 사용해 추가 네임스페이스를 정의합니다(예: 요청을 애플리케이션으로 전달하는 역방향 프록시). 플랫폼에서 사용 가능한 네임스페이스에 대한 자세한 내용은 다음을 참조하십시오.
+ Go – [Go 구성 네임스페이스](go-environment.md#go-namespaces)
+ Java SE – [Java SE 구성 네임스페이스](java-se-platform.md#java-se-namespaces)
+ Tomcat – [Tomcat 구성 네임스페이스](java-tomcat-platform.md#java-tomcat-namespaces)
+ Linux 기반 .NET Core – [Linux 기반 .NET Core 구성 네임스페이스](dotnet-linux-platform.md#dotnet-linux-namespace)
+ .NET – [aws:elasticbeanstalk:container:dotnet:apppool 네임스페이스](create_deploy_NET.container.console.md#dotnet-namespaces)
+ Node.js – [Node.js 구성 네임스페이스](create_deploy_nodejs.container.md#nodejs-namespaces)
+ PHP – [구성을 위한 네임스페이스](create_deploy_PHP.container.md#php-namespaces)
+ Python – [Python 구성 네임스페이스](create-deploy-python-container.md#python-namespaces)
+ Ruby – [Ruby 구성 네임스페이스](create_deploy_Ruby.container.md#ruby-namespaces)

Elastic Beanstalk는 사용자가 환경을 맞춤형으로 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 통해 구성 옵션을 설정할 수도 있습니다. 자세한 정보는 [구성 옵션](command-options.md)을 참조하세요.

## 환경 속성에 액세스
<a name="environments-cfg-softwaresettings-accessing"></a>

대부분의 경우에는 환경 변수와 같은 애플리케이션 코드에서 환경 속성에 액세스합니다. 그러나 일반적으로 환경 속성은 애플리케이션에만 전달되며 환경의 인스턴스를 연결하고 `env`를 실행해서는 볼 수 없습니다.
+ [Go](go-environment.md#go-options-properties) – `os.Getenv`

  ```
  endpoint := os.Getenv("API_ENDPOINT")
  ```
+ [Java SE](java-se-platform.md#java-se-options-properties) – `System.getenv`

  ```
  String endpoint = System.getenv("API_ENDPOINT");
  ```
+ [Tomcat](java-tomcat-platform.md#java-tomcat-options-properties) - `System.getProperty` 및 `System.getenv` 

  [2025년 3월 26일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) 이후에 릴리스된 Tomcat 플랫폼 버전에서도 `System.getenv`를 사용해 평문 환경 변수에 액세스할 수 있습니다. `System.getProperty` 항목을 계속 사용하여 일반 텍스트 환경 변수에 액세스할 수 있습니다. 그러나 [보안 암호로 저장된 환경 변수](AWSHowTo.secrets.env-vars.md)는 `System.getenv` 항목을 통해서만 사용할 수 있습니다.

  ```
  String endpoint = System.getProperty("API_ENDPOINT");
  ```

  ```
  String endpoint = System.getenv("API_ENDPOINT");
  ```
**중요**  
[2025년 3월 26일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) 또는 그 이후에 릴리스된 Tomcat 플랫폼 버전의 환경 변수에 대한 `System.getenv` 액세스 권한이 추가되면 Java 시스템 속성보다 환경 변수 우선 순위를 부여하는 애플리케이션에서 또는 `System.getProperty`에서 `System.getenv` 항목으로 명시적으로 전환할 때 예기치 않은 동작이 발생할 수 있습니다. 자세한 내용과 권장 조치는 [Elastic Beanstalk Tomcat 플랫폼 사용을 참조](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html)하세요.
+ [Linux 기반 .NET Core](dotnet-linux-platform.md#dotnet-linux-options-properties) – `Environment.GetEnvironmentVariable`

  ```
  string endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT");
  ```
+ [.NET](create_deploy_NET.container.console.md#dotnet-console-properties) – `appConfig`

  ```
  NameValueCollection appConfig = ConfigurationManager.AppSettings;
  string endpoint = appConfig["API_ENDPOINT"];
  ```
+ [Node.js](create_deploy_nodejs.container.md#nodejs-platform-console-envprops) – `process.env`

  ```
  var endpoint = process.env.API_ENDPOINT
  ```
+ [PHP](create_deploy_PHP.container.md#php-console-properties) – `$_SERVER`

  ```
  $endpoint = $_SERVER['API_ENDPOINT'];
  ```
+ [Python](create-deploy-python-container.md#create-deploy-python-custom-container-envprop) – `os.environ`

  ```
  import os
  endpoint = os.environ['API_ENDPOINT']
  ```
+ [Ruby](create_deploy_Ruby.container.md#create_deploy_Ruby.env.console.ruby.envprops) – `ENV`

  ```
  endpoint = ENV['API_ENDPOINT']
  ```

배포 중 실행되는 스크립트와 같이 애플리케이션 코드 외부에서는 [`get-config` 플랫폼 스크립트](custom-platforms-scripts.md)를 사용해 환경 속성에 액세스할 수 있습니다. `get-config`를 사용하는 구성의 예는 [elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/search?utf8=%E2%9C%93&q=get-config) GitHub 리포지토리를 참조하세요.

# AWS X-Ray 디버깅 구성
<a name="environment-configuration-debugging"></a>

 AWS Elastic Beanstalk 콘솔 또는 구성 파일을 사용하여 환경의 인스턴스에서 AWS X-Ray 데몬을 실행할 수 있습니다. X-Ray는 애플리케이션이 처리하는 요청에 대한 데이터를 AWS 수집하고 이를 사용하여 애플리케이션의 문제와 최적화 기회를 식별하는 데 사용할 수 있는 서비스 맵을 구성하는 서비스입니다.

**참고**  
일부 리전에서는 X-Ray를 제공하지 않습니다. 이러한 리전 중 한 곳에서 환경을 생성하면 해당 환경의 인스턴스에서 X-Ray 데몬을 실행할 수 없습니다.  
각 리전에서 제공되는 AWS 서비스에 대한 자세한 내용은 [리전 테이블](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)을 참조하세요.

![\[Amazon DynamoDB를 사용하여 데이터를 저장하는 웹 API 애플리케이션의 서비스 맵\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/scorekeep-servicemap.png)


X-Ray는 애플리케이션 코드를 계측하는 데 사용할 수 있는 SDK와 SDK에서 X-Ray API로 디버깅 정보를 전달하는 데몬 애플리케이션을 제공합니다.

**지원하는 플랫폼**

X-Ray SDK는 다음과 같은 Elastic Beanstalk 플랫폼에서 사용할 수 있습니다.
+ **Go** - 버전 2.9.1 이상
+ **Java 8** - 버전 2.3.0 이상
+ **Java 8 with Tomcat 8** - 버전 2.4.0 이상
+ **Node.js** - 버전 3.2.0 이상
+ **Windows Server** - 모든 플랫폼 버전은 2016년 12월 18일 이후에 릴리스되었습니다.
+ **Python** - 버전 2.5.0 이상

지원되는 플랫폼에서 구성 옵션을 사용하여 환경의 인스턴스에서 X-Ray 데몬을 실행할 수 있습니다. [Elastic Beanstalk 콘솔](#environment-configuration-debugging-console)에서 또는 [구성 파일](#environment-configuration-debugging-namespace)을 사용하여 데몬을 활성화할 수 있습니다.

데이터를 X-Ray에 업로드하려면 X-Ray 데몬에 **AWSXrayWriteOnlyAccess** 관리형 정책의 IAM 권한이 필요합니다. 이러한 권한은 [Elastic Beanstalk 인스턴스 프로파일](concepts-roles-instance.md)에 포함되어 있습니다. 기본 인스턴스 프로파일을 사용하지 않는 경우 *AWS X-Ray 개발자 안내서*의 [데몬에 X-Ray로의 데이터 전송 권한 부여](https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon.html#xray-daemon-permissions)를 참조하세요.

X-Ray를 사용하여 디버깅하려면 X-Ray SDK를 사용해야 합니다. 지침과 샘플 애플리케이션에 대해서는 *AWS X-Ray 개발자 안내서*의 [AWS X-Ray시작](https://docs.aws.amazon.com/xray/latest/devguide/xray-gettingstarted.html)을 참조하세요.

데몬이 포함되지 않은 플랫폼 버전을 사용하는 경우 구성 파일의 스크립트로 이를 실행할 수 있습니다. 자세한 내용은 *AWS X-Ray 개발자 안내서*의 [X-Ray 데몬을 직접 다운로드하여 실행(고급)](https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon-beanstalk.html#xray-daemon-beanstalk-manual)을 참조하세요.

**Topics**
+ [

## 디버깅 구성
](#environment-configuration-debugging-console)
+ [

## aws:elasticbeanstalk:xray 네임스페이스
](#environment-configuration-debugging-namespace)

## 디버깅 구성
<a name="environment-configuration-debugging-console"></a>

Elastic Beanstalk 콘솔에서 실행 중인 환경에 X-Ray 데몬을 활성화할 수 있습니다.

**Elastic Beanstalk 콘솔에서 디버깅을 활성화하려면**

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

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

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

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

1. **Amazon X-Ray** 섹션에서 **활성화**(Activated)를 선택합니다.

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

환경 생성 중에 이 옵션을 활성화할 수도 있습니다. 자세한 내용은 [새 환경 생성 마법사](environments-create-wizard.md) 단원을 참조하십시오.

## aws:elasticbeanstalk:xray 네임스페이스
<a name="environment-configuration-debugging-namespace"></a>

`XRayEnabled` 네임스페이스의 `aws:elasticbeanstalk:xray` 옵션을 사용하여 디버깅을 활성화할 수 있습니다.

애플리케이션을 배포할 때 디버깅을 자동으로 활성화하려면 다음과 같이 소스 코드에 있는 [구성 파일](ebextensions.md)의 옵션을 설정합니다.

**Example .ebextensions/debugging.config**  

```
option_settings:
  aws:elasticbeanstalk:xray:
    XRayEnabled: true
```

# Elastic Beanstalk 환경 로그 보기
<a name="environments-cfg-logging"></a>

AWS Elastic Beanstalk 는 애플리케이션을 실행하는 Amazon EC2 인스턴스의 로그를 정기적으로 보는 두 가지 방법을 제공합니다.
+ 교체된 인스턴스 로그를 환경의 Amazon S3 버킷으로 업로드하도록 Elastic Beanstalk 환경을 구성합니다.
+ 인스턴스 로그를 Amazon CloudWatch Logs로 스트리밍하도록 환경을 구성합니다.

CloudWatch Logs로의 인스턴스 로그 스트리밍을 구성하면 Elastic Beanstalk가 Amazon EC2 인스턴스에 프록시 및 배포 로그에 대한 CloudWatch Logs 로그 그룹을 생성하고 이러한 로그 파일을 CloudWatch Logs에 실시간으로 전송합니다. 인스턴스 로그에 대한 자세한 내용은 [Elastic Beanstalk 환경에서 Amazon EC2 인스턴스 로그 보기](using-features.logging.md) 단원을 참조하십시오.

인스턴스 로그 외에도, 환경의 [확장 상태](health-enhanced.md)를 활성화하면 CloudWatch Logs로 상태 정보를 스트리밍하는 환경을 구성할 수 있습니다. 환경의 상태가 변경되면 Elastic Beanstalk는 상태 로그 그룹에 새로운 상태와 변경 원인에 대한 설명과 함께 기록을 추가합니다. 환경 상태 스트리밍에 대한 자세한 내용은 [Elastic Beanstalk 환경 상태 정보를 Amazon CloudWatch Logs로 스트리밍](AWSHowTo.cloudwatchlogs.envhealth.md) 단원을 참조하십시오.

## 인스턴스 로그 보기 구성
<a name="environments-cfg-logging-console"></a>

인스턴스 로그를 보려면 Elastic Beanstalk 콘솔에서 인스턴스 로그 교체와 로그 스트리밍을 활성화합니다.

**Elastic Beanstalk 콘솔에서 인스턴스 로그 교체 및 로그 스트리밍을 구성하려면**

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

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

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

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

1. **S3 로그 스토리지**(S3 log storage) 섹션에서, **로그 교체**(Rotate logs) 아래 **활성화**(Activated)를 선택하여 Amazon S3에 교체된 로그 업로드하기를 활성화합니다.

1. **인스턴스 로그를 CloudWatch Logs로 스트리밍** 섹션에서 다음 설정을 구성합니다.
   + **로그 스트리밍** - 로그 스트리밍을 사용하려면 **활성화**를 선택합니다.
   + **보존** - CloudWatch Logs에 로그를 보존할 일수를 지정합니다.
   + **수명 주기** - **종료 시 로그 삭제**로 설정하여 환경이 종료될 경우 로그가 만료될 때까지 기다리지 않고 CloudWatch Logs에서 즉시 로그를 삭제합니다.

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

로그 스트리밍을 활성화한 후 **소프트웨어** 구성 범주나 페이지로 돌아와서 **로그 그룹** 링크를 확인합니다. 이 링크를 클릭하여 CloudWatch 콘솔에서 인스턴스 로그를 봅니다.

## 환경 상태 로그 보기 구성
<a name="environments-cfg-logging-health-console"></a>

환경 상태 로그를 보려면 Elastic Beanstalk 콘솔에서 환경 상태 로그 스트리밍을 활성화합니다.

**Elastic Beanstalk 콘솔에서 환경 상태 로그 스트리밍을 구성하려면**

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

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

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

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

1. **모니터링**(Monitoring) 섹션으로 이동합니다.

1. **상태 이벤트를 CloudWatch Logs로 스트리밍**에서 다음 설정을 구성합니다.
   + **로그 스트리밍** - 로그 스트리밍을 사용하려면 **활성화**를 선택합니다.
   + **보존** - CloudWatch Logs에 로그를 보존할 일수를 지정합니다.
   + **수명 주기** - **종료 시 로그 삭제**로 설정하여 환경이 종료될 경우 로그가 만료될 때까지 기다리지 않고 CloudWatch Logs에서 즉시 로그를 삭제합니다.

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

## 로그 보기 네임스페이스
<a name="environments-cfg-logging-namespaces"></a>

다음 네임스페이스에는 로그 보기 설정이 들어 있습니다.
+ [`aws:elasticbeanstalk:hostmanager`](command-options-general.md#command-options-general-elasticbeanstalkhostmanager) - 교체된 로그를 Amazon S3로 업로드하는 것을 구성합니다.
+ [`aws:elasticbeanstalk:cloudwatch:logs`](command-options-general.md#command-options-general-cloudwatchlogs) - CloudWatch로의 인스턴스 로그 스트리밍을 구성합니다.
+ [`aws:elasticbeanstalk:cloudwatch:logs:health`](command-options-general.md#command-options-general-cloudwatchlogs-health) - CloudWatch로의 환경 상태 스트리밍을 구성합니다.

# Amazon SNS를 통한 Elastic Beanstalk 환경 알림
<a name="using-features.managing.sns"></a>

Amazon Simple Notification Service(Amazon SNS)를 사용하여 애플리케이션에 영향을 미치는 중요한 이벤트를 알리도록 AWS Elastic Beanstalk 환경을 구성할 수 있습니다. 오류가 발생하거나 환경 상태가 변경될 AWS 때마다에서 이메일을 수신하려면 환경을 생성할 때 또는 나중에 이메일 주소를 지정합니다.

**참고**  
Elastic Beanstalk은 알림에 Amazon SNS를 사용합니다. Amazon SNS 요금에 대한 자세한 내용은 [https://aws.amazon.com/sns/pricing/](https://aws.amazon.com/sns/pricing/)을 참조하세요.

환경에 대해 알림을 구성할 때 Elastic Beanstalk는 사용자를 대신하여 환경에 대한 Amazon SNS 주제를 생성합니다. Amazon SNS 주제로 메시지를 전송하려면 Elastic Beanstalk에 필요한 권한이 있어야 합니다. 자세한 내용은 [알림을 전송하는 권한 구성](#configuration-notifications-permissions) 단원을 참조하십시오.

주목할 만한 [이벤트](using-features.events.md)가 발생하면 Elastic Beanstalk은 이 주제로 메시지를 보냅니다. 그런 다음, Amazon SNS는 받은 메시지를 해당 주제의 구독자에게 전달합니다. 주목할 만한 이벤트로는 [환경 및 인스턴스 상태](health-enhanced.md)에서 일어나는 모든 변경 사항과 환경 생성 오류 등이 있습니다. Amazon EC2 Auto Scaling 작업(환경에서 인스턴스 추가 및 제거)의 이벤트와 기타 정보 제공 이벤트는 알림을 트리거하지 않습니다.

![\[Amazon SNS 알림 이메일\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/sns-notification-email.png)


환경을 생성할 때 또는 나중에 Elastic Beanstalk 콘솔에 이메일 주소를 입력할 수 있습니다. 그러면 Amazon SNS 주제가 생성되고 이를 구독합니다. Elastic Beanstalk는 주제의 수명 주기를 관리하고 환경이 종료되거나 [환경 관리 콘솔](environments-console.md)에서 이메일 주소가 제거되면 주제를 삭제합니다.

`aws:elasticbeanstalk:sns:topics` 네임스페이스는 구성 파일, CLI 또는 SDK를 사용하여 Amazon SNS 주제를 구성하는 옵션을 제공합니다. 이러한 방법 중 하나를 사용하면 구독자 유형 및 엔드포인트를 구성할 수 있습니다. 구독자 유형으로, Amazon SQS 대기열 또는 HTTP URL을 선택할 수 있습니다.

Amazon SNS 알림을 켜거나 끌 수만 있습니다. 환경 크기와 구성에 따라 주제로 전송되는 알림 빈도가 높아질 수 있습니다. 특정 상황에서 알림을 전송하도록 구성하려는 경우 다른 옵션을 사용할 수 있습니다. Amazon EventBridge에서는 Elastic Beanstalk가 특정 기준을 충족하는 이벤트를 내보내는 경우 이를 알리는 [이벤트 기반 규칙을 설정](AWSHowTo.eventbridge.md)할 수 있습니다. 또는 [사용자 지정 메트릭을 게시하도록 환경을 구성](health-enhanced-cloudwatch.md)하고 이러한 지표가 비정상 임계값에 도달하면 이를 알리도록 [Amazon CloudWatch 경보를 설정](using-features.alarms.md)할 수 있습니다.

## Elastic Beanstalk 콘솔을 사용하여 알림 구성
<a name="configuration-notifications-console"></a>

Elastic Beanstalk 콘솔에서 이메일 주소를 입력하여 환경에 맞는 Amazon SNS 주제를 생성할 수 있습니다.

**Elastic Beanstalk 콘솔을 사용하여 알림을 구성하려면**

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

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

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

1. **업데이트, 모니터링 및 로깅** 구성 범주에서 **편집**을 선택합니다.

1. 아래로 스크롤하여 **이메일 알림**(Email notifications) 섹션으로 이동합니다.

1. 이메일 주소를 입력합니다.

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

알림을 받을 이메일 주소를 입력하면, Elastic Beanstalk는 사용자 환경에 대한 Amazon SNS 주제를 만들고 구독을 추가합니다. Amazon SNS에서는 등록된 주소로 이메일을 보내 구독을 확인합니다. 구독을 활성화하고 알림을 받으려면 확인 이메일에 있는 링크를 클릭해야 합니다.

## 구성 옵션을 사용하여 알림 구성
<a name="configuration-notifications-namespace"></a>

[`aws:elasticbeanstalk:sns:topics` 네임스페이스](command-options-general.md#command-options-general-elasticbeanstalksnstopics)의 옵션을 사용하여 환경에 대한 Amazon SNS 알림을 구성합니다. [구성 파일](ebextensions.md), CLI 또는 SDK를 사용하여 이러한 옵션을 설정할 수 있습니다.
+ **알림 엔드포인트** – 알림을 받을 이메일 주소, Amazon SQS 대기열 또는 URL입니다. 이 옵션을 설정하면 지정된 엔드포인트에 대한 SQS 대기열 및 구독이 생성됩니다. 엔드포인트가 이메일 주소가 아니면 `Notification Protocol` 옵션도 설정해야 합니다. SNS는 `Notification Endpoint` 값을 기준으로 `Notification Protocol` 값을 확인합니다. 이 옵션을 여러 번 설정하면 주제에 대한 추가 구독이 생성됩니다. 이 옵션을 제거하면 주제가 삭제됩니다.
+ **알림 프로토콜** - `Notification Endpoint`로 알림을 전송하는 데 사용되는 프로토콜입니다. 이 옵션의 기본값은 `email`입니다. JSON 형식의 이메일을 보내려면 이 옵션을 `email-json`으로, JSON 형식의 알림을 HTTP 엔드포인트에 게시하려면 `http`나 `https`로, SQS 대기열로 알림을 보내려면 `sqs`로 설정하십시오.
**참고**  
AWS Lambda 알림은 지원되지 않습니다.
+ **알림 주제 ARN** – 환경에 대해 알림 엔드포인트를 설정한 후 이 설정을 읽어 SNS 주제의 ARN을 확인합니다. 알림에 대해 기존의 SNS 주제를 사용하도록 이 옵션을 설정할 수도 있습니다. 이 옵션을 변경하거나 환경을 종료해도 이 옵션을 통해 환경에 연결된 주제는 삭제되지 않습니다.

  Amazon SNS 알림을 구성하려면 필요한 권한이 있어야 합니다. IAM 사용자가 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** [관리형 사용자 정책](AWSHowTo.iam.managed-policies.md)을 사용하는 경우, Elastic Beanstalk가 사용자 환경을 위해 생성하는 기본 Amazon SNS 주제를 구성하는 데 필요한 권한을 이미 보유하고 있어야 합니다. 하지만 Elastic Beanstalk가 관리하지 않는 Amazon SNS 주제를 구성하는 경우에는 사용자 역할에 다음 정책을 추가해야 합니다.

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "sns:SetTopicAttributes",
          "sns:GetTopicAttributes",
          "sns:Subscribe",
          "sns:Unsubscribe",
          "sns:Publish"
        ],
        "Resource": [
          "arn:aws:sns:us-east-2:123456789012:sns_topic_name"
        ]
      }
    ]
  }
  ```

------
+ **알림 주제 이름** – 환경 알림에 사용되는 Amazon SNS 주제의 이름을 사용자 지정하려면 이 옵션을 설정합니다. 같은 이름의 주제가 이미 있는 경우, Elastic Beanstalk는 해당 주제를 환경에 연결합니다.
**주의**  
기존 SNS 주제를 `Notification Topic Name`으로 환경에 연결하면, 나중에 때때로 사용자가 이 설정을 변경하거나 환경을 종료하는 경우 Elastic Beanstalk에서 해당 주제를 삭제합니다.

  이 옵션을 변경하면 `Notification Topic ARN`도 변경됩니다. 주제가 이미 환경에 연결된 경우 Elastic Beanstalk는 기존 주제를 삭제한 후 새 주제와 구독을 생성합니다.

  사용자 지정 주제 이름을 사용하면 외부에서 생성된 사용자 지정 주제의 ARN도 제공해야 합니다. 관리형 사용자 정책은 사용자 지정 이름의 주제를 자동으로 감지하지 않으므로, IAM 사용자에게 사용자 지정 Amazon SNS 권한을 제공해야 합니다. 사용자 지정 주제 ARN에 사용되는 정책과 유사한 정책을 사용하되 다음 추가 사항을 포함합니다.
  + `Actions` 목록에 `sns:CreateTopic` `sns:DeleteTopic`과 같은 두 개의 추가 작업을 포함합니다.
  + 하나의 사용자 지정 주제 이름에서 다른 사용자 지정 주제 이름으로 `Notification Topic Name`을 변경하는 경우 두 주제의 ARN을 `Resource` 목록에 포함해야 합니다. 또는 두 주제를 모두 포괄하는 정규식을 포함합니다. 이렇게 하면 Elastic Beanstalk가 이전 주제를 삭제하고 새 주제를 만들 권한을 갖게 됩니다.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 [권장 값](command-options.md#configuration-options-recommendedvalues) 단원을 참조하십시오.

## 알림을 전송하는 권한 구성
<a name="configuration-notifications-permissions"></a>

이 섹션에서는 Amazon SNS를 사용하는 알림과 관련된 보안 고려 사항에 대해 설명합니다. 다음 두 가지 사례는 확실합니다.
+ Elastic Beanstalk가 환경에 대해 생성하는 기본 Amazon SNS 주제를 사용합니다.
+ 구성 옵션을 통해 외부 Amazon SNS 주제를 제공합니다.

Amazon SNS 주제에 대한 기본 액세스 정책에서는 주제 소유자만 주제를 게시하거나 구독하도록 허용합니다. 그러나 적절한 정책 구성을 통해 이 섹션에서 설명하는 두 가지 사례 중 하나에서 Amazon SNS 주제에 게시할 수 있는 권한을 Elastic Beanstalk에 부여할 수 있습니다. 다음 하위 섹션에서 자세히 설명합니다.

### 기본 주제에 대한 권한
<a name="configuration-notifications-permissions-default"></a>

환경에 대해 알림을 구성할 때 Elastic Beanstalk은 환경에 대한 Amazon SNS 주제를 만듭니다. Amazon SNS 주제로 메시지를 전송하려면 Elastic Beanstalk에 필요한 권한이 있어야 합니다. 환경에서 Elastic Beanstalk 콘솔 또는 EB CLI가 생성한 [서비스 역할](iam-servicerole.md)을 사용하거나 계정의 [모니터링 서비스 연결 역할](using-service-linked-roles-monitoring.md)을 사용하는 경우에는 달리 필요한 작업이 없습니다. 이러한 관리형 역할에는 Elastic Beanstalk가 Amazon SNS 주제로 메시지를 보내는 데 필요한 권한이 포함됩니다.

그러나 환경을 생성할 때 사용자 지정 서비스를 제공했다면 이 사용자 지정 서비스 역할에 다음 정책이 포함되었는지 확인합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sns:Publish"
      ],
      "Resource": [
        "arn:aws:sns:us-east-2:123456789012:ElasticBeanstalkNotifications*"
      ]
    }
  ]
}
```

------

### 외부 주제에 대한 권한
<a name="configuration-notifications-permissions-external"></a>

[구성 옵션을 사용하여 알림 구성](#configuration-notifications-namespace)에서는 Elastic Beanstalk가 제공하는 Amazon SNS 주제를 다른 Amazon SNS 주제로 대체하는 방법에 대해 설명합니다. 주제를 대체한 경우 Elastic Beanstalk는 SNS 주제를 환경과 연결할 수 있도록 이 SNS 주제에 대한 게시 권한이 있는지 확인해야 합니다. `sns:Publish`가 있어야 합니다. 서비스 역할은 동일한 권한을 사용합니다. 이와 같은지 확인하기 위해 Elastic Beanstalk는 환경을 생성하거나 업데이트하는 작업의 일부로 SNS에 테스트 알림을 전송합니다. 이 테스트가 실패하면 환경을 생성하거나 업데이트하려는 시도도 실패합니다. Elastic Beanstalk는 이 실패의 원인을 설명하는 메시지를 표시합니다.

환경에 대한 사용자 지정 서비스 역할을 제공하는 경우 Elastic Beanstalk가 Amazon SNS 주제로 메시지를 보낼 수 있도록 사용자 지정 역할에 다음 정책이 포함되는지 확인합니다. 다음 코드에서는 *`sns_topic_name`*을 구성 옵션에서 제공한 Amazon SNS 주제의 이름으로 대체합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sns:Publish"
      ],
      "Resource": [
        "arn:aws:sns:us-east-2:123456789012:sns_topic_name"
      ]
    }
  ]
}
```

------

 Amazon SNS 액세스 제어에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*에서 [Amazon SNS 액세스 제어 예제 사례](https://docs.aws.amazon.com/sns/latest/dg/sns-access-policy-use-cases.html)를 참조하세요.

# Elastic Beanstalk를 사용하여 Amazon Virtual Private Cloud(Amazon VPC) 구성
<a name="using-features.managing.vpc"></a>

[Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/)(Amazon VPC)는 Elastic Beanstalk에서 애플리케이션을 실행하는 EC2 인스턴스에 트래픽을 안전하게 라우팅하는 네트워킹 서비스입니다. 환경 시작 시 VPC를 구성하지 않는 경우 Elastic Beanstalk는 기본 VPC를 사용합니다.

사용자 지정 VPC에서 환경을 시작하여 네트워킹 및 보안 설정을 사용자 지정할 수 있습니다. Elastic Beanstalk에서는 리소스에 사용할 서브넷과, 환경의 인스턴스 및 로드 밸런서용 IP 주소를 구성하는 방법을 선택할 수 있습니다. 환경 생성 시 환경은 특정 VPC로 고정되지만, 실행 중인 환경에서 서브넷 및 IP 주소 설정을 변경할 수 있습니다.

## Elastic Beanstalk 콘솔에서 VPC 설정 구성
<a name="environments-cfg-vpc-console"></a>

환경 생성 시 사용자 지정 VPC를 선택한 경우 Elastic Beanstalk 콘솔에서 해당 VPC 설정을 수정할 수 있습니다.

**환경의 VPC 설정을 구성하려면**

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

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

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

1. [**네트워크**] 구성 범주에서 [**편집**]을 선택합니다.

다음 설정이 사용 가능합니다.

**Topics**
+ [

### VPC
](#environments-cfg-vpc-console-vpc)
+ [

### 로드 밸런서 표시 여부
](#environments-cfg-vpc-console-lbvisibility)
+ [

### 로드 밸런서 서브넷
](#environments-cfg-vpc-console-lbsubnets)
+ [

### 인스턴스 퍼블릭 IP 주소
](#environments-cfg-vpc-console-ec2ip)
+ [

### 인스턴스 서브넷
](#environments-cfg-vpc-console-ec2subnets)
+ [

### 데이터베이스 서브넷
](#environments-cfg-vpc-console-dbsubnets)

### VPC
<a name="environments-cfg-vpc-console-vpc"></a>

환경에 사용할 VPC를 선택합니다. 환경 생성 시 이 설정만 변경할 수 있습니다.

![\[Elastic Beanstalk 콘솔에 있는 네트워크 구성 수정 페이지의 VPC 섹션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environments-cfg-vpc-console-vpc.png)


### 로드 밸런서 표시 여부
<a name="environments-cfg-vpc-console-lbvisibility"></a>

로드 밸런싱 수행 환경의 경우 로드 밸런서 체계를 선택합니다. 기본적으로 로드 밸런서는 퍼블릭 IP 주소 및 도메인 이름을 사용하는 퍼블릭입니다. 애플리케이션이 VPC 또는 연결된 VPN의 트래픽만 제공하는 경우, 이 옵션의 선택을 취소하고 로드 밸런서의 프라이빗 서브넷을 선택하여 로드 밸런서에 대해 인터넷 액세스를 비활성화하고 내부로 설정합니다.

### 로드 밸런서 서브넷
<a name="environments-cfg-vpc-console-lbsubnets"></a>

로드 밸런싱 수행 환경의 경우 로드 밸런서에서 트래픽을 제공하는 데 사용하는 서브넷을 선택합니다. 퍼블릭 애플리케이션의 경우 퍼블릭 서브넷을 선택합니다. 고가용성을 실현하기 위해 여러 가용 영역의 서브넷을 사용합니다. 내부 애플리케이션의 경우 프라이빗 서브넷을 선택하고 로드 밸런서 표시 여부를 비활성화합니다.

![\[Elastic Beanstalk 콘솔에 있는 네트워크 수정 구성 페이지의 로드 밸런서 설정 섹션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environments-cfg-vpc-console-lb.png)


### 인스턴스 퍼블릭 IP 주소
<a name="environments-cfg-vpc-console-ec2ip"></a>

애플리케이션 인스턴스에 대해 퍼블릭 서브넷을 선택하는 경우 퍼블릭 IP 주소를 활성화하여 인터넷에서 라우팅 가능하도록 설정합니다.

### 인스턴스 서브넷
<a name="environments-cfg-vpc-console-ec2subnets"></a>

애플리케이션 인스턴스에 사용할 서브넷을 선택합니다. 로드 밸런서에 사용되는 각 가용 영역에 대해 하나 이상의 서브넷을 선택합니다. 인스턴스에 사용할 프라이빗 서브넷을 선택하는 경우 인스턴스에서 인터넷에 액세스하는 데 사용할 수 있는 NAT 게이트웨이가 VPC의 퍼블릭 서브넷에 있어야 합니다.

![\[Elastic Beanstalk 콘솔에 있는 네트워크 수정 구성 페이지의 인스턴스 설정 섹션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environments-cfg-vpc-console-ec2.png)


### 데이터베이스 서브넷
<a name="environments-cfg-vpc-console-dbsubnets"></a>

Elastic Beanstalk 환경에 연결된 Amazon RDS 데이터베이스를 실행하는 경우 데이터베이스 인스턴스에 사용할 서브넷을 선택합니다. 고가용성을 위해 데이터베이스를 다중-AZ로 설정하고 각 가용 영역마다 서브넷을 선택합니다. 애플리케이션이 데이터베이스에 연결할 수 있도록 하려면 애플리케이션과 데이터베이스 둘 다 동일한 서브넷에서 실행합니다.

## aws:ec2:vpc 네임스페이스
<a name="environments-cfg-vpc-namespace"></a>

`aws:ec2:vpc` 네임스페이스의 구성 옵션을 사용하여 환경의 네트워크 설정을 구성할 수 있습니다.

다음 [구성 파일](ebextensions.md)은 이 네임스페이스의 옵션을 사용하여 퍼블릭-프라이빗 구성을 위한 환경 VPC 및 서브넷을 설정합니다. 구성 파일에서 VPC ID를 설정하려면 해당 파일을 환경 생성 시 애플리케이션 소스 번들에 포함해야 합니다. 환경 생성 시 이러한 설정을 구성하는 그 밖의 방법은 [환경 생성 중 구성 옵션 설정](environment-configuration-methods-during.md)을(를) 참조하세요.

**Example .ebextensions/vpc.config – 퍼블릭-프라이빗**  

```
option_settings:
   aws:ec2:vpc:
      VPCId: vpc-087a68c03b9c50c84
      AssociatePublicIpAddress: 'false'
      ELBScheme: public
      ELBSubnets: subnet-0fe6b36bcb0ffc462,subnet-032fe3068297ac5b2
      Subnets: subnet-026c6117b178a9c45,subnet-0839e902f656e8bd1
```

이 예제는 로드 밸런서와 EC2 인스턴스가 동일 퍼블릭 서브넷에서 실행되는 퍼블릭-퍼블릭 구성을 보여줍니다.

**Example .ebextensions/vpc.config – 퍼블릭-퍼블릭**  

```
option_settings:
   aws:ec2:vpc:
      VPCId: vpc-087a68c03b9c50c84
      AssociatePublicIpAddress: 'true'
      ELBScheme: public
      ELBSubnets: subnet-0fe6b36bcb0ffc462,subnet-032fe3068297ac5b2
      Subnets: subnet-0fe6b36bcb0ffc462,subnet-032fe3068297ac5b2
```

# EC2-Classic에서 VPC로 Elastic Beanstalk 환경 마이그레이션
<a name="vpc-ec2migration"></a>

이 주제에서는 Elastic Beanstalk 환경을 EC2-Classic 네트워크 플랫폼에서 [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/)(Amazon VPC) 네트워크로 마이그레이션하는 방법에 대한 옵션을 설명합니다.

2013년 12월 4일 이전에 AWS 계정을 생성한 경우 일부에서 EC2-Classic 네트워크 구성을 사용하는 환경이 있을 수 있습니다 AWS 리전. 2013년 12월 4일 이후에 생성된 모든 AWS 계정은 모든 AWS 리전에서 이미 VPC 전용입니다. 유일한 예외 사항은 지원 요청의 결과로 Amazon EC2-Classic이 활성화된 경우입니다.

**참고**  
[Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)의 [구성 개요](environments-cfg-console.md#environments-cfg-console.overview) 페이지에 있는 **네트워크 구성** 범주에서 환경의 네트워크 구성 설정을 볼 수 있습니다.

## 마이그레이션해야 하는 이유
<a name="vpc-ec2migration.benefits"></a>

Amazon EC2-Classic은 2022년 8월 15일에 표준 지원이 종료될 예정입니다. 워크로드의 중단을 방지하려면 2022년 8월 15일 이전에 Amazon EC2-Classic에서 VPC로 마이그레이션하는 것이 좋습니다. 또한 향후 Amazon EC2-Classic에서 AWS 리소스를 시작하지 않고 대신 Amazon VPC를 사용하도록 요청합니다.

Elastic Beanstalk 환경을 Amazon EC2-Classic에서 Amazon VPC로 마이그레이션할 때는 새 AWS 계정을 생성해야 합니다. 또한 새 AWS 계정에서 EC2-Classic 환경을 다시 생성 AWS 해야 합니다. 환경에서 기본 VPC를 사용하기 위해 추가 구성 작업을 수행할 필요가 없습니다. 기본 VPC가 요구 사항을 충족하지 않는 경우 사용자 지정 VPC를 수동으로 생성하여 환경에 연결할 수 있습니다.



또는 기존 AWS 계정에 새 계정으로 마이그레이션할 수 없는 리소스가 있는 경우 현재 계정에 VPC를 AWS 추가합니다. 그런 다음 VPC 사용하도록 환경을 구성할 수 있습니다.

자세한 내용은 [EC2-Classic 네트워킹은 사용 중지 중입니다 - 준비 방법은 다음과 같습니다](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/) 블로그 게시물을 참조하세요.

## EC2-Classic에서 새 AWS 계정으로 환경 마이그레이션(권장)
<a name="vpc-ec2migration.newaccount"></a>

2013년 12월 4일 이후에 생성된 AWS 계정이 아직 없는 경우 새 계정을 생성합니다. 환경을 이 새 계정으로 마이그레이션하게 됩니다.

1. 새 AWS 계정은 환경에 기본 VPC를 제공합니다. 사용자 지정 VPC를 생성할 필요가 없는 경우 2단계로 건너뜁니다.

   사용자 지정 VPC는 다음 방법 중 하나로 생성할 수 있습니다.
   + Amazon VPC 콘솔 마법사를 사용하면 사용 가능한 구성 옵션 중 하나를 사용하여 VPC를 빠르게 설정할 수 있습니다. 자세한 내용은 [Amazon VPC 콘솔 마법사 구성](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_wizard.html)을 참조하세요.
   + VPC에 대한 특정 요구 사항이 있는 경우 Amazon VPC 콘솔에서 사용자 지정 VPC을 생성합니다. 예를 들어 사용 사례에 특정 수의 서브넷이 필요한 경우 이 작업을 수행하는 것이 좋습니다. 자세한 내용은 [VPC 및 서브넷](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)을 참조하세요.
   + Elastic Beanstalk 환경에서 템플릿을 사용하려면 GitHub 웹 사이트의 [elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/) 리포지토리를 사용하여 VPC를 생성합니다. GitHub AWS CloudFormation 이 리포지토리에는 CloudFormation 템플릿이 포함되어 있습니다. 자세한 내용은 [Amazon VPC에서 Elastic Beanstalk 사용](vpc.md) 단원을 참조하십시오.
**참고**  
새 환경 생성 [마법사](environments-create-wizard.md)를 사용하여 새 AWS 계정에서 환경을 다시 생성하는 동시에 사용자 지정 VPC를 생성할 수도 있습니다. 마법사를 사용하여 사용자 지정 VPC를 생성하도록 선택하면 마법사에서 Amazon VPC 콘솔로 리디렉션합니다.

1. 새 AWS 계정에서 새 환경을 생성합니다. 마이그레이션하려는 AWS 계정의 기존 환경과 동일한 구성을 환경에 포함하는 것이 좋습니다. 이를 위해 다음 방법 중 하나를 사용할 수 있습니다.
**참고**  
마이그레이션한 후에 새 환경에서 동일한 CNAME을 사용해야 하는 경우에는 EC2-Classic 플랫폼에서 원래 환경을 종료해야 합니다. 이렇게 하면 사용할 CNAME이 릴리스됩니다. 하지만 이로 인해 해당 환경의 가동 중지 시간이 발생하며 EC2-Classic 환경 종료와 새 환경 생성 사이에 다른 고객이 해당 CNAME을 선택할 위험이 있습니다. 자세한 내용은 [Elastic Beanstalk 환경 종료](using-features.terminating.md)을(를) 참조하세요.  
고유한 자체 도메인 이름을 사용하는 환경의 경우 CNAME과 관련한 이 문제가 없습니다. Domain Name System(DNS)을 업데이트하여 새 CNAME에 요청을 전달하기만 하면 됩니다.
   +  [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)에서 [새로운 환경 생성 마법사](environments-create-wizard.md)를 사용합니다. 이 마법사에는 사용자 지정 VPC를 생성하는 옵션이 표시됩니다. 사용자 지정 VPC를 생성하도록 선택하지 않으면 기본 VPC가 할당됩니다.
   + Elastic Beanstalk 명령줄 인터페이스(EB CLI)를 사용하여 새 AWS 계정에서 환경을 다시 생성합니다. **eb create** 명령 설명의 [예제](eb3-create.md#eb3-createexample1) 중 하나에서 사용자 지정 VPC에 환경을 만드는 방법을 보여줍니다. VPC ID를 입력하지 않으면 환경에서 기본 VPC를 사용합니다.

     이 접근 방식을 사용하면 두 AWS 계정에서 저장된 구성 파일을 사용할 수 있습니다. 결과적으로 모든 구성 정보를 수동으로 입력할 필요가 없습니다. 하지만 [eb config save](eb3-config.md) 명령을 사용하여 마이그레이션하는 EC2-Classic 환경에 대한 구성 설정을 저장해야 합니다. 저장된 구성 파일을 새 계정 환경의 새 디렉터리에 복사합니다.
**참고**  
새 계정에서 저장된 구성 파일을 사용하기 전에 파일의 일부 데이터를 편집해야 합니다. 이전 계정에 해당하는 정보를 새 계정의 올바른 데이터로 업데이트해야 합니다. 예를 들어, AWS Identity and Access Management (IAM) 역할의 Amazon 리소스 이름(ARN)을 새 계정의 IAM 역할 ARN으로 대체해야 합니다.

     `cfg`와(과) 함께 [eb create](eb3-create.md) 명령을 사용하면 지정한 저장된 구성 파일을 사용하여 새 환경이 생성됩니다. 자세한 내용은 [Elastic Beanstalk 저장된 구성 사용](environment-configuration-savedconfig.md) 단원을 참조하십시오.

## 동일한 AWS 계정 내의 EC2-Classic에서 환경 마이그레이션
<a name="vpc-ec2migration.classicaccount"></a>

기존 AWS 계정에 새 계정으로 마이그레이션할 수 없는 리소스가 있을 수 AWS 있습니다. 이 경우 환경을 다시 생성하고 생성하는 모든 환경에 대해 VPC를 수동으로 구성해야 합니다.

### 환경을 사용자 지정 VPC로 마이그레이션
<a name="vpc-ec2migration.classicaccount.expandable"></a>

**사전 조건**  
시작하기 전에 VPC가 있어야 합니다. 기본이 아닌(사용자 지정) VPC는 다음 방법 중 하나로 생성할 수 있습니다.
+ Amazon VPC 콘솔 마법사를 사용하면 사용 가능한 구성 옵션 중 하나를 사용하여 VPC를 빠르게 설정할 수 있습니다. 자세한 내용은 [Amazon VPC 콘솔 마법사 구성](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_wizard.html)을 참조하세요.
+ VPC에 대한 특정 요구 사항이 있는 경우 Amazon VPC 콘솔에서 사용자 지정 VPC을 생성합니다. 예를 들어 사용 사례에 특정 수의 서브넷이 필요한 경우 이 작업을 수행하는 것이 좋습니다. 자세한 내용은 [VPC 및 서브넷](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)을 참조하세요.
+ Elastic Beanstalk 환경에서 템플릿을 사용하려면 GitHub 웹 사이트의 [elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/) 리포지토리를 사용하여 VPC를 생성합니다. GitHub AWS CloudFormation 이 리포지토리에는 CloudFormation 템플릿이 포함되어 있습니다. 자세한 내용은 [Amazon VPC에서 Elastic Beanstalk 사용](vpc.md) 단원을 참조하십시오.

다음 단계에서는 새 환경에서 VPC를 구성할 때 생성된 VPC ID와 서브넷 ID를 사용합니다.

1. 기존 환경과 동일한 구성을 포함하는 새 환경을 만듭니다. 이를 위해 다음 방법 중 하나를 사용할 수 있습니다.
**참고**  
저장된 구성 기능을 사용하면 새 계정에서 환경을 다시 만들 수 있습니다. 이 기능은 환경의 구성을 저장할 수 있으므로 다른 환경을 생성하거나 업데이트할 때 적용할 수 있습니다. 자세한 내용은 [Elastic Beanstalk 저장된 구성 사용](environment-configuration-savedconfig.md)을(를) 참조하세요.
   + [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 사용하여 새 환경 구성 시 EC2-Classic 환경의 저장된 구성을 적용합니다. 이 구성은 VPC을 사용합니다. 자세한 내용은 [Elastic Beanstalk 저장된 구성 사용](environment-configuration-savedconfig.md)을(를) 참조하세요.
   + Elastic Beanstalk 명령줄 인터페이스(EB CLI)를 사용하여 [eb create](eb3-create.md) 명령을 실행해 환경을 다시 만듭니다. 원래 환경의 파라미터와 VPC 식별자를 제공합니다. **eb create** 명령 설명의 [예시](eb3-create.md#eb3-createexample1) 중 하나에서 사용자 지정 VPC에 환경을 만드는 방법을 보여줍니다.
   +  AWS Command Line Interface (AWS CLI)를 사용하고 **elasticbeanstalk create-environment** 명령을 사용하여 환경을 다시 생성합니다. 원래 환경의 파라미터와 VPC 식별자를 제공합니다. 지침은 [AWS CLI를 사용하여 Elastic Beanstalk 환경 생성](environments-create-awscli.md) 섹션을 참조하세요.

1. 현재 환경의 CNAME을 새 환경으로 전환합니다. 이렇게 하면 만든 새 환경을 친숙한 주소로 참조할 수 있습니다. EB CLI 또는 AWS CLI를 사용할 수 있습니다.
   + EB CLI를 사용하여 **eb swap** 명령을 실행해 환경의 CNAME을 스왑합니다. 자세한 내용은 [Elastic Beanstalk를 관리하기 위한 EB 명령줄 인터페이스(EB CLI) 설정](eb-cli3.md) 단원을 참조하십시오.
   + 를 사용하여 환경 CNAMEs [ elasticbeanstalk swap-environment-cnames ](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/swap-environment-cnames.html) 명령으로 AWS CLI교체합니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)를 참조하세요.

# Elastic Beanstalk 환경의 도메인 이름
<a name="customdomains"></a>

기본적으로 환경은 `elasticbeanstalk.com` 하위 도메인의 사용자가 사용할 수 있습니다. [환경을 생성](using-features.environments.md)할 때 애플리케이션에 대한 호스트 이름을 선택할 수 있습니다. `region.elasticbeanstalk.com`에 대한 하위 도메인 및 도메인이 자동으로 채워집니다.

사용자를 환경에 라우팅하기 위해 Elastic Beanstalk는 환경의 로드 밸런서를 가리키는 CNAME 레코드를 등록합니다. Elastic Beanstalk 콘솔의 [환경 개요](environments-dashboard.md) 페이지에서 CNAME의 현재 값을 사용하여 환경의 애플리케이션 URL을 확인할 수 있습니다.

![\[Elastic Beanstalk 콘솔의 환경 개요 페이지에 CNAME이 표시되는 환경 URL\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/environment-management-dashboard-url.png)


개요 페이지에서 URL을 선택하거나 탐색 창에서 **환경으로 이동**을 선택하여 애플리케이션의 웹 페이지로 이동합니다.

사용자 환경의 CNAME을 다른 환경의 CNAME과 바꿀 수 있습니다. 지침은 [Elastic Beanstalk를 사용한 블루/그린 배포](using-features.CNAMESwap.md) 섹션을 참조하세요.

도메인 이름이 있으면 Amazon Route 53을 사용하여 해당 환경에 맞게 해석할 수 있습니다. Amazon Route 53에서 도메인 이름을 구매하거나 다른 공급자에게서 구매한 이름을 사용할 수 있습니다.

Route 53에서 도메인 이름을 구매하려면 *Amazon Route 53 개발자 안내서*의 [새 도메인 등록](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)을 참조하세요.

사용자 지정 도메인 사용에 대한 자세한 내용은 *Amazon Route 53 개발자 안내서*의 [AWS Elastic Beanstalk 환경으로 트래픽 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-beanstalk-environment.html)을 참조하세요.

**중요**  
환경을 종료하는 경우 생성한 CNAME 매핑도 모두 삭제해야 합니다. 그래야 다른 고객이 사용 가능한 호스트 이름을 재사용할 수 있습니다. *매달린 DNS*를 방지하려면 종료된 환경을 나타내는 DNS 레코드를 삭제해야 합니다. 매달린 DNS 항목이 있는 경우 도메인으로 향하는 인터넷 트래픽이 보안 취약성에 노출될 수 있습니다. 다른 위험도 초래할 수 있습니다.  
자세한 내용은 *Amazon Route 53 개발자 안내서*의 [Route 53에서 누락된 위임 레코드 보호](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/protection-from-dangling-dns.html)를 참조하세요. *AWS 보안 블로그*의 [Amazon CloudFront 요청을 위한 강화된 도메인 보호](https://aws.amazon.com/blogs/security/enhanced-domain-protections-for-amazon-cloudfront-requests/)에서 매달린 DNS 항목에 대해 자세히 알아볼 수 있습니다.