AWS Elastic Beanstalk
개발자 가이드

AWS Elastic Beanstalk 환경 그룹 생성 및 업데이트

AWS Elastic Beanstalk(Elastic Beanstalk)의 Compose Environments API를 사용하여 단일 애플리케이션에서 Elastic Beanstalk 환경 그룹을 생성하고 업데이트할 수 있습니다. 그룹의 각 환경에서 서비스 중심 아키텍처 애플리케이션의 개별 구성 요소를 실행할 수 있습니다. Compose Environments API는 애플리케이션 버전 목록과 선택적 그룹 이름을 가져옵니다. Elastic Beanstalk는 애플리케이션 버전별로 하나의 환경을 생성하거나, 환경이 이미 존재할 경우 애플리케이션 버전을 해당 환경에 배포합니다.

Elastic Beanstalk 환경 간의 링크를 생성하여 한 환경을 다른 환경의 종속 항목으로 지정합니다. Compose Environments API를 사용하여 환경 그룹을 생성할 경우 Elastic Beanstalk에서는 종속 항목이 실행 중인 경우에만 종속 환경을 생성합니다. 환경 링크에 대한 자세한 내용은 AWS Elastic Beanstalk 환경 간 링크 생성 섹션을 참조하십시오.

Compose Environments API는 환경 매니페스트를 사용하여 환경 그룹에서 공유하는 구성 정보를 저장합니다. 각 구성 요소 애플리케이션의 애플리케이션 소스 번들에는 환경을 생성하는 데 사용되는 파라미터를 지정하는 env.yaml 구성 파일이 있어야 합니다.

Compose Environments를 사용하려면 각 구성 요소 애플리케이션에 대한 환경 매니페스트에서 EnvironmentNameSolutionStack을 지정해야 합니다.

Elastic Beanstalk 명령줄 인터페이스(EB CLI), AWS CLI 또는 SDK에서 Compose Environments API를 사용할 수 있습니다. EB CLI 지침은 EB CLI를 사용하여 여러 AWS Elastic Beanstalk 환경을 하나의 그룹으로 관리 섹션을 참조하십시오.

Compose Environments API 사용

예를 들어, 사용자가 Amazon Simple Storage Service(Amazon S3)에 저장된 이미지와 비디오를 업로드하고 관리할 수 있도록 Media Library라는 애플리케이션을 만들 수 있습니다. 애플리케이션에는 사용자가 개별 파일을 업로드 및 다운로드하고, 라이브러리를 보고, 일괄 처리 작업을 시작할 수 있는 웹 애플리케이션을 실행하는 front라는 프런트 엔드 환경이 있습니다.

작업을 직접 처리하는 대신 프런트 엔드 애플리케이션에서 Amazon SQS 대기열에 작업을 추가합니다. 두 번째 환경 worker에서는 대기열에서 작업을 가져와서 처리합니다. worker는 고성능 GPU를 포함하는 G2 인스턴스 유형을 사용하고, front는 더 비용 효율적인 일반 인스턴스 유형에서 실행됩니다.

Media Library라는 프로젝트 폴더를 구성 요소별로 다른 디렉터리에 구성합니다. 각 디렉터리에는 환경 정의 파일(env.yaml)과 각 파일의 소스 코드가 있습니다.

~/workspace/media-library |-- front | `-- env.yaml `-- worker `-- env.yaml

다음 목록은 각 구성 요소 애플리케이션의 env.yaml 파일을 보여줍니다.

~/workspace/media-library/front/env.yaml

EnvironmentName: front+ EnvironmentLinks: "WORKERQUEUE" : "worker+" AWSConfigurationTemplateVersion: 1.1.0.0 EnvironmentTier: Name: WebServer Type: Standard SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8 OptionSettings: aws:autoscaling:launchconfiguration: InstanceType: m4.large

~/workspace/media-library/worker/env.yaml

EnvironmentName: worker+ AWSConfigurationTemplateVersion: 1.1.0.0 EnvironmentTier: Name: Worker Type: SQS/HTTP SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8 OptionSettings: aws:autoscaling:launchconfiguration: InstanceType: g2.2xlarge

프런트 엔드(front-v1) 및 작업자(worker-v1) 애플리케이션 구성 요소에 대한 애플리케이션 버전을 생성한 후 버전 이름을 사용하여 Compose Environments API를 호출합니다. 이 예에서는 AWS CLI를 사용하여 API를 호출합니다.

# Create application versions for each component: ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label front-v1 --process --source-bundle S3Bucket="my-bucket",S3Key="front-v1.zip" { "ApplicationVersion": { "ApplicationName": "media-library", "VersionLabel": "front-v1", "Description": "", "DateCreated": "2015-11-03T23:01:25.412Z", "DateUpdated": "2015-11-03T23:01:25.412Z", "SourceBundle": { "S3Bucket": "my-bucket", "S3Key": "front-v1.zip" } } } ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label worker-v1 --process --source-bundle S3Bucket="my-bucket",S3Key="worker-v1.zip" { "ApplicationVersion": { "ApplicationName": "media-library", "VersionLabel": "worker-v1", "Description": "", "DateCreated": "2015-11-03T23:01:48.151Z", "DateUpdated": "2015-11-03T23:01:48.151Z", "SourceBundle": { "S3Bucket": "my-bucket", "S3Key": "worker-v1.zip" } } } # Create environments: ~$ aws elasticbeanstalk compose-environments --application-name media-library --group-name dev --version-labels front-v1 worker-v1

세 번째 호출에서는 front-devworker-dev라는 두 환경을 생성합니다. API는 EnvironmentName 파일에 지정된 env.yamlgroup name 호출에 지정된 Compose Environments 옵션과 연결하고 하이픈으로 구분하여 환경 이름을 생성합니다. 두 옵션과 하이픈의 총 길이는 허용되는 최대 환경 이름 길이인 23자를 초과할 수 없습니다.

front-dev 환경에서 실행 중인 애플리케이션은 WORKERQUEUE 변수를 판독하여 worker-dev 환경에 연결된 Amazon SQS 대기열의 이름에 액세스할 수 있습니다. 환경 링크에 대한 자세한 내용은 AWS Elastic Beanstalk 환경 간 링크 생성 섹션을 참조하십시오.

이 페이지에서: