AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在创建环境之前设置配置选项

AWS Elastic Beanstalk 支持大量配置选项,这些选项使您可以修改应用于环境中的资源的设置。其中一些选项具有默认值,可以覆盖这些值以自定义环境。其他选项可以进行配置以启动附加功能。

Elastic Beanstalk 支持两种用于保存配置选项设置的方法。YAML 或 JSON 格式的配置文件可以放在应用程序的源代码中 (位于一个名为 .ebextensions 的目录中),并作为应用程序源包的一部分进行部署。您可在本地创建和管理配置文件。

保存的配置是您通过正在运行的环境或 JSON 选项文件创建并存储在 Elastic Beanstalk 中的模板。保存的现有配置也可以进行扩展以创建新配置。

注意

在配置文件和保存的配置中定义的设置的优先顺序低于在环境创建过程中或创建之后配置的设置(包括由 Elastic Beanstalk 控制台和 EB CLI 应用的建议值)。有关详细信息,请参阅优先顺序

选项还可以在 JSON 文档中指定,并在使用 EB CLI 或 AWS CLI 创建或更新环境时直接提供给 Elastic Beanstalk。通过此方法直接提供给 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 负载均衡器以向每个 EC2 实例的 /health 路径进行 HTTP 请求,从而确定它是否运行状况良好。

注意

YAML 依赖一致的缩进。当替换示例配置文件中的内容时,应匹配缩进级别,并且确保您的文本编辑器使用空格而不是字符来进行缩进。

在您的应用程序源包中包含 .ebextensions 目录,并将它部署到新的或现有的 Elastic Beanstalk 环境中。

除了 option_settings 之外,配置文件还支持几个部分,用于对在环境中的服务器上运行的软件和文件进行自定义。有关更多信息,请参阅自定义 Linux 服务器上的软件自定义 Windows Server 上的软件

保存的配置

通过 AWS 管理控制台、EB CLI 或 AWS CLI 创建保存的配置,可以保存在环境创建过程中或创建之后应用于现有环境的设置。保存的配置属于某个应用程序,可以应用于该应用程序的新环境或现有环境。

Elastic Beanstalk 控制台

创建保存的配置(Elastic Beanstalk 控制台)

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 单击 Actions (操作),然后单击 Save Configuration (保存配置)

  4. 输入配置名称和描述,然后单击 Save (保存)

保存的配置存储在 Elastic Beanstalk S3 存储桶中按照应用程序命名的文件夹中。例如,对于账号 123456789012,us-west-2 区域中名为 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. 使用 describe-environments 确定 Elastic Beanstalk 环境的环境 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.cn", "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 config 命令支持保存的配置以及直接环境配置之外,EB CLI 还有一个配置文件,其中包含一个名为 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