

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

# Elastic Beanstalk 환경 그룹 생성 및 업데이트
<a name="environment-mgmt-compose"></a>

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

Elastic Beanstalk 환경 간의 링크를 생성하여 한 환경을 다른 환경의 종속 항목으로 지정합니다. `Compose Environments` API를 사용하여 환경 그룹을 생성할 경우 Elastic Beanstalk에서는 종속 항목이 실행 중인 경우에만 종속 환경을 생성합니다. 환경 링크에 대한 자세한 내용은 [Elastic Beanstalk 환경 간에 링크 생성](environment-cfg-links.md) 단원을 참조하십시오.

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

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

`Compose Environments` API를 Elastic Beanstalk 명령줄 인터페이스(EB CLI), AWS CLI또는 SDK와 함께 사용할 수 있습니다. EB CLI 지침은 [EB CLI를 사용하여 여러 Elastic Beanstalk 환경을 하나의 그룹으로 관리](ebcli-compose.md) 단원을 참조하세요.

## `Compose Environments` API 사용
<a name="environment-mgmt-compose-example"></a>

예를 들어 사용자가 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`) 애플리케이션 구성 요소에 대한 [애플리케이션 버전을 생성](applications-versions.md)한 후 버전 이름을 사용하여 `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="amzn-s3-demo-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": "amzn-s3-demo-bucket",
            "S3Key": "front-v1.zip"
        }
    }
  }
~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label worker-v1 --process --source-bundle S3Bucket="amzn-s3-demo-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": "amzn-s3-demo-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-dev` 및 `worker-dev`라는 두 환경을 생성합니다. API는 `EnvironmentName` 파일에 지정된 `env.yaml`을 `group name` 호출에 지정된 `Compose Environments` 옵션과 연결하고 하이픈으로 구분하여 환경 이름을 생성합니다. 두 옵션과 하이픈의 총 길이는 허용되는 최대 환경 이름 길이인 23자를 초과할 수 없습니다.

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