

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

# Elastic Beanstalk 플랫폼
<a name="concepts-all-platforms"></a>

AWS Elastic Beanstalk 는 애플리케이션을 빌드할 수 있는 다양한 플랫폼을 제공합니다. 이러한 플랫폼 중 하나를 통해 웹 애플리케이션을 설계하면 Elastic Beanstalk가 선택한 플랫폼 버전에 맞는 코드를 배포하여 활성 애플리케이션 환경을 생성합니다.

Elastic Beanstalk는 다양한 프로그래밍 언어, 애플리케이션 서버 및 Docker 컨테이너를 위한 플랫폼을 제공합니다. 일부 플랫폼은 여러 버전이 동시 지원됩니다,

**Topics**
+ [Elastic Beanstalk 플랫폼 용어집](platforms-glossary.md)
+ [Elastic Beanstalk 플랫폼 유지 관리를 위한 공동 책임 모델](platforms-shared-responsibility.md)
+ [Elastic Beanstalk 플랫폼 지원 정책](platforms-support-policy.md)
+ [Elastic Beanstalk 플랫폼 릴리스 일정](platforms-schedule.md)
+ [Elastic Beanstalk 지원되는 플랫폼](concepts.platforms.md)
+ [Elastic Beanstalk Linux 플랫폼](platforms-linux.md)
+ [Elastic Beanstalk Linux 플랫폼 확장](platforms-linux-extend.md)

# Elastic Beanstalk 플랫폼 용어집
<a name="platforms-glossary"></a>

다음은 AWS Elastic Beanstalk 플랫폼 및 해당 수명 주기와 관련된 주요 용어입니다.

**런타임**  
애플리케이션 코드를 실행하는 데 필요한 프로그래밍 언어별 런타임 소프트웨어(프레임워크, 라이브러리, 인터프리터, vm 등)

**Elastic Beanstalk 구성 요소**  
Elastic Beanstalk가 Elastic Beanstalk 기능을 활성화하기 위해 플랫폼에 추가하는 소프트웨어 구성 요소입니다. 예를 들어 확장 상태 확인 에이전트는 상태 정보를 수집하여 보고하는 데 필요합니다.

**플랫폼**  
플랫폼은 운영 체제(OS), 런타임, 웹 서버, 애플리케이션 서버 및 Elastic Beanstalk 구성 요소의 조합입니다. 플랫폼은 애플리케이션을 실행하는 데 사용할 수 있는 구성 요소를 제공합니다.

**플랫폼 버전**  
특정 버전의 운영 체제(OS), 런타임, 웹 서버, 애플리케이션 서버 및 Elastic Beanstalk 구성 요소의 조합입니다. 플랫폼 버전에 기반한 Elastic Beanstalk 환경을 만들고 애플리케이션을 이 환경에 배포합니다.  
플랫폼 버전은 *X.Y.Z* 형태의 의미상 버전 번호를 가지며, 여기서 *X*는 메이저 버전, *Y*는 마이너 버전, *Z*는 패치 버전에 해당됩니다.  
플랫폼 버전은 다음 상태 중 하나일 수 있습니다.  
+ *권장 *- 지원되는 플랫폼 브랜치의 최신 플랫폼 버전입니다. 이 버전은 최신 구성 요소를 포함하고 있으며, 프로덕션 환경에서 사용하기에 권장됩니다. Elastic Beanstalk에서 새로운 플랫폼 버전을 릴리스하면 해당 버전은 이전 버전을 대체하며 해당 플랫폼 브랜치의 권장 플랫폼 버전이 됩니다.
+ *권장되지 않음* - 해당 플랫폼 브랜치에서 최신 버전이 아닌 모든 플랫폼 버전입니다. 이전 버전이 계속 작동할 수는 있지만 최신 플랫폼 버전으로의 업데이트를 강력히 권장합니다. [관리형 플랫폼 업데이트](environment-platform-update-managed.md)를 사용하면 자동으로 최신 상태를 유지할 수 있습니다.
플랫폼 버전이 권장되는지 여부는 AWS CLI 명령 **[describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)**을 실행한 뒤 `PlatformLifecycleState` 필드를 확인하여 검증할 수 있습니다.

