メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

AWS Elastic Beanstalk 環境グループを作成・更新する

AWS Elastic Beanstalk (Elastic Beanstalk) の Compose Environments API を使用すると、単一のアプリケーション内の Elastic Beanstalk 環境グループを作成、更新できます。 グループ内の各環境は、サービス対応アーキテクチャアプリケーションごとにそれぞれのコンポーネントを実行できます。 Compose Environments API は、アプリケーションバージョンおよびオプションでグループ名のリストを取得します。 Elastic Beanstalk は、各アプリケーションバージョンごとに環境を作成します。またはこの環境がすでに存在する場合には、アプリケーションバージョンを環境にデプロイします。

Elastic Beanstalk の環境間にリンクを作成すると、1 つの環境をほかの環境に依存するものとして指定できます。 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 キューにジョブを追加します。 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) アプリケーションコンポーネント用のアプリケーションバージョンを作成したら、そのバージョン名の 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 --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 --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

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

front-dev 環境で実行されるアプリケーションは、WORKERQUEUE 変数を読み込むことによって worker-dev に付属する Amazon SQS キュー名にアクセスできます。 環境リンクの詳細については、「AWS Elastic Beanstalk 環境間のリンクを作成する」を参照してください。

このページの内容: