Elastic Beanstalk Java SE 플랫폼 사용 - AWS Elastic Beanstalk

Elastic Beanstalk Java SE 플랫폼 사용

AWS Elastic Beanstalk Java SE 플랫폼은 컴파일된 JAR 파일에서 자체적으로 실행할 수 있는 Java 웹 애플리케이션을 위한 플랫폼 버전 집합입니다. 애플리케이션을 로컬로 컴파일하거나 번들 스크립트를 사용해 소스 코드를 업로드해 인스턴스에서 컴파일할 수 있습니다. Java SE 플랫폼 버전은 플랫폼 분기로 그룹화되며 각 버전은 Java 8Java 7과 같은 Java의 주 버전에 해당합니다.

참고

Elastic Beanstalk는 애플리케이션의 JAR 파일을 구문 분석하지 않습니다. Elastic Beanstalk에 필요한 파일을 JAR 파일 외부에 보관합니다. 예를 들어 작업자 환경cron.yaml 파일을 애플리케이션 소스 번들의 루트에서 JAR 파일 옆에 포함시킵니다.

Elastic Beanstalk 콘솔에서 실행 환경의 구성 수정을 위해 구성 옵션을 사용할 수 있습니다. 환경 종료 시 구성이 손실되지 않도록 하려면 저장된 구성을 사용해 설정을 저장하고 나중에 다른 환경에 적용할 수 있습니다.

소스 코드에 설정을 저장하기 위해 구성 파일을 포함할 수 있습니다. 구성 파일의 설정은 환경을 만들거나 애플리케이션을 배포할 때마다 적용됩니다. 구성 파일을 사용해 패키지를 설치하고, 스크립트를 실행하고, 배포 중에 다른 인스턴스 사용자 지정 작업을 수행할 수도 있습니다.

Elastic Beanstalk Java SE 플랫폼에는 역방향 프록시 역할을 하며 캐시된 정적 콘텐츠를 제공하고 요청을 애플리케이션에 전달하는 nginx 서버가 포함되어 있습니다. 또한 이 플랫폼에서는 애플리케이션에 대한 로드를 줄이기 위해 소스 코드의 폴더에서 정적 자산을 제공하도록 프록시 서버를 구성하는 구성 옵션을 제공합니다. 고급 시나리오의 경우 소스 번들에 고유한 .conf 파일을 포함시켜 Elastic Beanstalk의 프록시 구성을 확장하거나 완전히 덮어쓸 수 있습니다.

애플리케이션 소스에 대해 단일 JAR 파일만 제공하는 경우(소스 번들이 아닌 자체적으로) Elastic Beanstalk에서는 JAR 파일의 이름을 application.jar로 바꾼 다음 java -jar application.jar을 사용하여 실행합니다. 환경의 서버 인스턴스에서 실행되는 프로세스를 구성하려면 소스 번들에 선택적 Procfile을 포함시킵니다. 소스 번들 루트에 JAR이 두 개 이상 있는 경우 또는 JVM 옵션을 설정하는 java 명령을 사용자 지정하려는 경우 Procfile이 필요합니다.

항상 Procfile을 애플리케이션과 함께 소스 번들로 제공하는 것이 좋습니다. 이를 통해 애플리케이션에 대해 Elastic Beanstalk가 실행하는 프로세스와 이러한 프로세스가 받는 인수를 정확하게 제어할 수 있습니다.

Java 클래스를 컴파일하고 배포 시간에 환경의 EC2 인스턴스에서 다른 빌드 명령을 실행하려면 애플리케이션 원본 번들에 Buildfile을 포함시킵니다. Buildfile을 사용하면 소스 코드를 그대로 배포하고 JAR을 로컬에서 컴파일하는 대신에 서버에서 빌드할 수 있습니다. Java SE 플랫폼에는 서버에서 빌드할 수 있는 일반적인 빌드 도구가 포함되어 있습니다.

Elastic Beanstalk Linux 기반 플랫폼을 확장할 수 있는 다양한 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 플랫폼 확장 단원을 참조하세요.

Java SE 환경 구성

Java SE 플랫폼 설정을 사용하면 Amazon EC2 인스턴스의 동작을 미세 조정할 수 있습니다. Elastic Beanstalk 콘솔을 사용하여 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 편집할 수 있습니다.

Elastic Beanstalk 콘솔을 사용하여 Amazon S3에 대한 로그 교체를 활성화하고, 애플리케이션에서 읽을 수 있도록 환경 변수를 구성합니다.

Elastic Beanstalk 콘솔에서 Java SE 환경을 구성하려면

  1. Elastic Beanstalk 콘솔을 연 다음 리전 목록에서 해당 AWS 리전을 선택합니다.

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

    참고

    환경이 많은 경우 검색 창을 사용하여 환경 목록을 필터링합니다.

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

  4. 소프트웨어 구성 범주에서 편집을 선택합니다.

로그 옵션

