환경 속성 및 기타 소프트웨어 설정 - AWS Elastic Beanstalk

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

환경 속성 및 기타 소프트웨어 설정

업데이트, 모니터링, 로깅 구성 페이지에서는 애플리케이션을 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 대한 소프트웨어를 구성할 수 있습니다. 환경 속성, AWS X-Ray 디버깅, 인스턴스 로그 저장 및 스트리밍, 플랫폼별 설정을 구성할 수 있습니다.

플랫폼별 설정 구성

대부분의 Elastic Beanstalk 플랫폼에서는 모든 환경에 사용할 수 있는 표준 옵션 세트 이외에 언어별 또는 프레임워크별 설정을 지정할 수 있습니다. 이는 업데이트, 모니터링, 로깅 구성 페이지의 플랫폼 소프트웨어 섹션에 표시되며 다음과 같은 형식을 취할 수 있습니다.

  • 사전 설정 환경 속성 - Ruby 플랫폼에서는 프레임워크 설정에 대해 RACK_ENVBUNDLE_WITHOUT과 같은 환경 속성을 사용합니다.

  • 자리표시자 환경 속성 - Tomcat 플랫폼은 값이 설정되지 않은 환경 속성 JDBC_CONNECTION_STRING을 정의합니다. 이러한 설정 유형은 이전 플랫폼 버전에서 더 일반적입니다.

  • 구성 옵션 - 대부분의 플랫폼에서는 aws:elasticbeanstalk:xray 또는 aws:elasticbeanstalk:container:python과 같은 플랫폼별 또는 공유 네임스페이스에서 구성 옵션을 정의합니다.

Elastic Beanstalk 콘솔에서 플랫폼별 설정을 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

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

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

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

  4. 업데이트, 모니터링 및 로깅 구성 범주에서 편집을 선택합니다.

  5. 플랫폼 소프트웨어(Platform software)에서 필요한 옵션 설정을 변경합니다.

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

플랫폼별 옵션 및 코드에 환경 속성 값 가져오기에 대한 자세한 내용은 해당 언어 또는 프레임워크에 대한 플랫폼 주제를 참조하십시오.

환경 속성 구성(환경 변수)

환경 속성(또는 환경 변수)을 사용하여 애플리케이션에 암호, 엔드포인트, 디버그 설정 및 기타 정보를 전달할 수 있습니다. 환경 속성을 사용하면 여러 환경에서 개발, 테스트, 준비 및 프로덕션 등의 다양한 목적에 맞춰 애플리케이션을 실행할 수 있습니다.

또한 환경에 데이터베이스를 추가하면 Elastic Beanstalk에서는 연결 객체 또는 문자열을 생성하기 위해 애플리케이션 코드에서 읽을 수 있는 RDS_HOSTNAME과 같은 환경 속성을 설정합니다.

환경 변수

대부분의 경우 환경 속성은 애플리케이션에 환경 변수로 전달되지만 수행되는 동작은 플랫폼에 따라 다릅니다. 예를 들어 Java SE 플랫폼System.getenv로 검색하는 환경 변수를 설정하는 반면에 Tomcat 플랫폼System.getProperty로 검색하는 Java 시스템 속성을 설정합니다. 일반적으로 인스턴스에 연결하고 env를 실행하는 경우 속성이 표시되지 않습니다.

Elastic Beanstalk 콘솔에서 환경 속성을 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

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

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

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

  4. 업데이트, 모니터링 및 로깅 구성 범주에서 편집을 선택합니다.

  5. 아래로 스크롤하여 환경 속성까지 이동합니다.

  6. 환경 속성 추가(Add environment property)를 선택합니다.

  7. 속성 이름 쌍을 입력합니다.

  8. 변수를 더 추가할 경우 6단계7단계를 반복합니다.

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

