本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立和更新 Elastic Beanstalk 環境的群組
使用 AWS Elastic Beanstalk ComposeEnvironments API,您可以在單一應用程式中建立和更新 Elastic Beanstalk 環境群組。群組中的每個環境,皆可執行服務導向架構應用程式的不同元件。Compose Environments
API 會取得應用程式版本清單和選用的群組名稱。Elastic Beanstalk 會針對每個應用程式版本建立環境,如果環境已存在,則會將應用程式版本部署到這些環境。
建立 Elastic Beanstalk 環境之間的連結,將一個環境指派為另一個環境的相依環境。當您使用 Compose Environments
建立環境群組時API,Elastic Beanstalk 只會在相依性啟動和執行後建立相依環境。如需關於環境連結的詳細資訊,請參閱在 Elastic Beanstalk 環境之間建立連結。
Compose Environments
API 使用環境資訊清單來存放由環境群組共用的組態詳細資訊。每個元件應用程式的應用程式原始碼套件中,都必須具有 env.yaml
組態檔案,其中指定用來建立其環境的參數。
Compose Environments
需要在每個元件應用程式的環境資訊清單中,指定 EnvironmentName
和 SolutionStack
。
您可以Compose Environments
API搭配 Elastic Beanstalk 命令列介面 (EBCLI) AWS CLI、 或 使用 SDK。如需 EB CLI指示利用 EB CLI,以群組方式管理多個 Elastic Beanstalk 環境,請參閱 。
使用 Compose Environments
API
例如,您可以建立名為 Media Library
的應用程式,來讓使用者上傳和管理儲存於 Amazon Simple Storage Service (Amazon S3) 中的影像和影片。這個應用程式具備前端環境 front
,此環境會執行 Web 應用程式,來讓使用者上傳和下載個別檔案、檢視其程式庫和起始批次處理工作。
前端應用程式不會直接處理任務,而是將任務新增至 Amazon SQS佇列。第二個環境 worker
會從佇列中提取任務並進行處理。 worker
使用具有高效能 的 G2 執行個體類型GPU,同時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="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 會建立環境的名稱,方法是將env.yaml
檔案中EnvironmentName
指定的 與Compose Environments
通話中指定的 group name
選項串連,並以連字號分隔。這兩個選項加上連字號的總長度,不得超過環境名稱長度的 23 個字元上限。
在 front-dev
環境中執行的應用程式可以透過讀取 WORKERQUEUE
變數來存取連接到worker-dev
環境的 Amazon SQS佇列名稱。如需關於環境連結的詳細資訊,請參閱在 Elastic Beanstalk 環境之間建立連結。