**플랫폼 브랜치**  
운영 체제(OS), 런타임 또는 Elastic Beanstalk 구성 요소와 같은 일부 구성 요소의 특정(일반적으로 메이저) 버전을 공유하는 플랫폼 버전입니다. 예: *64비트 Amazon Linux 2023에서 실행되는 Python 3.13*, *64비트 Windows Server 2025에서 실행되는 IIS 10.0*. 플랫폼 브랜치는 새로운 플랫폼 버전 형태로 업데이트를 수신합니다. 브랜치의 연속하는 각 플랫폼 버전은 이전 플랫폼 버전에 대한 업데이트입니다.  
지원되는 각 플랫폼 브랜치의 권장 버전은 환경 생성에 조건 없이 사용할 수 있습니다. 이전 플랫폼 버전은 해당 버전이 새 버전에 의해 대체되었을 당시 이를 사용 중이거나 종료된 환경이 있는 계정에서는 계속 액세스할 수 있습니다. 이전 플랫폼 버전은 최신 구성 요소가 대부분 누락되므로 사용하지 않는 것이 좋습니다.  
위에 설명한 일반적인 이용 가능 기간 외에 이전 플랫폼 버전에 대한 접근이 필요한 경우, [AWS 지원 센터](https://console.aws.amazon.com/support/home#/)에 문의해 지원을 요청할 수 있습니다.
플랫폼 브랜치는 다음 상태 중 하나일 수 있습니다.  
+ *지원* – 현재 플랫폼 브랜치입니다. 전체적으로 *지원되는 구성 요소*로 구성됩니다. 지원되는 구성 요소는 공급업체 기준으로 아직 수명 종료(EOL)에 도달하지 않은 상태입니다. 플랫폼 업데이트를 지속적으로 받으며 프로덕션 환경에서 사용하는 것이 좋습니다. 지원되는 플랫폼 브랜치 목록은 *AWS Elastic Beanstalk 플랫폼* 가이드의 [Elastic Beanstalk 지원 플랫폼](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html)을 참조하세요.
+ *베타* – 미리 보기, 시험판 플랫폼 브랜치입니다. 기본적으로 실험용입니다. 잠시 동안 지속적 플랫폼 업데이트를 받을 수 있지만 장기적 지원은 없습니다. 베타 플랫폼 브랜치는 프로덕션 환경에서 사용하지 않는 것이 좋습니다. 평가를 위해서만 사용하십시오. 베타 플랫폼 브랜치 목록은 *AWS Elastic Beanstalk 플랫폼* 가이드의 [Elastic Beanstalk 공개 베타 플랫폼 버전](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-beta.html)을 참조하세요.
+ *더 이상 사용되지 않음* - 런타임 또는 운영 체제와 같은 하나 이상의 구성 요소가 공급업체의 지정에 따라 지원 종료(EOL)를 앞두고 있거나 이미 종료된 플랫폼 브랜치입니다. 사용 중지된 플랫폼 브랜치는 공식 폐기일 전까지는 새로운 플랫폼 버전을 계속 수신하지만, EOL에 도달한 구성 요소는 더 이상 업데이트를 받지 않습니다. 예를 들어, 런타임 버전이 EOL에 도달하면 플랫폼 브랜치는 지원 종료 예정으로 표시되지만 플랫폼 브랜치의 공식 지원 종료일까지는 운영 체제 업데이트를 계속 수신합니다. 플랫폼 브랜치는 EOL 런타임 버전에 대한 업데이트를 더 이상 받지 않습니다. 사용 중지된 플랫폼 분기는 사용하지 않는 것이 좋습니다.
+ *사용 중지 *- 더 이상 어떤 업데이트도 제공되지 않는 플랫폼 브랜치입니다. 사용 중지된 플랫폼 브랜치는 Elastic Beanstalk 콘솔을 통해 새 환경을 생성할 때 사용할 수 없습니다. 환경에서 사용 중지된 플랫폼 브랜치를 사용 중인 경우, 업데이트를 계속 수신하려면 지원되는 플랫폼 브랜치로 업데이트해야 합니다. 사용 중지된 플랫폼 분기는 사용하지 않는 것이 좋습니다. 사용 중지된 플랫폼 브랜치에 대한 자세한 내용은 [Elastic Beanstalk 플랫폼 지원 정책](platforms-support-policy.md) 섹션을 참조하세요. 사용 중지가 예정된 플랫폼 브랜치 목록은 [Retiring platform branch schedule](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-schedule.html#platforms-support-policy.depracation)을 참조하세요. 이전에 사용 중지된 플랫폼 브랜치를 보려면 [Retired platform branch history록](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-schedule.html#platforms-support-policy.retired)을 참조하세요.
현재 환경에서 사용되지 않거나 만료된 플랫폼 브랜치를 사용하는 경우 지원되는 플랫폼 브랜치의 플랫폼 버전으로 업데이트하는 것이 좋습니다. 자세한 내용은 [Elastic Beanstalk 환경의 플랫폼 버전 업데이트](using-features.platform.upgrade.md)을 참조하세요.  
AWS CLI 명령어 **[describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)**을 사용하고 `PlatformBranchLifecycleState` 필드를 확인하여 플랫폼 브랜치의 상태를 검증할 수 있습니다.

**플랫폼 업데이트**  
플랫폼의 일부 구성 요소에 대한 업데이트를 포함하는 새 플랫폼 버전의 릴리스 — OS, 런타임, 웹 서버, 애플리케이션 서버 및 Elastic Beanstalk 구성 요소. Elastic Beanstalk에서 새로운 플랫폼 버전을 릴리스하면 해당 버전은 이전 버전을 대체하며 해당 플랫폼 브랜치의 권장 플랫폼 버전이 됩니다. 플랫폼 업데이트는 의미 체계 버전 분류 체계를 따르며, 그에는 다음과 같은 세 가지 수준이 있을 수 있습니다.  
+ *메이저 업데이트* – 이전 플랫폼 버전과 호환되지 않는 변경 사항이 있는 업데이트. 새 메이저 버전에서 올바르게 실행하려면 애플리케이션의 수정이 필요할 수 있습니다. 메이저 업데이트는 새 메이저 플랫폼 버전 번호를 지닙니다.
+ *마이너 업데이트* – 대부분의 경우 이전 플랫폼 버전과의 호환되는 변경 사항을 포함한 업데이트 애플리케이션에 따라, 새로운 마이너 버전에서 올바르게 실행되도록 애플리케이션을 수정해야 할 수도 있습니다. 마이너 업데이트는 새 마이너 플랫폼 버전 번호를 지닙니다.
+ *패치 업데이트* – 이전 플랫폼 버전과 호환되는 유지 관리 릴리스(버그 수정, 보안 업데이트 및 성능 개선)로 구성되는 업데이트. 패치 업데이트는 새 패치 플랫폼 버전 번호를 지닙니다.

**관리형 업데이트**  
운영 체제(OS), 런타임, 웹 서버, 애플리케이션 서버 및 Elastic Beanstalk가 지원되는 플랫폼 버전을 위한 Elastic Beanstalk 구성 요소에 패치 및 마이너 업데이트를 자동으로 적용하는 Elastic Beanstalk 기능. 관리형 업데이트에서는 동일한 플랫폼 브랜치의 최신 플랫폼 버전을 사용자 환경에 적용합니다. 패치 업데이트만 또는 마이너 및 패치 업데이트를 적용하도록 관리형 업데이트를 구성할 수 있습니다. 관리형 업데이트를 완전히 비활성화할 수도 있습니다.  
자세한 내용은 [관리형 플랫폼 업데이트](environment-platform-update-managed.md) 단원을 참조하십시오.

# Elastic Beanstalk 플랫폼 유지 관리를 위한 공동 책임 모델
<a name="platforms-shared-responsibility"></a>

AWS 및 고객은 높은 수준의 소프트웨어 구성 요소 보안 및 규정 준수를 달성할 책임이 있습니다. 이 공유 모델을 통해 운영 부담을 덜 수 있습니다.

자세한 내용은 AWS [공동 책임 모델을](https://aws.amazon.com/compliance/shared-responsibility-model/) 참조하세요.

AWS Elastic Beanstalk 는 *관리형 업데이트* 기능을 제공하여 공동 책임 모델의 측면을 수행하는 데 도움이 됩니다. 이 기능은 Elastic Beanstalk 지원되는 플랫폼 버전에 대한 패치 및 마이너 업데이트를 자동으로 적용합니다. 관리형 업데이트에 실패할 경우, 사용자가 상황을 파악하여 즉각적인 조치를 취할 수 있도록 Elastic Beanstalk에서 실패 사실을 알립니다.

자세한 내용은 [관리형 플랫폼 업데이트](environment-platform-update-managed.md) 단원을 참조하십시오.

또한 Elastic Beanstalk는 다음을 수행합니다.
+ 향후 12개월에 대한 [플랫폼 지원 정책](platforms-support-policy.md) 및 만료 일정을 게시합니다.
+ 릴리스 패치, 운영 체제(OS)의 마이너 및 메이저 업데이트, 실행 시간, 애플리케이션 서버 및 일반적으로 30일 간 사용 가능한 웹 서버 구성 요소. Elastic Beanstalk는 Elastic Beanstalk 지원되는 플랫폼 버전에 존재하는 Elastic Beanstalk 구성 요소 업데이트를 수행합니다. 기타 모든 업데이트는 공급업체(소유자 또는 커뮤니티)에서 직접 수행합니다.

지원되는 플랫폼에 대한 모든 업데이트는 *AWS Elastic Beanstalk 릴리스 정보 가이드*의 [릴리스 정보](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/relnotes.html)에서 발표합니다. 또한 *AWS Elastic Beanstalk 플랫폼* 가이드에는 지원되는 모든 플랫폼 및 해당 구성 요소 목록과 플랫폼 기록이 나와 있습니다. 자세한 내용은 [지원되는 플랫폼 및 구성 요소 기록](concepts.platforms.md#concepts.platforms.list)을 참조하세요.

사용자는 다음을 수행할 책임이 있습니다.
+ 제어하는 모든 구성 요소를 업데이트합니다( AWS [공동 책임 모델에서](https://aws.amazon.com/compliance/shared-responsibility-model/) **고객**으로 식별됨). 이에는 애플리케이션, 데이터 및 애플리케이션에 필요하며 사용자가 다운로드한 모든 구성 요소에 대한 보안성 보장이 포함됩니다.
+ 지원되는 플랫폼 버전에서 Elastic Beanstalk 환경이 실행되고 있는지 확인하고 만료된 플랫폼 버전에서 실행 중인 모든 환경을 지원되는 버전으로 마이그레이션합니다.
+ Elastic Beanstalk 환경에 대해 사용자 지정 Amazon Machine Image(AMI)를 사용하는 경우, 사용자 지정 AMI를 대상으로 패치 적용, 유지 관리 및 테스트하여 최신 상태로 유지하고 지원되는 Elastic Beanstalk 플랫폼 버전과 호환되도록 합니다. 사용자 지정 AMI를 사용하여 환경을 관리하는 방법에 대한 자세한 내용은 [Elastic Beanstalk 환경에서 사용자 지정 Amazon Machine Image(AMI) 사용](using-features.customenv.md) 단원을 참조하세요.
+ 관리형 업데이트 시도의 실패에 따른 모든 문제를 해결하고 업데이트를 다시 시도합니다.
+ Elastic Beanstalk 관리형 업데이트를 옵트아웃한 경우 운영 체제, 실행 시간, 애플리케이션 서버 및 웹 서버에 직접 패치를 적용합니다. 이렇게 하려면, [플랫폼 업데이트를 수동으로 적용하거나](using-features.platform.upgrade.md) 관련된 모든 환경 리소스의 구성 요소에 직접 패치를 적용하면 됩니다.
+  AWS [공동 책임 모델에](https://aws.amazon.com/compliance/shared-responsibility-model/) 따라 Elastic Beanstalk 외부에서 사용하는 모든 AWS 서비스의 보안 및 규정 준수를 관리합니다.

# Elastic Beanstalk 플랫폼 지원 정책
<a name="platforms-support-policy"></a>

Elastic Beanstalk는 공급업체(소유자 또는 커뮤니티)의 작은 업데이트 및 패치 업데이트를 받고 있는 플랫폼 브랜치를 지속적으로 지원합니다. 관련 용어에 대한 완전한 정의는 [Elastic Beanstalk 플랫폼 용어집](platforms-glossary.md)을 참조하세요.

## 사용 중지된 플랫폼 브랜치
<a name="platforms-support-policy.retired-platforms"></a>

지원되는 플랫폼 브랜치의 구성 요소가 공급업체에 의해 수명 종료(EOL)로 표시된 경우 Elastic Beanstalk에서 해당 플랫폼 브랜치를 사용 중지로 표시합니다. 플랫폼 브랜치의 구성 요소로는 운영 체제(OS), 런타임 언어 버전, 애플리케이션 서버 또는 웹 서버가 있습니다.

플랫폼 브랜치가 사용 중지된 것으로 표시되면 다음 정책이 적용됩니다.
+ Elastic Beanstalk는 보안 업데이트를 비롯한 유지 관리 업데이트 제공을 중지합니다.
+ Elastic Beanstalk는 더 이상 사용 중지된 플랫폼 브랜치에 대한 기술 지원을 제공하지 않습니다.
+ Elastic Beanstalk는 더 이상 새로운 Elastic Beanstalk 고객에게 새로운 환경에 배포할 수 있는 플랫폼 브랜치를 제공하지 않습니다. 사용 중지된 플랫폼 브랜치로 활성 환경을 실행하고 있는 기존 고객의 경우 공고된 사용 중지일로부터 90일의 유예 기간이 적용됩니다.

**참고**  
Elastic Beanstalk 콘솔에서는 사용 중지된 플랫폼 브랜치를 사용할 수 없습니다. 그러나 사용 중지된 플랫폼 브랜치를 기반으로 기존 환경이 있는 고객은 AWS CLI EB CLI 및 EB API를 통해 사용할 수 있습니다. 기존 고객은 [환경 복제](using-features.managing.clone.md)와 [환경 다시 빌드](environment-management-rebuild.md) 콘솔을 사용할 수 있습니다.

사용 중지가 예정된 플랫폼 브랜치 목록은 다음 *Elastic Beanstalk 플랫폼 일정* 주제의 [사용 중지 플랫폼 브랜치 일정](platforms-schedule.md#platforms-support-policy.depracation) 단원을 참조하세요.

환경의 플랫폼 브랜치가 사용 중지될 때 예상되는 사항에 대한 자세한 내용은 [플랫폼 사용 중지 FAQ](using-features.migration-al.FAQ.md) 단원을 참조하세요.

## 90일의 유예 기간 이후
<a name="platforms-support-policy.beyond-grace"></a>

사용 중지된 플랫폼 브랜치에 대한 정책은 환경에 대한 액세스를 제거하거나 리소스를 삭제하지 않습니다. 그러나 사용 중지된 플랫폼 브랜치에서 Elastic Beanstalk 환경을 실행하는 기존 고객은 그렇게 하는 데 따른 위험을 인지해야 합니다. 공급업체가 구성 요소를 EOL로 표시하면 Elastic Beanstalk가 사용 중지된 플랫폼 브랜치로 보안 업데이트, 기술 지원 또는 핫픽스를 제공할 수 없기 때문에 예측 불가능한 상황을 초래될 수 있습니다.

예를 들어, 사용 중지된 플랫폼 브랜치를 통해 실행되는 환경에는 유해하고 심각한 보안 취약성이 생성될 수 있습니다. 또는 시간의 경과에 따라 Elastic Beanstalk 서비스와의 호환 불량으로 인해 사용 중지된 플랫폼의 브랜치 환경에서 EB API 작업이 작동되지 않을 수 있습니다. 사용 중지된 플랫폼 브랜치의 환경이 활성 상태로 유지되는 기간이 길어질수록 이러한 요소의 위험 가능성은 높아집니다. 계속해서 구성 요소 공급업체가 제공하는 중요한 보안, 성능 및 기능 개선 관련 최신 릴리스를 지원 받으려면, 모든 Elastic Beanstalk 환경을 지원 가능한 플랫폼 버전으로 업데이트해야 합니다.

사용 중지된 플랫폼 브랜치에서 실행되는 동안 애플리케이션에 문제가 발생하여 지원되는 플랫폼으로 마이그레이션할 수 없는 경우 다른 대안을 고려해야 합니다. 예를 들어 애플리케이션을 도커 이미지로 캡슐화한 후 도커 컨테이너로 실행하는 등의 방법이 있습니다. 이를 통해 고객은 Elastic Beanstalk AL2023/AL2 Docker 플랫폼이나 Amazon ECS 또는 Amazon EKS와 같은 기타 Docker 기반 서비스를 비롯한 모든 Docker 솔루션을 사용할 수 있습니다. Docker가 아닌 대안에는 원하는 런타임을 완전히 사용자 지정할 수 있는 AWS CodeDeploy 서비스가 포함됩니다.

# Elastic Beanstalk 플랫폼 릴리스 일정
<a name="platforms-schedule"></a>

새로운 플랫폼 브랜치 버전의 월간 케이던스 릴리스 외에도 릴리스 유지 관리에는 다음 프로세스도 포함됩니다.
+  *새로운 플랫폼 브랜치 릴리스* - 일반적으로 런타임 언어, 운영 체제 또는 애플리케이션 서버의 새로운 메이저 버전을 도입합니다.
+  *플랫폼 브랜치의 사용 중지* - 구성 요소 중 하나가 수명 종료(EOL)에 도달하면 플랫폼 브랜치를 사용 중지해야 합니다. 브랜치에 대한 정책에 대해 자세한 내용은 [Elastic Beanstalk 플랫폼 지원 정책](platforms-support-policy.md) 단원을 참조하세요.

**Topics**
+ [리소스 계획](#platforms-support-policy.resources)
+ [향후 플랫폼 브랜치 릴리스](#platforms-support-policy.upcoming-releases)
+ [사용 중지 플랫폼 브랜치 일정](#platforms-support-policy.depracation)
+ [사용 중지된 플랫폼 브랜치 기록](#platforms-support-policy.retired)
+ [사용 중지된 서버 및 운영 체제 기록](#platforms-support-policy.retired.components)

## 리소스 계획
<a name="platforms-support-policy.resources"></a>

다음 리소스는 Elastic Beanstalk 플랫폼에서 실행되는 애플리케이션에 대한 유지 관리 및 지원을 계획하는 데 도움이 될 수 있습니다.
+ [AWS Elastic Beanstalk 플랫폼 가이드 ](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/welcome.html)-이 가이드에서는 각 플랫폼 브랜치에 대한 자세한 구성 요소 목록을 제공합니다. 또한 동일한 세부 정보를 포함하는 릴리스 날짜별 플랫폼 기록도 제공합니다. 이 가이드에서 플랫폼 브랜치의 특정 구성 요소가 변경된 시기를 알려줄 수 있습니다. 애플리케이션이 다르게 작동하기 시작하면 플랫폼 가이드에서 발생 날짜를 참조하여 애플리케이션에 영향을 미칠 수 있는 플랫폼 변경이 있었는지 확인할 수도 있습니다.
+ [AWS Elastic Beanstalk 릴리스 정보](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/relnotes.html) - 릴리스 정보는 마이너 및 메이저 플랫폼 릴리스를 모두 발표합니다. 여기에는 월간 플랫폼 업데이트, 보안 릴리스, 핫픽스 및 사용 중지 공지가 포함됩니다. 릴리스 정보 설명서에서 RSS 피드를 구독할 수 있습니다.

## 향후 플랫폼 브랜치 릴리스
<a name="platforms-support-policy.upcoming-releases"></a>

다음 표에는 예정된 Elastic Beanstalk 플랫폼 브랜치와 목표 릴리스 날짜가 나열되어 있습니다. 이러한 날짜는 잠정적이며 변경될 수 있습니다.


|  런타임 버전/플랫폼 브랜치  |  운영 체제  |  대상 릴리스 날짜  | 
| --- | --- | --- | 
|   Python 3.15   |  Amazon Linux 2023  |  2026년 11월  | 
|   Node.js 26   |  Amazon Linux 2023  |  2026년 11월  | 
|   .NET 11   |  Amazon Linux 2023  |  2026년 12월  | 
|   PHP 8.6   |  Amazon Linux 2023  |  2027년 1월  | 
|   Ruby 4.1   |  Amazon Linux 2023  |  2027년 2월  | 

## 사용 중지 플랫폼 브랜치 일정
<a name="platforms-support-policy.depracation"></a>

다음 표에는 일부 구성 요소가 수명 종료(EOL)에 도달했기 때문에 사용 중지될 예정된 Elastic Beanstalk 플랫폼 브랜치가 나열되어 있습니다. Amazon Linux 2(AL2)를 기반으로 한 모든 플랫폼 브랜치는 Amazon Linux 2의 EOL 시점인 2026년 6월 30일 이전에 모두 사용 중지됩니다. Amazon Linux 2에 대한 자세한 내용은 [Amazon Linux 2 FAQ](https://aws.amazon.com/amazon-linux-2/faqs/)를 참조하세요.

특정 구성 요소가 포함된 사용 중지 플랫폼 브랜치의 자세한 목록은 *AWS Elastic Beanstalk 플랫폼 가이드*의 [플랫폼 버전 사용 중지](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-retiring.html)를 참조하세요.


|  런타임 버전/플랫폼 브랜치  |  목표 사용 중지 날짜  | 
| --- | --- | 
| PHP 8.1 AL2023 | 2026년 3월 31일 | 
| PHP 8.1 AL2 | 2026년 3월 31일 | 
| Docker AL2 | 2026년 6월 30일 | 
| ECS AL2 | 2026년 6월 30일 | 
| Go 1 AL2 | 2026년 6월 30일 | 
| Corretto 8 AL2 | 2026년 6월 30일 | 
| Corretto 11 AL2 | 2026년 6월 30일 | 
| Corretto 17 AL2 | 2026년 6월 30일 | 
| Corretto 8 with Tomcat 9 AL2 | 2026년 6월 30일 | 
| Corretto 11 with Tomcat 9 AL2 | 2026년 6월 30일 | 
| .NET Core AL2 | 2026년 6월 30일 | 
| Python 3.9 AL2023 | 2026년 7월 31일 | 
| Ruby 3.2 AL2023 | 2026년 7월 31일 | 
| Node.js 20 AL2023 | 2026년 7월 31일 | 
| IIS 10.0 on Windows Server 2016 (& Core) | 2026년 9월 30일 | 
| PHP 8.2 AL2023 | 2027년 3월 31일 | 
| .NET 9 AL2023 | 2027년 3월 31일 | 
| .NET 8 AL2023 | 2027년 3월 31일 | 

## 사용 중지된 플랫폼 브랜치 기록
<a name="platforms-support-policy.retired"></a>

다음 표에는 이미 사용 중지된 상태의 Elastic Beanstalk 플랫폼 브랜치가 나열되어 있습니다. *AWS Elastic Beanstalk 플랫폼 가이드*의 [플랫폼 기록](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history.html)에서 이러한 플랫폼 브랜치 및 해당 구성 요소에 대한 자세한 기록을 확인할 수 있습니다.


**Amazon Linux 2023(AL2023)**  

|  런타임 버전/플랫폼 브랜치  |  사용 중지일  | 
| --- | --- | 
|   .NET 6 AL2023  |  2025년 4월 8일  | 
|   Node.js 18 AL2023  |  2025년 8월 11일  | 


**Amazon Linux 2(AL2)**  

|  런타임 버전/플랫폼 브랜치  |  사용 중지일  | 
| --- | --- | 
|   Corretto 11 with Tomcat 8.5 AL2  |  2024년 10월 10일  | 
|   Corretto 8 with Tomcat 8.5 AL2   |  2024년 10월 10일  | 
|   Corretto 11 with Tomcat 7 AL2  |  2022년 6월 29일  | 
|   Corretto 8 with Tomcat 7 AL2   |  2022년 6월 29일  | 
|   Node.js 18 AL2   | 2025년 8월 11일 | 
|   Node.js 16 AL2   | 2024년 10월 10일 | 
|   Node.js 14 AL2   |  2024년 10월 10일  | 
|   Node.js 12 AL2   |  2022년 12월 23일  | 
|   Node.js 10 AL2   |  2022년 6월 29일  | 
|   PHP 8.0 AL2  |  2024년 10월 10일  | 
|   PHP 7.4 AL2  |  2023년 6월 9일  | 
|   PHP 7.3 AL2  |  2022년 6월 29일  | 
|   PHP 7.2 AL2  |  2022년 6월 29일  | 
|   Python 3.8 AL2  |  2025년 4월 8일  | 
|   Python 3.7 AL2  |  2024년 10월 10일  | 
|   Ruby 3.0 AL2  |  2024년 10월 10일  | 
|   Ruby 2.7 AL2  |  2024년 10월 10일  | 
|   Ruby 2.6 AL2  |  2022년 12월 23일  | 
|   Ruby 2.5 AL2  |  2022년 6월 29일  | 


**Amazon Linux AMI(AL1)**  

|  런타임 버전/플랫폼 브랜치  |  사용 중지일  | 
| --- | --- | 
|   Single Container Docker   |  2022년 7월 18일  | 
|   Multicontainer Docker   |   2022년 7월 18일   | 
|   Preconfigured Docker - GlassFish 5.0 with Java 8   |   2022년 7월 18일   | 
|   Go 1   |   2022년 7월 18일   | 
|   Java 8   |   2022년 7월 18일   | 
|   Java 7   |   2022년 7월 18일   | 
|   Java 8 with Tomcat 8.5   |   2022년 7월 18일   | 
|   Java 7 with Tomcat 7   |   2022년 7월 18일   | 
|   Node.js   |   2022년 7월 18일   | 
|   PHP 7.2 - 7.3   |   2022년 7월 18일   | 
|   Python 3.6   |   2022년 7월 18일   | 
|  Ruby 2,4, 2.5, 2.6 with Passenger   |   2022년 7월 18일   | 
|   Ruby 2.4, 2.5, 2.6 with Puma  |   2022년 7월 18일   | 
| Go 1.3–1.10 | 2020년 10월 31일 | 
| Java 6 | 2020년 10월 31일 | 
| Node.js 4.x–8.x | 2020년 10월 31일 | 
| PHP 5.4–5.6 | 2020년 10월 31일 | 
| PHP 7.0–7.1 | 2020년 10월 31일 | 
| Python 2.6, 2.7, 3.4 | 2020년 10월 31일 | 
| Ruby 1.9.3 | 2020년 10월 31일 | 
| Ruby 2.0–2.3 | 2020년 10월 31일 | 

**참고**  
 [2022년 7월 18일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html), Elastic Beanstalk는 Amazon Linux AMI(AL1)에 기반한 모든 플랫폼 브랜치의 상태를 **사용 중지**로 설정했습니다. 자세한 내용은 [플랫폼 사용 중지 FAQ](using-features.migration-al.FAQ.md) 단원을 참조하십시오.


**Windows Server**  

| 런타임 버전/플랫폼 브랜치 |  사용 중지일  | 
| --- | --- | 
| 64비트 Windows 서버(및 코어) 2012 R2에서 실행 중인 IIS 8.5 | 2023년 12월 4일 | 
| 64비트 Windows 서버(및 코어) 2012 R2 버전 0.1.0에서 실행 중인 IIS 8.5 |  2022년 6월 29일  | 
| 64비트 Windows 서버(및 코어) 2012 R2 버전 1.2.0에서 실행 중인 IIS 8.5 |  2022년 6월 29일 | 
| 64비트 Windows 서버 2016(및 코어) 버전 1.2.0에서 실행 중인 IIS 10.0 |  2022년 6월 29일 | 
| 64비트 Windows 서버 2012 R1 플랫폼 브랜치에서 실행되는 IIS 8 | 2022년 6월 22일 | 
| 64비트 Windows 서버 2012 R1 버전 0.1.0에서 실행 중인 IIS 8  | 2022년 6월 22일 | 
| 64비트 Windows 서버 2012 R1 버전 1.2.0에서 실행 중인 IIS 8 | 2022년 6월 22일 | 

**참고**  
*Windows 2012 R2* *플랫폼 브랜치 사용 중지에 대한 자세한 내용은AWS Elastic Beanstalk 릴리스 노트에서 [사용 중지된 Windows Server 2012 R2 플랫폼 브랜치](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html)를 참조하세요.*

## 사용 중지된 서버 및 운영 체제 기록
<a name="platforms-support-policy.retired.components"></a>

다음 표에서는 Elastic Beanstalk 플랫폼에서 더 이상 지원되지 않는 운영 체제, 애플리케이션 서버 및 웹 서버의 기록을 제공합니다. 이러한 구성 요소를 활용한 모든 플랫폼 브랜치는 이제 사용 중지됩니다. 날짜는 구성 요소를 포함한 마지막 Elastic Beanstalk 플랫폼 브랜치의 사용 중지 날짜를 반영합니다.


**운영 체제**  

|  OS 버전  |  플랫폼 만료 날짜  | 
| --- | --- | 
|   Windows Server 2012 R2 running IIS 8.5  |  2023년 12월 4일  | 
|   Windows Server Core 2012 R2 running IIS 8.5  |  2023년 12월 4일  | 
|  Amazon Linux AMI(AL1)  |   2022년 7월 18일   | 
| Windows Server 2012 R1 | 2022년 6월 22일 | 
| Windows Server 2008 R2 | 2019년 10월 28일 | 


**애플리케이션 서버**  

|  애플리케이션 서버 버전  |  플랫폼 사용 중지일  | 
| --- | --- | 
| Tomcat 7 |  Amazon Linux 2(AL2) 플랫폼의 경우 2022년 6월 29일 Amazon Linux AMI(AL1) 플랫폼의 경우 2022년 7월 18일  | 
| Tomcat 8 | 2020년 10월 31일 | 
| Tomcat 6 | 2020년 10월 31일 | 


**웹 서버**  

|  웹 서버 버전  |  플랫폼 사용 중지일  | 
| --- | --- | 
| 64비트 Windows 서버에서 실행되는 IIS 8 | 2022년 6월 22일 | 
| Apache HTTP 서버 2.2 | 2020년 10월 31일 | 
| Nginx 1.12.2 | 2020년 10월 31일 | 

# Elastic Beanstalk 지원되는 플랫폼
<a name="concepts.platforms"></a>

AWS Elastic Beanstalk 는 애플리케이션을 빌드할 수 있는 다양한 플랫폼을 제공합니다. 이러한 플랫폼 중 하나를 통해 웹 애플리케이션을 설계하면 Elastic Beanstalk가 선택한 플랫폼 버전에 맞는 코드를 배포하여 활성 애플리케이션 환경을 생성합니다.

Elastic Beanstalk는 하나 이상의 Amazon EC2 인스턴스를 포함하여 애플리케이션을 실행하는 데 필요한 리소스를 프로비저닝합니다. Amazon EC2 인스턴스에서 실행되는 소프트웨어 스택은 사용자의 환경에 대해 선택한 구체적인 플랫폼 버전에 따라 다릅니다.

**플랫폼 브랜치의 솔루션 스택 이름**  
특정 플랫폼 브랜치 버전에 대한 *솔루션 스택 이름*을 사용하여 [EB CLI](eb-cli3.md), [Elastic Beanstalk API](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/) 또는 [AWS CLI](https://aws.amazon.com/cli/)를 사용하여 환경을 시작할 수 있습니다. *AWS Elastic Beanstalk 플랫폼* 가이드에는 [Elastic Beanstalk 지원 플랫폼](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html) 및 [플랫폼 기록](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history.html) 섹션의 플랫폼 브랜치 버전 아래에 *솔루션 스택 이름*이 나열되어 있습니다.

환경을 생성하는 데 사용할 수 있는 모든 솔루션 스택 이름을 검색하려면 AWS CLI의 [ListAvailableSolutionStacks](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html) API 또는 [https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-available-solution-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-available-solution-stacks.html)를 사용합니다.

애플리케이션이 해당 플랫폼에서 사용하는 소프트웨어를 사용자 지정하고 구성할 수 있습니다. 자세한 내용은 [Linux 서버에서 소프트웨어 사용자 지정](customize-containers-ec2.md) 및 [Windows 서버에서 소프트웨어 사용자 지정](customize-containers-windows-ec2.md) 단원을 참조하십시오. 최신 릴리스에 대한 자세한 릴리스 정보는 [AWS Elastic Beanstalk 릴리스 정보](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/)에서 확인할 수 있습니다.

## 지원되는 플랫폼 및 구성 요소 기록
<a name="concepts.platforms.list"></a>

*AWS Elastic Beanstalk 플랫폼 가이드*에는 [Elastic Beanstalk 지원되는 플랫폼](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html) 섹션의 모든 현재 플랫폼 브랜치가 나열되어 있습니다. *플랫폼 가이드*에는 이전 브랜치 플랫폼 버전 목록이 포함된 각 플랫폼의 플랫폼 *기록*도 나열되어 있습니다. 각 플랫폼의 *플랫폼 기록*을 보려면 다음 링크 중 하나를 선택하세요.
+ [Docker](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-docker.html)
+ [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-go.html)
+ [Java SE](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-javase.html)
+ [Tomcat(Java SE 실행)](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-java.html)
+ [Linux의 .NET Core](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnetlinux.html)
+ [Windows Server의 .NET ](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnet.html)
+ [Node.js](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-nodejs.html)
+ [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-php.html)
+ [Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-python.html)
+ [Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-ruby.html)

# Elastic Beanstalk Linux 플랫폼
<a name="platforms-linux"></a>

Elastic Beanstalk Linux 플랫폼은 상당한 양의 기능을 기본으로 제공합니다. 애플리케이션을 지원하기 위해 여러 가지 방법으로 플랫폼을 확장할 수 있습니다. 자세한 내용은 [Elastic Beanstalk Linux 플랫폼 확장](platforms-linux-extend.md) 단원을 참조하십시오.

Elastic Beanstalk가 지원하는 대부분의 플랫폼은 Linux 운영 체제를 기반으로 합니다. 특히 이러한 플랫폼은에서 제공하는 Linux 배포판인 Amazon Linux를 기반으로 합니다 AWS. Elastic Beanstalk Linux 플랫폼은 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용하며 이러한 인스턴스는 Amazon Linux를 실행합니다.

**Topics**
+ [지원되는 Amazon Linux 버전](#platforms-linux.versions)
+ [Elastic Beanstalk Linux 플랫폼 목록](#platforms-linux.list)
+ [인스턴스 배포 워크플로](platforms-linux-extend.workflow.md)
+ [Amazon Linux 2 이상에서 실행되는 ECS의 인스턴스 배포 워크플로](platforms-linux-extend.workflow.ecs-al2.md)
+ [Elastic Beanstalk 환경을 위한 플랫폼 스크립트 도구](custom-platforms-scripts.md)

## 지원되는 Amazon Linux 버전
<a name="platforms-linux.versions"></a>

AWS Elastic Beanstalk 는 Amazon Linux 2 및 Amazon Linux 2023 기반 플랫폼을 지원합니다.

Amazon Linux 2 및 Amazon Linux 2023에 대한 자세한 내용은 다음을 참조하세요:
+ **Amazon Linux 2** - *Amazon EC2 사용 설명서*의 [Amazon Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html)
+ **Amazon Linux 2023** — * Amazon Linux 2023 사용 설명서*의 [아마존 리눅스 2023는 무엇인가요?](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html)

지원되는 플랫폼 버전에 대한 자세한 내용은 [Elastic Beanstalk 지원되는 플랫폼](concepts.platforms.md) 단원을 참조하세요.

**참고**  
Elastic Beanstalk AL1 또는 AL2 플랫폼 브랜치에서 동등한 AL2023 플랫폼 브랜치로 애플리케이션을 마이그레이션할 수 있습니다. 자세한 내용은 [Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2023 또는 Amazon Linux 2로 마이그레이션](using-features.migration-al.md) 단원을 참조하십시오.

### Amazon Linux 2023
<a name="platforms-linux.versions.al2023"></a>

AWS 는 2023년 3월에 Amazon Linux 2023의 [정식 출시](https://aws.amazon.com//blogs/aws/amazon-linux-2023-a-cloud-optimized-linux-distribution-with-long-term-support/)를 발표했습니다. *Amazon Linux 2023 사용 설명서*는 Amazon Linux 2와 Amazon Linux 2023의 주요 차이점을 요약합니다. 자세한 정보는 [Amazon Linux 2 및 Amazon Linux 2023 비교를](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) 참조하세요.

Elastic Beanstalk Amazon Linux 2와 Amazon Linux 2023 플랫폼 간에는 높은 수준의 호환성이 있습니다. 하지만 다음과 같은 몇 가지 차이점이 있습니다:
+ **인스턴스 메타데이터 서비스 버전 1 (IMDSv1)-** - [DisableIMDSv1](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 옵션 설정은 기본적으로 `true`으로 AL2023 플랫폼에서 사용됩니다. 기본값은`false` AL2 플랫폼입니다.
+ **pkg-repo 인스턴스 도구** — 이 [pkg-repo](custom-platforms-scripts.md#custom-platforms-scripts.pkg-repo) 도구는 AL2023 플랫폼에서 실행되는 환경에서 사용할 수 없습니다. 그러나 패키지 및 운영 체제 업데이트를 AL2023 인스턴스에 수동으로 적용할 수 있습니다. 자세한 내용은 *Amazon Linux 2023 사용 설명서의* [패키지 및 운영 체제 업데이트 관리를](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) 참조하십시오.
+ **Apache HTTPd** 설정 — AL2023 플랫폼용 Apache `httpd.conf` 파일에는 AL2와 다른 몇 가지 구성 설정이 있습니다: 
  + 기본적으로 서버의 전체 파일 시스템에 대한 액세스를 거부합니다. 이러한 설정은 Apache 웹 사이트 [보안 팁](https://httpd.apache.org/docs/2.4/misc/security_tips.html) 페이지의 *기본적 서버 파일 보호에* 설명되어 있습니다.
  + 특별히 활성화된 디렉터리를 제외한 모든 디렉터리`.htaccess`에서의 설정에 대한 액세스를 거부합니다. 이 설정은 Apache 웹 사이트 [보안 팁](https://httpd.apache.org/docs/2.4/misc/security_tips.html) 페이지의 *시스템 설정 보호에* 설명되어 있습니다. [Apache HTTP 서버 튜토리얼: .htaccess 파일](https://httpd.apache.org/docs/2.4/howto/htaccess.html) 페이지에는 이 설정이 성능 향상에 도움이 될 수 있음을 설명합니다.
  + 이름 패턴이 있는 파일 `.ht*`에 대한 액세스를 거부합니다. 이 설정은 웹 클라이언트가 `.htaccess` 및 `.htpasswd` 파일을 볼 수 없도록 합니다.

  사용자 환경에 맞게 위의 구성 설정을 변경할 수 있습니다. 자세한 내용은 [Apache HTTPD 설정](platforms-linux-extend.proxy.md#platforms-linux-extend.proxy.httpd) 단원을 참조하십시오.
+ **다중 라인 환경 변수 지원** - AL2023 플랫폼은 시스템 서비스 구성의 환경 변수 및 보안 암호에 대한 다중 라인 값을 지원합니다. Amazon Linux 2 플랫폼은 다중 라인 환경 변수 값을 지원하지 않습니다. 이 개선 사항을 통해 AL2023 플랫폼에서 여러 줄 보안 암호 및 구성 값을 사용할 수 있습니다. 환경 변수 및 보안 암호 사용에 대한 자세한 내용은 섹션을 참조하세요[Amazon Linux 2 환경 변수의 여러 줄 값](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.multiline).
+ **CloudWatch 사용자 지정 로그 전달** - 더 이상 사용되지 않는 CloudWatch Logs 에이전트(`awslogs` 패키지)는 AL2023 플랫폼에서 사용할 수 없습니다. 더 이상 사용되지 않는 `awslogs` 에이전트를 설치하고 사용하는 사용자 지정 로그 전달 구성이 있는 경우 Amazon Linux 2에서 AL2023으로 마이그레이션할 때 통합 CloudWatch 에이전트를 사용하도록 구성 파일을 업데이트해야 합니다. 자세한 내용은 [사용자 지정 로그 파일 스트리밍](AWSHowTo.cloudwatchlogs.md#AWSHowTo.cloudwatchlogs.streaming.custom) 단원을 참조하십시오.

**플랫폼별 차이점**

기본 운영 체제 차이점 외에도 Amazon Linux 2와 AL2023 런타임 플랫폼 간에는 플랫폼별 차이점이 있습니다.
+ **.NET 플랫폼 분기** - .NET 플랫폼 분기 전략은 Amazon Linux 2와 AL2023 간에 다릅니다. Amazon Linux 2에서 .NET Core 플랫폼은 단일 플랫폼 브랜치 내에서 .NET 메이저 버전의 교체 기간을 유지합니다. AL2023에서는 각 플랫폼 브랜치가 특정 .NET 메이저 버전(예: .NET 9, .NET 10)에 고정됩니다.

  프레임워크 종속 애플리케이션(플랫폼에 설치된 .NET 런타임을 사용하는 애플리케이션)을 배포하는 경우 애플리케이션의 대상 .NET 버전과 일치하는 플랫폼 브랜치를 선택해야 합니다. 독립형 애플리케이션(자체 .NET 런타임을 번들링하는 애플리케이션)을 배포하는 경우 애플리케이션이 플랫폼의 설치된 런타임에 종속되지 않으므로 애플리케이션의 .NET 버전에 관계없이 모든 AL2023 .NET 플랫폼 브랜치를 사용할 수 있습니다. 자세한 내용은 [Linux 기반 .NET Core Elastic Beanstalk 플랫폼용 애플리케이션 번들링](dotnet-linux-platform-bundle-app.md) 단원을 참조하십시오.
+ **Node.js 버전 선택** - Amazon Linux 2의 Node.js 플랫폼은 애플리케이션 `package.json` 파일에 Node.js 버전 지정을 지원합니다. AL2023의 Node.js 플랫폼은이 기능을 지원하지 않습니다. 플랫폼 브랜치에서 제공하는 기본 Node.js 버전을 사용해야 합니다. Node.js 버전 관리에 대한 자세한 내용은 섹션을 참조하세요[Elastic Beanstalk에서 애플리케이션 종속성 구성](nodejs-platform-dependencies.md).
+ **Ruby Puma 서버 버전** - Amazon Linux 2의 Ruby 플랫폼은 애플리케이션의 `Gemfile.lock` 파일에 지정된 Puma 버전을 무시하고 플랫폼 기본 Puma 버전을 사용합니다. AL2023의 Ruby 플랫폼은 있는 `Gemfile.lock` 경우에 지정된 Puma 버전을 준수합니다. 버전을 지정하지 않으면 플랫폼이 플랫폼 기본 Puma 버전을 설치합니다.
+ **PHP 패키지 가용성** - Amazon Linux 2 PHP 플랫폼에서 사용할 수 있는 일부 패키지는 AL2023 PHP 플랫폼에서 사용할 수 없습니다.
  + *MySQL 클라이언트 패키지* - `mysql` 및 `mysql-devel` 명령줄 클라이언트 패키지는 AL2023 PHP 플랫폼에 설치되지 않습니다. 애플리케이션에 MySQL 데이터베이스 연결이 필요한 경우 두 플랫폼에서 모두 사용할 수 있는 PHP `mysqli` 또는 `pdo_mysql` 확장을 사용합니다.
  + *Compass 및 Ruby 도구* - Compass CSS 프레임워크 지원을 위한 `ruby-devel` 및 `rubygems` 패키지는 AL2023 PHP 플랫폼에 설치되지 않습니다. Compass는 더 이상 사용되지 않습니다. 대안으로 최신 CSS 사전 처리 도구를 사용하는 것이 좋습니다.
+ **Go 버전 관리 도구** - Bazaar 버전 관리 시스템(`bzr`)은 AL2023 Go 플랫폼에서 사용할 수 없습니다. Bazaar는 더 이상 사용되지 않으며 AL2023 패키지 리포지토리에 포함되지 않습니다. 버전 관리에는 대신 Git, Mercurial 또는 Subversion을 사용합니다.이 모든 기능은 AL2023 Go 플랫폼에서 사용할 수 있습니다.

## Elastic Beanstalk Linux 플랫폼 목록
<a name="platforms-linux.list"></a>

다음 목록에는 Elastic Beanstalk가 다양한 프로그래밍 언어와 Docker 컨테이너에 대해 지원하는 Linux 플랫폼이 나와 있습니다. Elastic Beanstalk는 이들 모두를 위한 Amazon Linux 2 및 Amazon Linux 2023 기반 플랫폼을 제공합니다. 플랫폼에 대해 자세히 알아보려면 해당 링크를 선택하세요.
+ [도커(및 ECS Docker)](create_deploy_docker.md) 
+ [Go](create_deploy_go.md)
+ [Tomcat(Java SE 실행)](create_deploy_Java.md)
+ [Java SE](create_deploy_Java.md)
+ [Linux의 .NET Core](create-deploy-dotnet-core-linux.md)
+ [Node.js](create_deploy_nodejs.md)
+ [PHP](create_deploy_PHP_eb.md)
+ [Python](create-deploy-python-apps.md)
+ [Ruby](create_deploy_Ruby.md)

# 인스턴스 배포 워크플로
<a name="platforms-linux-extend.workflow"></a>

**참고**  
이 섹션의 정보는 *Amazon Linux 2 및 Amazon Linux 2023에서 실행되는 ECS* 플랫폼 브랜치에 적용되지 않습니다. 자세한 내용은 다음 단원 [Amazon Linux 2 이상에서 실행되는 ECS의 인스턴스 배포 워크플로AL 2 이상의 ECS를 위한 인스턴스 배포 워크플로](platforms-linux-extend.workflow.ecs-al2.md) 단원을 참조하십시오.

여러 가지 방법으로 환경 플랫폼을 확장할 수 있으므로 Elastic Beanstalk가 인스턴스를 프로비저닝하거나 인스턴스에 대해 배포를 실행할 때마다 어떤 일이 발생하는지 알면 유용합니다. 다음 다이어그램은 이 전체 배포 워크플로우를 보여줍니다. 배포의 여러 단계와 각 단계에서 Elastic Beanstalk가 수행하는 단계가 나와 있습니다.

**참고**  
다이어그램은 배포 중에 환경 인스턴스에서 Elastic Beanstalk가 실행하는 전체 단계 세트를 나타내지 않습니다. 사용자 지정 실행을 위한 순서와 컨텍스트를 제공하기 위해 이 다이어그램을 제공합니다.
간단하게 설명하기 위해 다이어그램에는 `.platform/hooks/*` 후크 하위 디렉터리(애플리케이션 배포용)만 표시되어 있고 `.platform/confighooks/*` 후크 하위 디렉터리(구성 배포용)는 표시되어 있지 않습니다. 후자의 하위 디렉터리의 후크는 다이어그램에 표시된 해당 하위 디렉터리의 후크와 정확히 동일한 단계에서 실행됩니다.

![\[Amazon Linux 기반 플랫폼에서 실행되는 환경 인스턴스의 확장 실행 순서에 대한 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/platforms-linux-extend-order.png)


다음 목록에서는 배포 단계에 대해 자세히 설명합니다.

1. **초기 단계**

   Elastic Beanstalk는 애플리케이션을 다운로드하고 추출합니다. 이러한 각 단계 후에는 Elastic Beanstalk가 확장성 단계 중 하나를 실행합니다.

   1. 구성 파일의 [commands:](customize-containers-ec2.md#linux-commands) 섹션에 있는 명령을 실행합니다.

   1. 소스 번들의 `.platform/hooks/prebuild` 디렉터리(구성 배포의 경우 `.platform/confighooks/prebuild`)에 있는 모든 실행 파일을 실행합니다.

1. **구성**

   Elastic Beanstalk는 애플리케이션과 프록시 서버를 구성합니다.

   1. 소스 번들의 `Buildfile`에 있는 명령을 실행합니다.

   1. 사용자 지정 프록시 구성 파일(소스 번들의 `.platform/nginx` 디렉터리에 있는 경우)을 런타임 위치로 복사합니다.

   1. 구성 파일의 [container\$1commands:](customize-containers-ec2.md#linux-container-commands) 섹션에 있는 명령을 실행합니다.

   1. 소스 번들의 `.platform/hooks/predeploy` 디렉터리(구성 배포의 경우 `.platform/confighooks/predeploy`)에 있는 모든 실행 파일을 실행합니다.

1. **배포**

   Elastic Beanstalk는 애플리케이션과 프록시 서버를 배포 및 실행합니다.

   1. 소스 번들의 `Procfile` 파일에 있는 명령을 실행합니다.

   1. 사용자 지정 프록시 구성 파일이 있는 경우 프록시 서버를 실행하거나 다시 실행합니다.

   1. 소스 번들의 `.platform/hooks/postdeploy` 디렉터리(구성 배포의 경우 `.platform/confighooks/postdeploy`)에 있는 모든 실행 파일을 실행합니다.

# Amazon Linux 2 이상에서 실행되는 ECS의 인스턴스 배포 워크플로
<a name="platforms-linux-extend.workflow.ecs-al2"></a>

이전 섹션에서는 애플리케케이션 배포 워크플로의 단계에서 지원되는 확장성 기능에 대해 설명합니다. Docker 플랫폼 브랜치 [*Amazon Linux 2 이상에서 실행되는 ECS*](create_deploy_docker_ecs.md)에는 몇 가지 차이점이 있습니다. 이 섹션에서는 이러한 개념이 이 특정 플랫폼 브랜치에 어떻게 적용되는지 설명합니다.

여러 가지 방법으로 환경 플랫폼을 확장할 수 있으므로 Elastic Beanstalk가 인스턴스를 프로비저닝하거나 인스턴스에 대해 배포를 실행할 때마다 어떤 일이 발생하는지 알면 유용합니다. 다음 다이어그램은 *Amazon Linux 2에서 실행되는 ECS* 및 *Amazon Linux 2023에서 실행되는 ECS* 플랫폼 브랜치를 기반으로 한 환경에 대한 이 전체 배포 워크플로를 보여줍니다. 배포의 여러 단계와 각 단계에서 Elastic Beanstalk가 수행하는 단계가 나와 있습니다.

이전 섹션에서 설명한 워크플로와 달리 배포 구성 단계에서는 `Buildfile` 명령, `Procfile` 명령, 역방향 프록시 구성과 같은 확장성 기능을 지원하지 않습니다.

**참고**  
다이어그램은 배포 중에 환경 인스턴스에서 Elastic Beanstalk가 실행하는 전체 단계 세트를 나타내지 않습니다. 사용자 지정 실행을 위한 순서와 컨텍스트를 제공하기 위해 이 다이어그램을 제공합니다.
간단하게 설명하기 위해 다이어그램에는 `.platform/hooks/*` 후크 하위 디렉터리(애플리케이션 배포용)만 표시되어 있고 `.platform/confighooks/*` 후크 하위 디렉터리(구성 배포용)는 표시되어 있지 않습니다. 후자의 하위 디렉터리의 후크는 다이어그램에 표시된 해당 하위 디렉터리의 후크와 정확히 동일한 단계에서 실행됩니다.

![\[ECS 기반 Docker 플랫폼의 환경 인스턴스에서 확장 실행 순서를 위한 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/platform-ecs-al2-extended-order.png)


다음 목록에서는 배포 워크플로 단계에 대해 자세히 설명합니다.

1. `EBhooksDir`의 `appdeploy/pre` 디렉터리에 있는 모든 실행 파일을 실행합니다.

1. 소스 번들의 `.platform/hooks/prebuild` 디렉터리(구성 배포의 경우 `.platform/confighooks/prebuild`)에 있는 모든 실행 파일을 실행합니다.

1. 소스 번들의 `.platform/hooks/predeploy` 디렉터리(구성 배포의 경우 `.platform/confighooks/predeploy`)에 있는 모든 실행 파일을 실행합니다.

1. `EBhooksDir`의 `appdeploy/enact` 디렉터리에 있는 모든 실행 파일을 실행합니다.

1. `EBhooksDir`의 `appdeploy/post` 디렉터리에 있는 모든 실행 파일을 실행합니다.

1. 소스 번들의 `.platform/hooks/postdeploy` 디렉터리(구성 배포의 경우 `.platform/confighooks/postdeploy`)에 있는 모든 실행 파일을 실행합니다.

`EBhooksDir`에 대한 참조는 플랫폼 후크 디렉터리의 경로를 나타냅니다. 디렉터리 경로 이름을 검색하려면 다음에 표시된 환경 인스턴스의 명령줄에 있는 [get-config](custom-platforms-scripts.md#custom-platforms-scripts.get-config) 스크립트 도구를 사용합니다.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k EBhooksDir
```

# Elastic Beanstalk 환경을 위한 플랫폼 스크립트 도구
<a name="custom-platforms-scripts"></a>

이 주제에서는가 Amazon Linux 플랫폼을 사용하는 환경에 AWS Elastic Beanstalk 제공하는 도구에 대해 설명합니다. 이 도구는 Elastic Beanstalk 환경의 Amazon EC2 인스턴스에 있습니다.

## get-config
<a name="custom-platforms-scripts.get-config"></a>

`get-config` 도구를 사용하면 일반 텍스트 환경 변수 값과 기타 플랫폼 및 인스턴스 정보를 검색할 수 있습니다. 이 도구는 `/opt/elasticbeanstalk/bin/get-config`에 있습니다.

### get-config 명령
<a name="custom-platforms-scripts.get-config.commands"></a>

각 `get-config` 도구 명령은 특정 유형의 정보를 반환합니다. 다음 구문을 사용하여 도구의 명령을 실행합니다.

```
$ /opt/elasticbeanstalk/bin/get-config command [ options ]
```

다음 예제에서는 `environment` 명령을 실행합니다.

```
$ /opt/elasticbeanstalk/bin/get-config environment -k PORT
```

선택한 명령 및 옵션에 따라 도구에서 키-값 페어나 단일 값이 있는 객체(JSON 또는 YAML)가 반환됩니다.

SSH를 사용해 Elastic Beanstalk 환경의 EC2 인스턴스에 연결하여 `get-config`를 테스트할 수 있습니다.

**참고**  
테스트용으로 `get-config`를 실행할 때 일부 명령의 경우 기본 정보에 액세스하기 위해 루트 사용자 권한이 필요할 수 있습니다. 액세스 권한 오류가 발생하면 `sudo`로 명령을 다시 실행합니다.  
환경에 배포하는 스크립트에서 이 도구를 사용할 때는 `sudo`를 추가할 필요가 없습니다. Elastic Beanstalk가 모든 스크립트를 루트 사용자로 실행합니다.

다음 단원에서는 도구의 명령에 대해 설명합니다.

#### optionsettings - 구성 옵션
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

`get-config optionsettings` 명령은 환경에 설정되고 환경 인스턴스의 플랫폼에서 사용되는 구성 옵션을 나열하는 객체를 반환합니다. 구성 옵션들은 네임스페이스별로 구성됩니다.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}
```

특정 구성 옵션 값을 반환하려면 `--namespace`(`-n`) 옵션을 사용하여 네임스페이스를 지정하고 `--option-name`(`-o`) 옵션을 사용하여 옵션 이름을 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit
256M
```

#### environment - 환경 속성
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

`get-config environment` 명령은 사용자 구성 속성과 Elastic Beanstalk에서 제공한 속성을 포함한 환경 속성 목록이 포함된 객체를 반환합니다. 사용자가 구성한 속성은 [콘솔](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console)에서 *일반 텍스트* 또는 구성 옵션 네임스페이스 [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)와 함께 정의됩니다.

```
$ /opt/elasticbeanstalk/bin/get-config environment
{"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}
```

예를 들어 Elastic Beanstalk는 통합 Amazon RDS DB 인스턴스에 연결하기 위한 환경 속성(예: `RDS_HOSTNAME`)을 제공합니다. 이러한 RDS 연결 속성은 `get-config environment`의 출력에 나타납니다. 그러나 해당 속성은 `get-config optionsettings`의 출력에 표시되지 않습니다. 이는 해당 속성들이 구성 옵션에서 설정되지 않았기 때문입니다.

특정 환경 속성을 반환하려면 `--key`(`-k`) 옵션을 사용하여 속성 키를 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY
testvalue
```

**참고**  
`get-config` 도구는 [보안 암호를 저장하는 환경 변수](AWSHowTo.secrets.env-vars.md)를 조회할 수 없습니다. 보안 암호 또는 파라미터 스토어에서 값을 프로그래밍 방식으로 조회하는 방법에 대한 자세한 내용은 [ Secrets Manager 사용](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager) 또는[Systems Manager 파라미터 스토어 사용](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store) 섹션을 참조하세요.

#### container - 온인스턴스 구성 값
<a name="custom-platforms-scripts.get-config.commands.container"></a>

`get-config container` 명령은 환경 인스턴스에 대한 플랫폼 및 환경 구성 값을 나열하는 객체를 반환합니다.

다음 예는 Amazon Linux 2 Tomcat 환경에서 이 명령에 대한 출력을 보여줍니다.

```
$ /opt/elasticbeanstalk/bin/get-config container
{"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}
```

특정 키의 값을 반환하려면 `--key`(`-k`) 옵션을 사용하여 키를 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config container -k environment_name
myenv-1da84946
```

#### addons - 추가 기능 구성 값
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

`get-config addons` 명령은 환경 추가 기능의 구성 정보가 포함된 객체를 반환합니다. 이 명령을 사용하여 환경에 연결된 Amazon RDS 데이터베이스의 구성을 검색합니다.

```
$ /opt/elasticbeanstalk/bin/get-config addons
{"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}
```

두 가지 방법으로 결과를 제한할 수 있습니다. 특정 추가 기능에 대한 값을 검색하려면 `--add-on`(`-a`) 옵션을 사용하여 추가 기능 이름을 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds
{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}
```

추가 기능 내의 특정 키 값을 반환하려면 `--key`(`-k`) 옵션을 추가하여 키를 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME
ebdb
```

#### platformconfig - 동일 구성 값
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

`get-config platformconfig` 명령은 플랫폼 버전별로 동일한 플랫폼 구성 정보가 포함된 객체를 반환합니다. 출력은 동일한 플랫폼 버전을 실행하는 모든 환경에서 동일합니다. 이 명령에 대한 출력 객체에는 다음과 같은 두 임베디드 객체가 있습니다.
+ `GeneralConfig` - 모든 Amazon Linux 2 및 Amazon Linux 2023 플랫폼 브랜치의 최신 버전에서 동일한 정보를 포함합니다.
+ `PlatformSpecificConfig` - 특정 플랫폼 버전에 해당하는 동일한 정보를 포함합니다.

다음 예에서는 *Corretto 11을 실행하는 Tomcat 8.5* 플랫폼 브랜치를 사용하는 환경의 명령에 대한 출력을 보여줍니다.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig
{"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}
```

특정 키의 값을 반환하려면 `--key`(`-k`) 옵션을 사용하여 키를 지정합니다. 이러한 키는 두 임베디드 객체에서 고유합니다. 키가 포함된 객체는 지정할 필요가 없습니다.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir
/var/app/staging/
```

### get-config output 옵션
<a name="custom-platforms-scripts.get-config.global"></a>

`--output` 옵션을 사용하여 출력 객체 형식을 지정합니다. 유효한 값은 `JSON`(기본값) 및 `YAML`입니다. 이는 전역 옵션입니다. 명령 이름 앞에 지정해야 합니다.

다음 예에서는 YAML 형식의 구성 옵션 값을 반환합니다.

```
$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings
aws:elasticbeanstalk:application:environment:
  JDBC_CONNECTION_STRING: ""
aws:elasticbeanstalk:container:tomcat:jvmoptions:
  JVM Options: ""
  Xms: 256m
  Xmx: 256m
aws:elasticbeanstalk:environment:proxy:
  ProxyServer: nginx
  StaticFiles:
        - ""
aws:elasticbeanstalk:healthreporting:system:
  SystemType: enhanced
aws:elasticbeanstalk:hostmanager:
  LogPublicationControl: "false"
```

## pkg-repo
<a name="custom-platforms-scripts.pkg-repo"></a>

**참고**  
이`pkg-repo` 도구는 Amazon 리눅스 2023 플랫폼 기반 환경에서는 사용할 수 없습니다. 하지만 패키지 및 운영 체제 업데이트를 AL2023 인스턴스에 수동으로 적용할 수 있습니다. 자세한 내용은 *Amazon Linux 2023 사용 설명서의* [패키지 및 운영 체제 업데이트 관리를](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) 참조하십시오

몇몇 긴급한 상황에서는 필수 Elastic Beanstalk 플랫폼 버전과 함께 아직 릴리스되지 않은 Amazon Linux 2 보안 패치를 사용하여 Amazon EC2 인스턴스를 업데이트해야 할 수 있습니다. 기본적으로 Elastic Beanstalk 환경에서 수동 업데이트를 수행할 수 없습니다. 이는 플랫폼 버전이 Amazon Linux 2 리포지토리의 특정 버전으로 잠겨 있기 때문입니다. 이 잠금은 인스턴스가 지원 대상에 해당하고 일관된 소프트웨어 버전을 실행하도록 합니다. 긴급한 경우 `pkg-repo` 도구를 사용하면 yum 패키지를 새로운 Elastic Beanstalk 플랫폼 버전에 릴리스되기 전에 환경에 설치해야 하는 경우 Amazon Linux 2에서 yum 패키지를 수동으로 업데이트할 수 있는 해결책을 활용할 수 있습니다.

Amazon Linux 2 플랫폼의 `pkg-repo` 도구는 `yum` 패키지 리포지토리를 잠금 해제하는 기능을 제공합니다. 그런 다음 보안 패치에 대한 **yum update**를 수동으로 수행할 수 있습니다. 반대로 추가 업데이트를 방지하기 위해 도구를 사용하여 yum 패키지 리포지토리를 잠가 업데이트를 따를 수 있습니다. 이 `pkg-repo` 도구는 Elastic Beanstalk 환경에 있는 모든 EC2 인스턴스의 `/opt/elasticbeanstalk/bin/pkg-repo` 디렉터리에서 사용할 수 있습니다.

`pkg-repo` 도구를 사용한 변경은 도구가 사용되는 EC2 인스턴스에서만 이루어집니다. 해당 변경은 다른 인스턴스에 영향을 주거나 환경에 대한 향후 업데이트를 방지하지 않습니다. 이 주제의 뒷부분에서 제공되는 예제에서는 스크립트 및 구성 파일에서 `pkg-repo` 명령을 호출하여 변경 사항을 모든 인스턴스에 적용하는 방법을 설명합니다.

**주의**  
대부분의 사용자에게는 이 도구를 권장하지 않습니다. 잠금 해제된 플랫폼 버전에 적용된 수동 변경은 모두 대역 외로 간주됩니다. 이 옵션은 다음과 같은 위험을 감수할 수 있는 긴급한 상황에 있는 사용자만 이용할 수 있습니다.  
패키지 버전은 환경의 모든 인스턴스에서 일관성을 보장할 수 없습니다.
`pkg-repo` 도구를 사용하여 수정된 환경은 정상적인 작동이 보장되지 않습니다. 해당 환경은 Elastic Beanstalk가 지원하는 플랫폼에서 테스트 및 확인되지 않았습니다.
테스트 및 취소 계획을 포함하는 모범 사례를 적용하는 것을 권장합니다. 모범 사례가 원활히 적용될 수 있도록, Elastic Beanstalk 콘솔 및 EB CLI를 사용하여 환경을 복제하고 환경 URL을 바꿀 수 있습니다. 이러한 작업 사용에 대한 자세한 내용은, 이 가이드에 포함된 *환경 관리* 장의 [블루/그린 배포](using-features.CNAMESwap.md)를 참조하세요.

yum 리포지토리 구성 파일을 수동으로 편집하려는 경우 우선 `pkg-repo` 도구를 실행하십시오. `pkg-repo` 도구는 yum 리포지토리 구성 파일을 수동으로 편집한 Amazon Linux 2 환경에서 의도한 대로 작동하지 않을 수 있습니다. 이는 해당 도구가 구성 변경을 인식하지 못할 수 있기 때문입니다.

Amazon Linux 패키지 리포지토리에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [패키지 리포지토리](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository) 주제를 참조하세요.

### pkg-repo 명령
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

다음 구문을 사용하여 `pkg-repo` 도구 명령을 실행합니다.

```
$ /opt/elasticbeanstalk/bin/pkg-repo command [options]
```

다음은 `pkg-repo` 명령입니다.
+ **lock** – `yum` 패키지 리포지토리를 특정 버전으로 잠급니다.
+ **unlock** – `yum` 패키지 리포지토리를 특정 버전에서 잠금 해제합니다.
+ **status** – `yum` 패키지 리포지토리 및 현재 잠금 상태를 모두 나열합니다.
+ **help** – 일반적인 도움말 또는 하나의 명령에 대한 도움말을 표시합니다.

옵션은 다음과 같이 명령에 적용됩니다.
+ `lock`, `unlock` 및 `status ` – 옵션: `-h`, `--help` 또는 없음(기본값)
+ `help` – 옵션: `lock`, `unlock`, `status`, 또는 없음(기본값)



다음 예제에서는 **unlock** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock
Amazon Linux 2 core package repo successfully unlocked
Amazon Linux 2 extras package repo successfully unlocked
```

다음 예제에서는 **lock** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock
Amazon Linux 2 core package repo successfully locked
Amazon Linux 2 extras package repo successfully locked
```

다음 예제에서는 **status** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo status
Amazon Linux 2 core package repo is currently UNLOCKED
Amazon Linux 2 extras package repo is currently UNLOCKED
```

다음 예제에서는 **lock** 명령에 대한 **help** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock
```

다음 예제에서는 `pkg-repo` 도구에 대한 **help** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help
```

SSH를 사용해 Elastic Beanstalk 환경의 인스턴스에 연결하여 `pkg-repo`를 테스트할 수 있습니다. SSH 옵션 중 하나는 EB CLI [**eb ssh**](eb3-ssh.md) 명령입니다.

**참고**  
이 `pkg-repo` 도구를 실행하려면 루트 사용자 권한이 필요합니다. 액세스 권한 오류가 발생하면 `sudo`로 명령을 다시 실행합니다.  
환경에 배포하는 스크립트 또는 구성 파일에서 이 도구를 사용할 때는 `sudo`를 추가할 필요가 없습니다. Elastic Beanstalk가 모든 스크립트를 루트 사용자로 실행합니다.

### pkg-repo 예제
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

이전 섹션은 Elastic Beanstalk 환경의 개별 EC2 인스턴스에서 테스트하기 위한 명령줄 예제를 제공합니다. 이러한 접근 방식은 테스트에 도움이 될 수 있습니다. 그러나 이 방식은 한 번에 하나의 인스턴스만 업데이트하므로 환경의 모든 인스턴스에 변경 사항을 적용하는 경우에는 실용적이지 않습니다.

보다 실용적인 접근 방식은 [플랫폼 후크](platforms-linux-extend.hooks.md) 스크립트 또는 [`.ebextensions`](ebextensions.md) 구성 파일을 사용하여 모든 인스턴스에 일관된 방식으로 변경 사항을 적용하는 것입니다.

다음 예제는 [`.ebextensions`](ebextensions.md) 폴더의 구성 파일에서 `pkg-repo`를 호출합니다. Elastic Beanstalk는 애플리케이션 소스 번들을 배포할 때 `update_package.config` 파일의 명령을 실행합니다.

```
.ebextensions
└── update_package.config
```

최신 버전의 *도커* 패키지를 수신하기 위해 이 구성은 **yum update** 명령에 *도커* 패키지를 지정합니다.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update docker -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

이 구성은 **yum update** 명령에 어떤 패키지도 지정하지 않습니다. 사용 가능한 모든 업데이트가 결과로 적용됩니다.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

다음 예제는 bash 스크립트에서 [플랫폼 후크](platforms-linux-extend.hooks.md)로 `pkg-repo`를 호출합니다. Elastic Beanstalk는 `prebuild` 하위 디렉터리에 있는 `update_package.sh` 스크립트 파일을 실행합니다.

```
.platform
└── hooks
    └── prebuild
        └── update_package.sh
```

최신 버전의 *도커* 패키지를 수신하기 위해 이 스크립트는 **yum update** 명령에 *도커* 패키지를 지정합니다. 패키지 이름을 생략하면 사용 가능한 업데이트가 모두 적용됩니다. 이전 구성 파일 예제는 이에 대해 설명합니다.

```
### update_package.sh ###

#!/bin/bash

/opt/elasticbeanstalk/bin/pkg-repo unlock
yum update docker -y
/opt/elasticbeanstalk/bin/pkg-repo lock
yum clean all -y
rm -rf /var/cache/yum
```

## download-source-bundle(Amazon Linux AMI에만 해당)
<a name="custom-platforms-scripts.download"></a>

Amazon Linux AMI 플랫폼 브랜치(이전 Amazon Linux 2)에서 Elastic Beanstalk는 추가 도구인 `download-source-bundle`을 제공합니다. 이 도구를 사용하여 플랫폼 배포 시 애플리케이션 소스 코드를 다운로드합니다. 이 도구는 `/opt/elasticbeanstalk/bin/download-source-bundle`에 있습니다.

환경 인스턴스의 `appdeploy/pre` 폴더에 예제 스크립트 `00-unzip.sh`가 있습니다. 이는 배포 시 `download-source-bundle`을 사용하여 애플리케이션 소스 코드를 `/opt/elasticbeanstalk/deploy/appsource` 폴더에 다운로드하는 방법을 보여줍니다.

# Elastic Beanstalk Linux 플랫폼 확장
<a name="platforms-linux-extend"></a>

이 주제에서는 자체 명령, 스크립트, 소프트웨어 및 구성을 사용하여 Linux 플랫폼을 확장하는 방법을 설명합니다. 기본 프록시 서버 및 구성을 변경하기 위해 플랫폼을 확장해야 할 수 있습니다. 또는 플랫폼이 애플리케이션을 빌드하거나 시작하는 방법을 사용자 지정해야 할 수 있습니다.

**Topics**
+ [Buildfile 및 Procfile](platforms-linux-extend.build-proc.md)
+ [플랫폼 후크](platforms-linux-extend.hooks.md)
+ [구성 파일](platforms-linux-extend.config-files.md)
+ [역방향 프록시 구성](platforms-linux-extend.proxy.md)
+ [확장자가 있는 애플리케이션 예제](platforms-linux-extend.example.md)

# Buildfile 및 Procfile
<a name="platforms-linux-extend.build-proc"></a>

일부 플랫폼에서는 애플리케이션을 빌드하거나 준비하는 방법을 사용자 지정하고 애플리케이션을 실행하는 프로세스를 지정할 수 있습니다. 각 개별 플랫폼 주제에서는 플랫폼에서 지원하는 경우 *Buildfile* 및/또는 *Procfile*에 대해 구체적으로 설명되어 있습니다. [Elastic Beanstalk 플랫폼](concepts-all-platforms.md)에서 특정 플랫폼을 찾습니다.

모든 지원 플랫폼에서 구문 및 의미는 동일하며 이 페이지의 설명과 같습니다. 애플리케이션을 해당 언어로 빌드하여 실행하기 위한 이러한 파일의 구체적인 사용법은 개별 플랫폼 항목에 나와 있습니다.

## Buildfile
<a name="platforms-linux-extend.build"></a>

애플리케이션에 대한 사용자 지정 빌드 및 구성 명령을 지정하려면 애플리케이션 소스의 루트 디렉터리에 `Buildfile`이라는 파일을 배치합니다. 파일 이름은 대/소문자를 구분합니다. `Buildfile`에 대해 다음 구문을 사용합니다.

```
<process_name>: <command>
```

`Buildfile`의 명령은 `^[A-Za-z0-9_-]+:\s*[^\s].*$` 정규식과 일치해야 합니다.

Elastic Beanstalk는 `Buildfile`을 통해 실행되는 애플리케이션을 모니터링하지 않습니다. 단기간 실행되고 작업 완료 후 종료되는 명령에는 `Buildfile`을 사용합니다. 종료하면 안 되는 장기 실행 애플리케이션 프로세스의 경우 [Procfile](#platforms-linux-extend.proc)을 사용합니다.

`Buildfile`의 모든 경로는 소스 번들의 루트에 상대적입니다. 다음 `Buildfile` 예제에서 `build.sh`는 소스 번들의 루트에 위치한 셸 스크립트입니다.

**Example Buildfile**  

```
make: ./build.sh
```

사용자 지정 빌드 단계를 제공하려는 경우 가장 간단한 명령 이외의 작업에는 `Buildfile` 대신 `predeploy` 플랫폼 후크를 사용하는 것이 좋습니다. 플랫폼 후크는 다양한 스크립트와 더 향상된 오류 처리를 허용합니다. 플랫폼 후크는 다음 섹션에서 설명합니다.

## Procfile
<a name="platforms-linux-extend.proc"></a>

애플리케이션을 시작하고 실행하기 위한 사용자 지정 명령을 지정하려면 애플리케이션 소스의 루트 디렉터리에 `Procfile`이라는 파일을 배치합니다. 파일 이름은 대/소문자를 구분합니다. `Procfile`에 대해 다음 구문을 사용합니다. 하나 이상의 명령을 지정할 수 있습니다.

```
<process_name1>: <command1>
<process_name2>: <command2>
...
```

`Procfile`의 각 줄은 `^[A-Za-z0-9_-]+:\s*[^\s].*$` 정규식과 일치해야 합니다.

종료하면 안 되는 장기 실행 애플리케이션 프로세스의 경우 `Procfile`을 사용합니다. Elastic Beanstalk는 프로세스가 `Procfile`에서 계속 실행될 것으로 기대합니다. Elastic Beanstalk는 이러한 프로세스를 모니터링하고 종료되는 프로세스를 다시 시작합니다. 단기 실행 프로세스의 경우 [Buildfile](#platforms-linux-extend.build)을 사용합니다.

`Procfile`의 모든 경로는 소스 번들의 루트에 상대적입니다. 다음 예제 `Procfile`은 세 가지 프로세스를 정의합니다. 예제의 첫 줄에 있는 `web`은 *기본 웹 애플리케이션*입니다.

**Example Procfile**  

```
web: bin/myserver
cache: bin/mycache
foo: bin/fooapp
```

Elastic Beanstalk는 포트 5000의 주 웹 애플리케이션에 요청을 전달하도록 프록시 서버를 구성하며 이 포트 번호를 구성할 수 있습니다. `Procfile`의 일반적인 용도는 이 포트 번호를 애플리케이션에 명령 인수로 전달하는 것입니다. 프록시 구성에 대한 자세한 내용은 [역방향 프록시 구성](platforms-linux-extend.proxy.md) 단원을 참조하세요.

Elastic Beanstalk는 로그 파일의 `Procfile` 프로세스에서 표준 출력 및 오류 스트림을 캡처합니다. Elastic Beanstalk는 프로세스의 이름을 따서 로그 파일의 이름을 지정하고 `/var/log`에 저장합니다 예를 들어 앞의 예제에서 `web` 프로세스는 `web-1.log` 및 `web-1.error.log`에 대해 각각 `stdout` 및 `stderr`라는 로그를 생성합니다.

# 플랫폼 후크
<a name="platforms-linux-extend.hooks"></a>

플랫폼 후크는 환경의 플랫폼을 확장하도록 특별히 설계되었습니다. 플랫폼 후크는 애플리케이션 소스 코드의 일부로 배포되는 사용자 지정 스크립트 및 기타 실행 파일로서 다양한 인스턴스 프로비저닝 단계에서 Elastic Beanstalk에 의해 실행됩니다.

**참고**  
Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)에서는 플랫폼 후크가 지원되지 않습니다.

## 애플리케이션 배포 플랫폼 후크
<a name="platforms-linux-extend.hooks.appdeploy"></a>

*애플리케이션 배포*는 배포할 새 소스 번들을 제공하거나 모든 환경 인스턴스를 종료하고 재생성해야 하는 구성 변경을 수행할 때 발생합니다.

애플리케이션 배포 중에 실행되는 플랫폼 후크를 제공하려면 소스 번들의 `.platform/hooks` 디렉터리 아래에 있는 다음 하위 디렉터리 중 하나에 파일을 배치합니다.
+ `prebuild` - 파일은 Elastic Beanstalk 플랫폼 엔진이 애플리케이션 소스 번들을 다운로드하고 추출한 후 애플리케이션과 웹 서버를 설정하고 구성하기 전에 실행됩니다.

  `prebuild` 파일은 구성 파일의 [commands](customize-containers-ec2.md#linux-commands) 섹션에 있는 명령을 실행한 후 `Buildfile` 명령을 실행하기 전에 실행됩니다.
+ `predeploy` - 파일은 Elastic Beanstalk 플랫폼 엔진이 애플리케이션 및 웹 서버를 설정하고 구성한 후 최종 런타임 위치에 배포하기 전에 실행됩니다.

  `predeploy` 파일은 구성 파일의 [container\$1commands](customize-containers-ec2.md#linux-container-commands) 섹션에 있는 명령을 실행한 후 `Procfile` 명령을 실행하기 전에 실행됩니다.
+ `postdeploy` - 파일은 Elastic Beanstalk 플랫폼 엔진이 애플리케이션 및 프록시 서버를 배포한 후에 실행됩니다.

  이것이 마지막 배포 워크플로우 단계입니다.

## 구성 배포 플랫폼 후크
<a name="platforms-linux-extend.hooks.configdeploy"></a>

*구성 배포*는 환경 인스턴스를 다시 만들지 않고 단지 업데이트하는 구성 변경을 수행할 때 발생합니다. 다음 옵션 업데이트 시 구성 업데이트가 이루어집니다.
+ [환경 속성 및 플랫폼별 설정](environments-cfg-softwaresettings.md)
+ [정적 파일](environment-cfg-staticfiles.md)
+ [AWS X-Ray 데몬](environment-configuration-debugging.md)
+ [로그 저장 및 스트리밍](environments-cfg-logging.md)
+ 애플리케이션 포트(자세한 내용은 [역방향 프록시 구성](platforms-linux-extend.proxy.md) 참조)

구성 배포 중에 실행되는 후크를 제공하려면 소스 번들의 `.platform/confighooks` 디렉터리 아래에 후크를 배치합니다. 애플리케이션 배포 후크의 경우와 동일한 세 개의 하위 디렉터리가 적용됩니다.

## 플랫폼 후크에 대한 자세한 정보
<a name="platforms-linux-extend.hooks.more"></a>

후크 파일은 이진 파일 또는 해당 인터프리터 경로를 포함하는 `#!` 줄(`#!/bin/bash`)로 시작하는 스크립트 파일일 수 있습니다. 모든 파일에 실행 권한이 있어야 합니다. 후크 파일에 대한 실행 권한을 설정하려면 `chmod +x`를 사용합니다. 2022년 4월 29일 이후에 릴리스된 모든 Amazon Linux 2023 및 Amazon Linux 2 기반 플랫폼 버전의 경우 Elastic Beanstalk가 모든 플랫폼 후크 스크립트에 실행 권한을 자동으로 부여합니다. 이 경우 실행 권한을 수동으로 부여할 필요가 없습니다. 이러한 플랫폼 버전 목록은 *AWS Elastic Beanstalk 릴리스 정보 가이드*의 [2022년 4월 29일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-04-29-linux.html#release-2022-04-29-linux.platforms) Linux 릴리스 정보를 참조하세요.

Elastic Beanstalk는 파일 이름의 사전 순서에 따라 각 디렉터리의 파일을 실행합니다. 모든 파일은 `root` 사용자로 실행됩니다. 플랫폼 후크의 현재 작업 디렉터리(cwd)는 애플리케이션의 루트 디렉터리입니다. `prebuild` 및 `predeploy` 파일의 경우 애플리케이션 스테이징 디렉터리이고 `postdeploy` 파일의 경우 현재 애플리케이션 디렉터리입니다. 파일 중 하나가 실패하면(0이 아닌 종료 코드로 종료) 배포가 중단되고 실패합니다.

Windows *캐리지 리턴/줄 바꿈*(CRLF) 줄 바꿈 문자가 포함된 경우 플랫폼 후크 텍스트 스크립트가 실패할 수 있습니다. 파일이 Windows 호스트에 저장된 후 Linux 서버로 전송된 경우 파일에 Windows CRLF 줄 바꿈이 포함될 수 있습니다. [2022년 12월 29일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-12-29-linux.html) 이후에 릴리스된 플랫폼의 경우 Elastic Beanstalk는 플랫폼 후크 텍스트 파일에서 Windows CRLF 문자를 Linux *줄 바꿈*(LF) 줄 바꿈 문자로 자동 변환합니다. 애플리케이션이 이 날짜 이전에 릴리스된 Amazon Linux 2 플랫폼에서 실행되는 경우 Windows CRLF 문자를 Linux LF 문자로 변환해야 합니다. 이 작업을 수행하는 한 가지 방법은 스크립트 파일을 만들어 Linux 호스트에 저장하는 것입니다. 이러한 문자를 변환하는 도구는 인터넷에서도 찾아볼 수 있습니다.

후크 파일은 애플리케이션 옵션에서 정의한 모든 환경 속성 및 시스템 환경 변수 `HOME`, `PATH` 및 `PORT`에 액세스할 수 있습니다.

환경 변수 및 기타 구성 옵션의 값을 플랫폼 후크 스크립트로 가져오려는 경우 환경 인스턴스에서 Elastic Beanstalk가 제공하는 `get-config` 유틸리티를 사용할 수 있습니다. 자세한 내용은 [Elastic Beanstalk 환경을 위한 플랫폼 스크립트 도구](custom-platforms-scripts.md) 단원을 참조하십시오.

# 구성 파일
<a name="platforms-linux-extend.config-files"></a>

애플리케이션 소스 코드의 `.ebextensions` 디렉터리에 [구성 파일](ebextensions.md)을 추가하여 Elastic Beanstalk 환경의 다양한 측면을 구성할 수 있습니다. 구성 파일을 사용하면 환경 인스턴스에서 소프트웨어 및 기타 파일을 사용자 지정하고 인스턴스에서 초기화 명령을 실행할 수 있습니다. 자세한 내용은 [Linux 서버에서 소프트웨어 사용자 지정](customize-containers-ec2.md)을(를) 참조하세요.

구성 파일을 사용하여 [구성 옵션](command-options.md)을 설정할 수도 있습니다. 플랫폼 동작을 제어하는 옵션에는 여러 가지가 있으며 이러한 옵션 중 일부는 [플랫폼에 따라 다릅니다](command-options-specific.md).

Amazon Linux 2 및 Amazon Linux 2023 기반 플램폼의 경우 *Buildfile*, *Procfile* 및 *플랫폼 후크*를 사용하여 인스턴스 프로비저닝 중에 환경 인스턴스에서 사용자 지정 코드를 구성하고 실행하는 것이 좋습니다. 이러한 메커니즘은 이 페이지의 이전 섹션에 설명되어 있습니다. `.ebextensions` 구성 파일에서 명령과 컨테이너 명령을 계속 사용할 수 있지만 작업하기가 쉽지 않습니다. 예를 들어, YAML 파일 내에 명령 스크립트를 작성하는 것은 구문 관점에서 어려울 수 있습니다. AWS CloudFormation 리소스에 대한 참조가 필요한 스크립트에는 `.ebextensions` 구성 파일을 사용해야 합니다.

# 역방향 프록시 구성
<a name="platforms-linux-extend.proxy"></a>

모든 Amazon Linux 2 및 Amazon Linux 2023 플랫폼 버전은 nginx를 기본 역방향 프록시 서버로 사용합니다. Tomcat, Node.js, PHP 및 Python 플랫폼은 Apache HTTPD도 대안으로 지원합니다. 이러한 플랫폼에서 Apache를 선택하려면 `aws:elasticbeanstalk:environment:proxy` 네임스페이스의 `ProxyServer` 옵션을 `apache`로 설정합니다. 모든 플랫폼에서는 이 단원에 설명된 것처럼 일관된 방식으로 프록시 서버를 구성할 수 있습니다.

**참고**  
Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)에서는 프록시 서버를 다르게 구성해야 할 수 있습니다. 레거시 세부 정보는 이 가이드의 [해당 플랫폼 항목](concepts-all-platforms.md)에서 확인할 수 있습니다.

Elastic Beanstalk는 환경의 루트 URL(예: `http://my-env.elasticbeanstalk.com`)에 있는 기본 웹 애플리케이션으로 웹 트래픽을 전달하도록 환경 인스턴스에서 프록시 서버를 구성합니다.

기본적으로 Elastic Beanstalk는 포트 80에서 수신되는 요청을 포트 5000의 기본 웹 애플리케이션에 전달하도록 프록시를 구성합니다. 다음 예제와 같이 구성 파일에서 [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) 네임스페이스를 사용하는 `PORT` 환경 속성을 설정하여 이 포트 번호를 구성할 수 있습니다.

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  <main_port_number>
```

애플리케이션의 환경 변수 설정에 대한 자세한 내용은 [옵션 설정](ebextensions-optionsettings.md)을 참조하십시오.

애플리케이션은 프록시에 구성된 포트에서 수신 대기해야 합니다. `PORT` 환경 속성을 사용하여 기본 포트를 변경하면 코드에서 `PORT` 환경 변수의 값을 읽어 해당 포트에 액세스할 수 있습니다. 예를 들어 Go에서 `os.Getenv("PORT")`를 호출하거나 Java에서 `System.getenv("PORT")`를 호출합니다. 여러 애플리케이션 프로세스로 트래픽을 보내도록 프록시를 구성하는 경우 여러 환경 속성을 구성하고 프록시 구성 및 애플리케이션 코드 모두에서 해당 값을 사용할 수 있습니다. 또 다른 옵션은 포트 값을 `Procfile`의 명령 인수로 프로세스에 전달하는 것입니다. 자세한 내용은 [Buildfile 및 Procfile](platforms-linux-extend.build-proc.md)을 참조하세요.

## nginx 구성
<a name="platforms-linux-extend.proxy.nginx"></a>

Elastic Beanstalk는 nginx를 기본 역방향 프록시로 사용하여 애플리케이션을 Elastic Load Balancing 로드 밸런서에 매핑합니다. Elastic Beanstalk는 확장하거나 자체 구성으로 완전히 재정의할 수 있는 기본 nginx 구성을 제공합니다.

**참고**  
nginx `.conf` 구성 파일을 추가하거나 편집할 때는 UTF-8로 인코딩해야 합니다.

Elastic Beanstalk의 기본 nginx 구성을 확장하려면 애플리케이션 소스 번들의 `.platform/nginx/conf.d/`라는 폴더에 `.conf` 구성 파일을 추가합니다. Elastic Beanstalk nginx 구성에는 이 폴더의 `.conf` 파일이 자동으로 포함됩니다.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- other source files
```

`.platform/nginx/conf.d/`에 있는 구성 파일은 nginx 구성의 `http` 블록에 포함됩니다. 전역적으로 적용되는 구성에는 이 위치를 사용합니다.

기본 nginx `server` 블록 구성을 확장하려면 애플리케이션 소스 번들의 `.platform/nginx/conf.d/elasticbeanstalk/`라는 폴더에 `.conf` 구성 파일을 추가합니다. Elastic Beanstalk의 nginx 구성은 이 폴더에 있는 `.conf` 파일들을 `server` 블록 내에 포함합니다.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- elasticbeanstalk
|               `-- server.conf
`-- other source files
```

이 위치를 사용하여 추가 위치 블록, 사용자 지정 오류 페이지 또는 서버 수준 지시문 등 서버별 구성을 추가합니다. 다음 예제에서는 사용자 지정 위치 블록을 추가합니다.

**Example .platform/nginx/conf.d/elasticbeanstalk/server.conf**  

```
location /test {
    return 200 "Hello World!";
    add_header Content-Type text/plain;
}
```

Elastic Beanstalk의 기본 nginx 구성을 완전히 재정의하려면 `.platform/nginx/nginx.conf`의 소스 번들에 구성을 포함시킵니다.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- nginx.conf
`-- other source files
```

Elastic Beanstalk의 nginx 구성을 재정의하는 경우 `nginx.conf`에 다음 줄을 추가하여 [Elastic Beanstalk의 향상된 상태 보고 및 모니터링](health-enhanced.md), 자동 애플리케이션 매핑 및 정적 파일에 대한 Elastic Beanstalk 구성을 가져옵니다.

```
 include conf.d/elasticbeanstalk/*.conf;
```

## Apache HTTPD 설정
<a name="platforms-linux-extend.proxy.httpd"></a>

Tomcat, Node.js, PHP, Python 플랫폼에서는 nginx에 대한 대안으로 Apache HTTPD 프록시 서버를 선택할 수 있습니다. 이는 기본값이 아닙니다. 다음 예제는 Apache HTTPD를 사용하도록 Elastic Beanstalk를 구성합니다.

**Example .ebextensions/httpd-proxy.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
```
추가 구성 파일을 사용하여 Elastic Beanstalk 기본 Apache 구성을 확장할 수 있습니다. 또는 Elastic Beanstalk 기본 Apache 구성을 완전히 재정의할 수 있습니다.  
Elastic Beanstalk의 기본 Apache 구성을 확장하려면 애플리케이션 소스 번들의 `.conf`라는 폴더에 `.platform/httpd/conf.d` 구성 파일을 추가합니다. Elastic Beanstalk의 Apache 구성에는 이 폴더의 `.conf` 파일이 자동으로 포함됩니다.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   -- httpd
|      -- conf.d
|         -- port5000.conf
|         -- ssl.conf
-- index.jsp
```
예를 들어, 다음 Apache 2.4 구성은 포트 5000에 리스너를 추가합니다.  

**Example .platform/httpd/conf.d/port5000.conf**  

```
listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
```
Elastic Beanstalk의 기본 Apache 구성을 완전히 재정의하려면 `.platform/httpd/conf/httpd.conf`의 소스 번들에 구성을 포함시킵니다.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp
```
Elastic Beanstalk의 Apache 구성을 재정의하는 경우 `httpd.conf`에 다음 줄을 추가하여 [Elastic Beanstalk의 향상된 상태 보고 및 모니터링](health-enhanced.md), 자동 애플리케이션 매핑 및 정적 파일에 대한 Elastic Beanstalk 구성을 가져옵니다.  

```
IncludeOptional conf.d/elasticbeanstalk/*.conf
```

# 확장자가 있는 애플리케이션 예제
<a name="platforms-linux-extend.example"></a>

다음 예제에서는 Elastic Beanstalk Amazon Linux 2 및 Amazon Linux 2023 플랫폼이 지원하는 여러 확장 기능이 있는 애플리케이션 소스 번들(`Procfile`, `.ebextensions` 구성 파일, 사용자 지정 후크 및 프록시 구성 파일)을 보여줍니다.

```
~/my-app/
|-- web.jar
|-- Procfile
|-- readme.md
|-- .ebextensions/
|   |-- options.config        # Option settings
|   `-- cloudwatch.config     # Other .ebextensions sections, for example files and container commands
`-- .platform/
    |-- nginx/                # Proxy configuration
    |   |-- nginx.conf
    |   `-- conf.d/
    |       |-- custom.conf
    |       `-- elasticbeanstalk/
    |           `-- server.conf
    |-- hooks/                # Application deployment hooks
    |   |-- prebuild/
    |   |   |-- 01_set_secrets.sh
    |   |   `-- 12_update_permissions.sh
    |   |-- predeploy/
    |   |   `-- 01_some_service_stop.sh
    |   `-- postdeploy/
    |       |-- 01_set_tmp_file_permissions.sh
    |       |-- 50_run_something_after_app_deployment.sh
    |       `-- 99_some_service_start.sh
    `-- confighooks/          # Configuration deployment hooks
        |-- prebuild/
        |   `-- 01_set_secrets.sh
        |-- predeploy/
        |   `-- 01_some_service_stop.sh
        `-- postdeploy/
            |-- 01_run_something_after_config_deployment.sh
            `-- 99_some_service_start.sh
```

**참고**  
Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)에서는 이러한 확장 중 일부가 지원되지 않습니다.