

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk 環境のグループを作成および更新する
<a name="environment-mgmt-compose"></a>

 AWS Elastic Beanstalk [ComposeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html) API を使用すると、1 つのアプリケーション内で Elastic Beanstalk 環境のグループを作成および更新できます。グループ内の各環境は、サービス対応アーキテクチャアプリケーションごとにそれぞれのコンポーネントを実行できます。`Compose Environments` API は、アプリケーションバージョンおよびオプションでグループ名のリストを取得します。Elastic Beanstalk は、アプリケーションバージョンごとに環境を作成します。またはこの環境がすでに存在する場合には、アプリケーションバージョンを環境にデプロイします。

Elastic Beanstalk の環境間にリンクを作成すると、1 つの環境を他の環境の依存関係として指定できます。`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 キューにジョブを追加します。2 番目の環境、`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
```

3 番目の呼び出しでは、`front-dev` と `worker-dev` の 2 つの環境を作成します。この API は、`EnvironmentName` ファイルに特定された `env.yaml` と `group name` 呼び出しに特定された `Compose Environments` オプションをハイフンで区切って連結した環境の名前を作成します。ハイフンを含めたこの 2 つのオプションの合計は、環境の名前に使用できる最大限の 23 文字を超えることはできません。

`front-dev` 環境で実行されるアプリケーションは `worker-dev` 変数を読み取ることにより、`WORKERQUEUE` 環境にアタッチされた Amazon SQS キューの名前にアクセスできます。環境リンクの詳細については、「[Elastic Beanstalk 環境間のリンクの作成](environment-cfg-links.md)」を参照してください。