本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
於環境建立前設定組態選項
AWS Elastic Beanstalk 支援大量組態選項,可讓您修改套用至環境之資源的設定。您可覆寫數個選項的預設值,以自訂您的環境。您亦可設定其他選項來啟用其他功能。
Elastic Beanstalk 支援已儲存組態選項設定的兩種方法。YAML 或 JSON 格式的組態檔案可納入名為 .ebextensions
之目錄的應用程式原始碼,並成為應用程式原始碼套件的一部分進行部署。您會於本機建立並管理組態檔案。
已儲存組態是您自執行環境或 JSON 選項檔案建立並存放於 Elastic Beanstalk 的範本。現有已儲存組態亦可進行擴展,以建立新的組態。
注意
您亦可以 JSON 文件來指定選項,並在透過 EB CLI 或 建立或更新環境時直接提供給 Elastic BeanstalkAWS CLI 以這種方式直接提供給 Elastic Beanstalk 的選項,會覆寫其他方法提供的選項。
如需可用選項的完整清單,請參閱組態選項。
組態檔案 (.ebextensions
)
使用 .ebextensions
來設定讓應用程式正常運作的選項,並提供可由更高層級優先順序覆寫之其他選項的預設值。.ebextensions
指定的選項優先順序最低,會被任何層級的設定覆寫。
欲使用組態檔案,請於專案原始碼的最上層建立名為 .ebextensions
的資料夾。新增副檔名為 .config
的檔案,並以下列方式指定選項:
option_settings:
- namespace: namespace
option_name: option name
value: option value
- namespace: namespace
option_name: option name
value: option value
例如,下列組態檔案會將應用程式的運作狀態檢查 url 設定為 /health
:
healthcheckurl.config
option_settings:
- namespace: aws:elasticbeanstalk:application
option_name: Application Healthcheck URL
value: /health
JSON 為:
{
"option_settings" :
[
{
"namespace" : "aws:elasticbeanstalk:application",
"option_name" : "Application Healthcheck URL",
"value" : "/health"
}
]
}
這會將 Elastic Beanstalk 環境內的 Elastic Load Balancing 負載平衡器,設定為將 HTTP 請求發送至路徑 /health
給各個 EC2 執行個體,以判斷其是否正常運作。
注意
YAML 憑藉一致的縮排。請在取代範例組態檔中的內容時,讓縮排層級一致,並確認您的文字編輯器使用空格而非定位字元進行縮排。
將 .ebextensions
目錄納入應用程式原始碼套件,並將其部署至新的或現有 Elastic Beanstalk 環境。
除了 option_settings
之外,組態檔案亦支援數個區段,可自訂執行於您環境伺服器上的軟體和檔案。如需更多詳細資訊,請參閱 .Ebextensions。
已儲存的組態
可使用 Elastic Beanstalk 主控台、EB CLI 或 來建立已儲存組態,藉此儲存在環境建立期間或之後套用至現有環境的設定AWS CLI 已儲存組態屬於應用程式,可套用至應用程式新的或現有的環境。
Elastic Beanstalk 主控台
建立已儲存組態 (Elastic Beanstalk 主控台)
開啟 Elastic Beanstalk 主控台
,然後在 Regions (區域) 清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇 Environments (環境),然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
選擇 Actions (動作),然後選擇 Save Configuration (儲存組態)。
-
使用畫面顯示對話方塊來完成動作。
已儲存組態會存放在 Elastic Beanstalk S3 儲存貯體內以您的應用程式命名之資料夾。例如,us-west-2 區域中對於 123456789012 帳戶一個名為 my-app
應用程式的組態位於 s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app
。
EB CLI
EB CLI 亦於 eb config 下提供子命令,可與已儲存組態互動:
欲建立已儲存組態 (EB CLI)
-
儲存連接環境的目前組態:
~/project$
eb config save --cfg
my-app-v1
EB CLI 會將組態儲存至
~/project/.elasticbeanstalk/saved_configs/
。my-app-v1
.cfg.yml -
視需要於本機修改已儲存組態。
-
將已儲存組態上傳至 S3:
~/project$
eb config put
my-app-v1
AWS CLI
從執行環境透過 aws elasticbeanstalk
create-configuration-template
建立已儲存組態。
建立已儲存組態 (AWS CLI)
-
透過 Elastic Beanstalk 辨識您
describe-environments
環境的環境 ID:$
aws elasticbeanstalk describe-environments --environment-name
{ "Environments": [ { "ApplicationName": "my-env", "EnvironmentName": "my-env", "VersionLabel": "89df", "Status": "Ready", "Description": "Environment created from the EB CLI using \"eb create\"", "EnvironmentId": "my-env
e-vcghmm2zwk
", "EndpointURL": "awseb-e-v-AWSEBLoa-1JUM8159RA11M-43V6ZI1194.us-west-2.elb.amazonaws.com", "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.2 running Multi-container Docker 1.7.1 (Generic)", "CNAME": "my-env-nfptuqaper.elasticbeanstalk.com", "Health": "Green", "AbortableOperationInProgress": false, "Tier": { "Version": " ", "Type": "Standard", "Name": "WebServer" }, "HealthStatus": "Ok", "DateUpdated": "2015-10-01T00:24:04.045Z", "DateCreated": "2015-09-30T23:27:55.768Z" } ] } -
透過
create-configuration-template
儲存環境的目前組態:$ aws elasticbeanstalk create-configuration-template --environment-id
e-vcghmm2zwk
--application-namemy-app
--template-namev1
Elastic Beanstalk 會將組態儲存到 Amazon S3 中的 Elastic Beanstalk 儲存貯體中。
JSON 文件
若您使用 AWS CLI 來建立並更新環境,亦可提供 JSON 格式的組態選項。若您使用 AWS CLI 來建立並管理環境,JSON 格式的組態檔案程式庫非常實用。
例如,下列 JSON 文件會將應用程式的運作狀態檢查 url 設定為 /health
:
~/ebconfigs/healthcheckurl.json
[
{
"Namespace": "aws:elasticbeanstalk:application",
"OptionName": "Application Healthcheck URL",
"Value": "/health"
}
]
EB CLI 組態
EB CLI 除了透過 eb config 命令支援已儲存組態和直接的環境資訊,還有另一個組態檔案,其中名為 default_ec2_keyname
的選項可用來指定 Amazon EC2 金鑰對,以便對環境中執行個體進行 SSH 存取。EB CLI 在 EC2KeyName
命名空間使用此選項設定 aws:autoscaling:launchconfiguration
組態選項。
~/workspace/my-app/.elasticbeanstalk/config.yml
branch-defaults:
master:
environment: my-env
develop:
environment: my-env-dev
deploy:
artifact: ROOT.war
global:
application_name: my-app
default_ec2_keyname: my-keypair
default_platform: Tomcat 8 Java 8
default_region: us-west-2
profile: null
sc: git