환경 속성 제한
  • 에는 영숫자 문자와 _ . : / + \ - @의 기호가 포함될 수 있습니다.

    위에 나열된 기호는 환경 속성 키에는 사용할 수 있지만 환경 플랫폼의 환경 변수 이름에는 사용하지 못할 수 있습니다. 모든 플랫폼과의 호환성을 위해 환경 속성을 [A-Z_][A-Z0-9_]* 패턴으로 제한합니다.

  • 에는 영숫자 문자, 공백 및 _ . : / = + \ - @ ' "의 기호가 포함될 수 있습니다.

    참고

    환경 속성 값의 일부 문자는 이스케이프되어야 합니다. 백슬래시 문자(\)를 사용하여 일부 특수 문자 및 제어 문자를 나타냅니다. 다음 목록에는 이스케이프해야 하는 일부 문자를 나타내는 예시가 포함되어 있습니다.

    • 백슬래시(\) — \\로 나타냅니다

    • 작은 따옴표(') — \'로 나타냅니다

    • 큰 따옴표(") — \"로 나타냅니다

  • 은 대/소문자를 구분합니다.

  • key=value 형식의 문자열로 저장하는 경우 모든 환경 속성을 결합한 크기는 4,096바이트를 초과할 수 없습니다.

소프트웨어 설정 네임스페이스

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

Elastic Beanstalk 구성 파일을 사용하여 소스 코드에서 환경 속성 및 구성 옵션을 설정할 수 있습니다. aws:elasticbeanstalk:application:environment 네임스페이스를 사용하여 환경 속성을 정의합니다.

예 .ebextensions/options.config
option_settings: aws:elasticbeanstalk:application:environment: API_ENDPOINT: www.example.com/api

구성 파일 또는 AWS CloudFormation 템플릿을 사용하여 사용자 지정 리소스를 생성하는 경우 AWS CloudFormation 함수를 사용해 리소스에 대한 정보를 가져와 배포 중에 환경 속성에 동적으로 할당할 수 있습니다. elastic-beanstalk-samples GitHub 리포지토리의 다음 예에서는 Ref 함수를 사용하여 이 리포지토리가 생성한 Amazon SNS 주제의 ARN을 가져와 환경 속성 NOTIFICATION_TOPIC에 할당합니다.

주의
  • AWS CloudFormation 함수를 사용하여 환경 속성을 정의하면 함수가 평가되기 전에 Elastic Beanstalk 콘솔에 속성의 값이 표시됩니다. get-config 플랫폼 스크립트를 사용하여 애플리케이션에 사용 가능한 환경 속성의 값을 확인할 수 있습니다.

  • 멀티컨테이너 Docker 플랫폼은 컨테이너 리소스 생성에 AWS CloudFormation를 사용하지 않습니다. 그에 따라 이 플랫폼은 AWS CloudFormation 함수를 사용한 환경 속성 정의를 지원하지 않습니다.

예 .Ebextensions/sns-topic.config
Resources: NotificationTopic: Type: AWS::SNS::Topic option_settings: aws:elasticbeanstalk:application:environment: NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'

또한 이 기능을 사용하여 AWS CloudFormation 가상 파라미터에서 정보를 전파할 수도 있습니다. 다음 예에서는 현재 리전을 가져와 속성 AWS_REGION에 할당합니다.

예 .Ebextensions/env-regionname.config
option_settings: aws:elasticbeanstalk:application:environment: AWS_REGION: '`{"Ref" : "AWS::Region"}`'

대부분의 Elastic Beanstalk 플랫폼에서는 인스턴스에서 실행되는 소프트웨어 구성을 위한 옵션을 사용해 추가 네임스페이스를 정의합니다(예: 요청을 애플리케이션으로 전달하는 역방향 프록시). 플랫폼에서 사용 가능한 네임스페이스에 대한 자세한 내용은 다음을 참조하십시오.

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

환경 속성에 액세스

대부분의 경우에는 환경 변수와 같은 애플리케이션 코드에서 환경 속성에 액세스합니다. 그러나 일반적으로 환경 속성은 애플리케이션에만 전달되며 환경의 인스턴스를 연결하고 env를 실행해서는 볼 수 없습니다.

  • Goos.Getenv

    endpoint := os.Getenv("API_ENDPOINT")
  • Java SESystem.getenv

    String endpoint = System.getenv("API_ENDPOINT");
  • TomcatSystem.getProperty

    String endpoint = System.getProperty("API_ENDPOINT");
  • Linux 기반 .NET CoreEnvironment.GetEnvironmentVariable

    string endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT");
  • .NETappConfig

    NameValueCollection appConfig = ConfigurationManager.AppSettings; string endpoint = appConfig["API_ENDPOINT"];
  • Node.jsprocess.env

    var endpoint = process.env.API_ENDPOINT
  • PHP$_SERVER

    $endpoint = $_SERVER['API_ENDPOINT'];
  • Pythonos.environ

    import os endpoint = os.environ['API_ENDPOINT']
  • RubyENV

    endpoint = ENV['API_ENDPOINT']

배포 중 실행되는 스크립트와 같이 애플리케이션 코드 외부에서는 get-config 플랫폼 스크립트를 사용해 환경 속성에 액세스할 수 있습니다. get-config를 사용하는 구성의 예는 elastic-beanstalk-samples GitHub 리포지토리를 참조하세요.