配置选项 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置选项

Elastic Beanstalk 定义了大量配置选项,您可以使用这些选项来配置环境的行为及其包含的资源。配置选项组织到命名空间中,如 aws:autoscaling:asg,它定义用于环境的 Auto Scaling 组的选项。

在您创建环境时,Elastic Beanstalk 控制台和 EB CLI 设置一些配置选项,包括您显式设置的选项以及客户端定义的建议值。此外,您还可以在已保存的配置和配置文件中设置配置选项。如果在多个位置设置了同一个选项,则使用的值由优先顺序确定。

配置选项设置可以采用文本格式在环境创建之前进行创建并保存,在创建环境期间使用任何支持的客户端进行应用,以及在环境创建之后进行添加、修改或删除。有关可在这三个阶段的每个阶段中使用配置选项的所有方法的详细划分,请阅读以下主题:

有关命名空间和选项的完整列表,包括各自的默认值和支持的值,请参阅面向所有环境的常规选项特定于平台的选项

优先顺序

在创建环境期间,配置选项按照以下优先顺序(从最高到最低)从多个来源进行应用:

  • 直接应用于环境的设置 – 任何客户端在对 Elastic Beanstalk API 执行创建环境或更新环境操作期间指定的设置,包括 Elastic Beanstalk 控制台、EB CLI、Amazon CLI 和开发工具包。Elastic Beanstalk 控制台和 EB CLI 还会为在该级别应用的一些选项应用建议值(除非覆盖)。

  • 保存的配置 - 不直接应用于环境的任何选项的设置都从保存的配置加载(如果指定)。

  • 配置文件(.ebextensions) – 不直接应用于环境以及未在保存的配置中指定的任何选项的设置都从应用程序源包根文件夹处的 .ebextensions 文件夹中的配置文件加载。

    配置文件会按字母顺序执行。例如,.ebextensions/01run.config.ebextensions/02do.config 之前执行。

  • 默认值 - 如果配置选项具有默认值,则它仅当未在以上任何级别上设置选项时才应用。

如果在多个位置定义相同配置选项,则应用优先顺序最高的设置。通过保存的配置或直接应用于环境的设置来应用设置时,设置会作为环境配置的一部分进行存储。可以使用 Amazon CLI使用 EB CLI 删除这些设置。

配置文件中的设置不直接应用于环境,无法在不修改配置文件并部署新应用程序版本的情况下删除。如果删除使用其他方法之一来应用的设置,则会从源包中的配置文件加载该设置。

例如,假设在创建环境期间,您使用 Elastic Beanstalk 控制台、命令行选项或保存的配置将环境中的最小实例数设置为 5。而应用程序的源包还包含一个将最小实例数设置为 2 的配置文件。

当您创建环境时,Elastic Beanstalk 在 MinSize 命名空间中将 aws:autoscaling:asg 选项设置为 5。如果您随后从环境配置中删除该选项,则会加载配置文件的值,最小实例数设置为 2。如果您随后从源包中删除配置文件并重新部署,则 Elastic Beanstalk 使用默认设置 1。

建议值

Elastic Beanstalk 命令行界面(EB CLI)和 Elastic Beanstalk 控制台为某些配置选项提供了建议值。这些值可能与默认值不同,会在创建环境时在 API 级别上进行设置。建议值使 Elastic Beanstalk 可以改进默认环境配置,而无需对 API 进行无法向后兼容的更改。

例如,EB CLI 和 Elastic Beanstalk 控制台为 EC2 实例类型设置配置选项(InstanceType 命名空间中的 aws:autoscaling:launchconfiguration)。每个客户端都提供不同的方式来覆盖默认设置。在控制台中,您可以从 Create New Environment(创建新环境)向导的 Configuration Details(配置详细信息)页面上的下拉菜单中选择不同的实例类型。使用 EB CLI 时,您可以对 --instance_type 使用 eb create 参数。

由于建议值在 API 级别上进行设置,因此它们会覆盖您在配置文件或保存的配置设置的相同选项值。以下选项会进行设置:

Elastic Beanstalk 控制台
  • 命名空间: aws:autoscaling:launchconfiguration

    选项名称:IamInstanceProfileEC2KeyNameInstanceType

  • 命名空间: aws:autoscaling:updatepolicy:rollingupdate

    选项名称:RollingUpdateTypeRollingUpdateEnabled

  • 命名空间: aws:elasticbeanstalk:application

    选项名称:Application Healthcheck URL

  • 命名空间: aws:elasticbeanstalk:command

    选项名称:DeploymentPolicyBatchSizeBatchSizeType

  • 命名空间: aws:elasticbeanstalk:environment

    选项名称:ServiceRole

  • 命名空间: aws:elasticbeanstalk:healthreporting:system

    选项名称:SystemTypeHealthCheckSuccessThreshold

  • 命名空间: aws:elasticbeanstalk:sns:topics

    选项名称:Notification Endpoint

  • 命名空间: aws:elasticbeanstalk:sqsd

    选项名称:HttpConnections

  • 命名空间: aws:elb:loadbalancer

    选项名称:CrossZone

  • 命名空间: aws:elb:policies

    选项名称:ConnectionDrainingTimeoutConnectionDrainingEnabled

EB CLI
  • 命名空间: aws:autoscaling:launchconfiguration

    选项名称:IamInstanceProfileInstanceType

  • 命名空间: aws:autoscaling:updatepolicy:rollingupdate

    选项名称:RollingUpdateTypeRollingUpdateEnabled

  • 命名空间: aws:elasticbeanstalk:command

    选项名称:BatchSizeBatchSizeType

  • 命名空间: aws:elasticbeanstalk:environment

    选项名称:ServiceRole

  • 命名空间: aws:elasticbeanstalk:healthreporting:system

    选项名称:SystemType

  • 命名空间: aws:elb:loadbalancer

    选项名称:CrossZone

  • 命名空间: aws:elb:policies

    选项名称:ConnectionDrainingEnabled