於環境建立前設定組態選項 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

於環境建立前設定組態選項

AWS Elastic Beanstalk 支援大量組態選項,可讓您修改套用至環境之資源的設定。您可覆寫數個選項的預設值,以自訂您的環境。您亦可設定其他選項來啟用其他功能。

Elastic Beanstalk 支援已儲存組態選項設定的兩種方法。YAML 或 JSON 格式的組態檔案可納入名為 .ebextensions 之目錄的應用程式原始碼,並成為應用程式原始碼套件的一部分進行部署。您會於本機建立並管理組態檔案。

已儲存組態是您自執行環境或 JSON 選項檔案建立並存放於 Elastic Beanstalk 的範本。現有已儲存組態亦可進行擴展,以建立新的組態。

注意

組態檔案和已儲存組態內定義的設定 (包括 Elastic Beanstalk 主控台和 EB CLI 套用的建議值),優先順序低於環境建立期間或之後所進行的設定。如需詳細資訊,請參閱「優先順序」。

您亦可以 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 主控台)
  1. 開啟 Elastic Beanstalk 主控台,然後在 Regions (區域) 清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇 Environments (環境),然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 選擇 Actions (動作),然後選擇 Save Configuration (儲存組態)。

  4. 使用畫面顯示對話方塊來完成動作。

已儲存組態會存放在 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)
  1. 儲存連接環境的目前組態:

    ~/project$ eb config save --cfg my-app-v1

    EB CLI 會將組態儲存至 ~/project/.elasticbeanstalk/saved_configs/my-app-v1.cfg.yml

  2. 視需要於本機修改已儲存組態。

  3. 將已儲存組態上傳至 S3:

    ~/project$ eb config put my-app-v1

AWS CLI

從執行環境透過 aws elasticbeanstalk create-configuration-template 建立已儲存組態。

建立已儲存組態 (AWS CLI)
  1. 透過 Elastic Beanstalk 辨識您 describe-environments 環境的環境 ID:

    $ aws elasticbeanstalk describe-environments --environment-name my-env { "Environments": [ { "ApplicationName": "my-env", "EnvironmentName": "my-env", "VersionLabel": "89df", "Status": "Ready", "Description": "Environment created from the EB CLI using \"eb create\"", "EnvironmentId": "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" } ] }
  2. 透過 create-configuration-template 儲存環境的目前組態:

    $ aws elasticbeanstalk create-configuration-template --environment-id e-vcghmm2zwk --application-name my-app --template-name v1

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