Elastic Beanstalk 環境のグループを作成および更新する - AWS Elastic Beanstalk

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

Elastic Beanstalk 環境のグループを作成および更新する

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

Elastic Beanstalk の環境間にリンクを作成すると、1 つの環境を他の環境の依存関係として指定できます。Compose Environments API で環境のグループを作成する場合、依存する側の環境が Elastic Beanstalk によって作成されるのは、依存関係既に有効になっている場合に限られます。環境リンクの詳細については、「Elastic Beanstalk 環境間のリンクの作成」を参照してください。

Compose Environments API は、環境マニフェストを使用して環境グループで共有される詳細設定を保存します。それぞれの構成アプリケーションには、アプリケーションのソースバンドル内に env.yaml 形式の設定ファイルが存在することが必須であり、これによってその環境を作成するために使用されるパラメータを特定します。

Compose Environments は、各構成アプリケーションの環境マニフェストで EnvironmentNameSolutionStack が特定されていることを要件とします。

Compose Environments API は、Elastic Beanstalk コマンドラインインターフェイス (EB CLI)、AWS CLI、または SDK で使用できます。EB CLI の説明については、「EB CLI で複数の 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 --process --source-bundle S3Bucket="DOC-EXAMPLE-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": "DOC-EXAMPLE-BUCKET", "S3Key": "front-v1.zip" } } } ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label worker-v1 --process --source-bundle S3Bucket="DOC-EXAMPLE-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": "DOC-EXAMPLE-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 環境で実行されるアプリケーションは worker-dev 変数を読み取ることにより、WORKERQUEUE 環境にアタッチされた Amazon SQS キューの名前にアクセスできます。環境リンクの詳細については、「Elastic Beanstalk 環境間のリンクの作成」を参照してください。