로그 옵션 섹션에는 다음 두 가지 설정이 있습니다.

  • 인스턴스 프로파일 – 애플리케이션과 연결된 Amazon S3 버킷에 액세스할 권한이 있는 인스턴스 프로파일을 지정합니다.

  • Amazon S3에 대한 로그 파일 교체 활성화 – 애플리케이션과 연결된 Amazon S3 버킷에 애플리케이션의 Amazon EC2 인스턴스에 대한 로그 파일을 복사해야 하는지 여부를 지정합니다.

정적 파일

성능을 높이려면 정적 파일 섹션에서 웹 애플리케이션 내부의 디렉터리 집합에 있는 정적 파일(예: HTML 또는 이미지)을 제공하도록 프록시 서버를 구성할 수 있습니다. 각 디렉터리에 대해 디렉터리 매핑 가상 경로를 설정합니다. 프록시 서버가 지정된 경로에서 파일 요청을 수신하면 요청을 애플리케이션으로 라우팅하는 대신 파일을 직접 제공합니다.

구성 파일 또는 Elastic Beanstalk 콘솔을 사용하여 정적 파일을 구성하는 방법에 대한 자세한 내용은 정적 파일 제공 단원을 참조하세요.

환경 속성

환경 속성 섹션에서는 애플리케이션을 실행하는 Amazon EC2 인스턴스의 환경 속성 설정을 지정할 수 있습니다. 환경 속성은 카-값 페어로 애플리케이션에 전달됩니다.

Elastic Beanstalk에서 실행하는 Java SE 환경에서 System.getenv()를 사용하여 환경 변수에 액세스할 수 있습니다. 예를 들어 다음 코드로 변수에 대한 API_ENDPOINT이라는 속성을 읽을 수 있습니다.

String endpoint = System.getenv("API_ENDPOINT");

자세한 내용은 환경 속성 및 기타 소프트웨어 설정를 참조하십시오.

Java SE 구성 네임스페이스

구성 파일을 사용하여 구성 옵션을 설정하고 배포 중 다른 인스턴스 구성 작업을 수행할 수 있습니다. 구성 옵션은 Elastic Beanstalk 서비스 또는 사용 중인 플랫폼에서 정의할 수 있으며 네임스페이스로 구성됩니다.

Java SE 플랫폼에서는 플랫폼별 네임스페이스를 정의하지 않습니다. aws:elasticbeanstalk:environment:proxy:staticfiles 네임스페이스를 사용하여 정적 파일을 제공하도록 프록시를 구성할 수 있습니다. 자세한 정보 및 예제는 정적 파일 제공 단원을 참조하십시오.

Elastic Beanstalk는 환경을 사용자 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 사용하여 구성 옵션을 설정할 수도 있습니다. 자세한 내용은 구성 옵션를 참조하십시오.

Elastic Beanstalk Java SE 환경에서 Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)을 사용하는 경우 이 단원의 추가 정보를 읽어 보십시오.

참고
  • 이 주제의 정보는 Amazon Linux AMI(AL1) 기반 플랫폼 브랜치에만 적용됩니다. Amazon Linux 2 플랫폼 브랜치는 이전 Amazon Linux AMI(AL1) 플랫폼 버전과 호환되지 않으며 다른 구성 설정이 필요합니다.

  • 2022년 7월 18일 Elastic Beanstalk 는 Amazon Linux AMI(AL1) 에 기반한 모든 플랫폼 브랜치의 상태를 사용 중지로 설정했습니다. 완전히 지원되는 현재 Amazon Linux 2 플랫폼 브랜치로 마이그레이션하는 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2로 마이그레이션섹션을 참조하세요.

구성 파일을 사용하여 구성 옵션을 설정하고 배포 중 다른 인스턴스 구성 작업을 수행할 수 있습니다. 구성 옵션은 Elastic Beanstalk 서비스 또는 사용 중인 플랫폼에서 정의할 수 있으며 네임스페이스로 구성됩니다.

Java SE 플랫폼은 모든 플랫폼에서 지원하는 네임스페이스 외에도 하나의 플랫폼별 구성 네임스페이스를 지원합니다. aws:elasticbeanstalk:container:java:staticfiles 네임스페이스를 사용하여 웹 애플리케이션의 경로를 정적 콘텐츠가 포함된 애플리케이션 소스 번들의 폴더에 매핑하는 옵션을 정의할 수 있습니다.

예를 들어 이 option_settings 코드 조각은 정적 파일 네임스페이스에서 두 가지 옵션을 정의합니다. 첫 번째는 경로 /publicpublic이라는 폴더에 매핑하고, 두 번째는 경로 /imagesimg라는 폴더에 매핑합니다.

option_settings: aws:elasticbeanstalk:container:java:staticfiles: /html: statichtml /images: staticimages

이 네임스페이스를 사용하여 매핑하는 폴더는 소스 번들의 루트에 있는 실제 폴더여야 합니다. 경로를 JAR 파일의 폴더에 매핑할 수 없습니다.

Elastic Beanstalk는 환경을 사용자 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 사용하여 구성 옵션을 설정할 수도 있습니다. 자세한 내용은 구성 옵션를 참조하십시오.