在环境创建后设置配置选项 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在环境创建后设置配置选项

您可以修改正在运行的环境的选项设置,方法是应用保存的配置,上传带有配置文件 (.ebextensions) 的新的源包或使用 JSON 文档。EB CLI 和 Elastic Beanstalk 控制台还具有客户端特定的功能,可用于设置和更新配置选项。

当您设置或更改某一配置选项时,根据更改的严重性,可能会触发完整环境更新。例如,如果对 aws:autoscaling:launchconfiguration 中的选项(如 InstanceType)进行更改,则需要重新预置环境中的 Amazon EC2 实例。这将触发滚动更新。其他配置更改无需中断或重新配置即可应用。

您可以使用 EB CLI 或 AWS CLI 命令从环境中删除选项设置。通过删除在 API 级别直接对环境设置的选项,可使配置文件中的设置 (否则被直接应用于环境的设置屏蔽) 将生效。

通过其他某种配置方法直接对环境设置相同的选项可以覆盖保存的配置和配置文件中的相应设置。但只有应用更新的保存的配置或配置文件才能完全删除这些设置。如果选项在保存的配置、配置文件中未设置并且也没有直接对环境设置,则应用默认值 (如果有默认值)。有关详细信息,请参阅优先顺序

Elastic Beanstalk 控制台

您可以在 Elastic Beanstalk 控制台中更新配置选项设置,方法是部署包含配置文件的应用程序源包,应用保存的配置,或者在环境管理控制台中使用 Configuration (配置) 页面直接修改环境。

使用配置文件 (.ebextensions)

更新源目录中的配置文件,创建新的源包,并将新版本部署到您的 Elastic Beanstalk 环境以应用更改。

有关配置文件的详细信息,请参阅.Ebextensions

部署源包

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域) 列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在环境概述页面上,选择 Upload and deploy (上传和部署)

  4. 使用屏幕上的对话框上传源包。

  5. 选择 Deploy

  6. 部署完成后,选择站点 URL 以在新选项卡中打开您的网站。

对配置文件进行的更改不会覆盖保存的配置中的选项设置或在 API 级别直接应用于环境的设置。有关详细信息,请参阅优先顺序

使用保存的配置

对正在运行的环境应用保存的配置以便应用它所定义的选项设置。

将保存的配置应用于正在运行的环境(Elastic Beanstalk 控制台)

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域)列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Applications (应用程序),然后从列表中选择应用程序的名称。

    注意

    如果您有多个应用程序,请使用搜索栏筛选应用程序列表。

  3. 在导航窗格中,找到应用程序的名称,然后选择 Saved configurations (已保存的配置)

  4. 选择要应用的已保存的配置,然后选择 Load (加载)

  5. 选择一个环境,然后选择加载

保存的配置中定义的设置会覆盖配置文件中的设置,但会被使用环境管理控制台配置的设置覆盖。

有关创建保存的配置的详细信息,请参阅保存的配置

使用 Elastic Beanstalk 控制台

Elastic Beanstalk 控制台在每个环境的 Configuration (配置) 页面上提供多个配置选项。

在正在运行的环境中更改配置选项(Elastic Beanstalk 控制台)

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域)列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. 找到要编辑的配置页面:

    • 如果您看到感兴趣的选项,或者您知道它所在的配置类别,请在它的配置类别中选择 Edit (编辑)

    • 要查找一个选项,请打开表视图,然后在搜索框中输入搜索词。在您键入时,列表将会变短,并且仅显示与搜索词匹配的选项。

      在看到要查找的选项时,请在包含该选项的配置类别中选择 Edit (编辑)

      
                  Elastic Beanstalk 控制台的配置概述页面的表视图,其中显示了选项搜索
  5. 更改设置,然后选择保存

  6. 根据需要,在其他配置类别中重复前面的两个步骤。

  7. 选择应用

在环境管理控制台中对配置选项所做的更改将直接应用于环境。这些更改覆盖配置文件或保存的配置中的相同选项的设置。有关详细信息,请参阅优先顺序

有关使用 Elastic Beanstalk 控制台更改运行的环境上的配置选项的详细信息,请参阅配置 Elastic Beanstalk 环境下面的主题。

EB CLI

您可以使用 EB CLI 更新配置选项设置,方法是部署包含配置文件的源代码,应用来自保存的配置的设置,或使用 eb config 命令直接修改环境配置。

使用配置文件 (.ebextensions)

.config 文件放在项目文件夹的 .ebextensions 下,以便与应用程序代码一起部署它们。

有关配置文件的详细信息,请参阅.Ebextensions

~/workspace/my-app/ |-- .ebextensions | |-- environmentvariables.config | `-- healthcheckurl.config |-- .elasticbeanstalk | `-- config.yml |-- index.php `-- styles.css

使用 eb deploy 部署您的源代码。

~/workspace/my-app$ eb deploy

使用保存的配置

您可以使用 eb config 命令对正在运行的环境应用保存的配置。使用 --cfg 选项和保存的配置的名称可将其设置应用于环境。

$ eb config --cfg v1

在本例中,v1之前创建并保存的配置文件的名称。

使用此命令应用于环境的设置会覆盖在环境创建期间应用的设置以及在应用程序源包中的配置文件中定义的设置。

使用 eb config

通过 EB CLI 的 eb config 命令,您可以使用文本编辑器直接设置或删除对环境的选项设置。

当您运行 eb config 时,EB CLI 会显示从所有源 (包括配置文件、保存的配置、建议值、直接对环境设置的选项和 API 默认值) 应用于环境的设置。

注意

eb config 不会显示环境属性。要设置可在您的应用程序中读取的环境属性,请使用 eb setenv.

下面的示例显示在 aws:autoscaling:launchconfiguration 命名空间中应用的设置。这些设置包括:

  • EB CLI 在环境创建期间对 IamInstanceProfileInstanceType 应用的两个建议值。

  • 在创建期间根据存储库配置直接对环境设置的选项 EC2KeyName

  • 其他选项的 API 默认值。

ApplicationName: tomcat DateUpdated: 2015-09-30 22:51:07+00:00 EnvironmentName: tomcat SolutionStackName: 64bit Amazon Linux 2015.03 v2.0.1 running Tomcat 8 Java 8 settings: ... aws:autoscaling:launchconfiguration: BlockDeviceMappings: null EC2KeyName: my-key IamInstanceProfile: aws-elasticbeanstalk-ec2-role ImageId: ami-1f316660 InstanceType: t2.micro ...

使用 eb config 设置或更改配置选项

  1. 运行 eb config 查看您的环境配置。

    ~/workspace/my-app/$ eb config
  2. 使用默认文本编辑器更改任意设置值.

    aws:autoscaling:launchconfiguration: BlockDeviceMappings: null EC2KeyName: my-key IamInstanceProfile: aws-elasticbeanstalk-ec2-role ImageId: ami-1f316660 InstanceType: t2.medium
  3. 保存临时配置文件并退出。

  4. EB CLI 更新您的环境配置。

使用 eb config 设置配置选项会覆盖所有其他来源的设置。

您也可以使用 eb config 删除您的环境中的选项。

删除配置选项 (EB CLI)

  1. 运行 eb config 查看您的环境配置。

    ~/workspace/my-app/$ eb config
  2. 将所有显示的值都替换为字符串 null。您也可以删除包含要删除选项的整行。

    aws:autoscaling:launchconfiguration: BlockDeviceMappings: null EC2KeyName: my-key IamInstanceProfile: aws-elasticbeanstalk-ec2-role ImageId: ami-1f316660 InstanceType: null
  3. 保存临时配置文件并退出。

  4. EB CLI 更新您的环境配置。

通过 eb config 从环境中删除选项,可以使应用程序源包中配置文件中的相应选项设置生效。有关详细信息,请参阅优先顺序

使用 eb setenv

要使用 EB CLI 设置环境属性,请使用 eb setenv

~/workspace/my-app/$ eb setenv ENVVAR=TEST INFO: Environment update is starting. INFO: Updating environment my-env's configuration settings. INFO: Environment health has transitioned from Ok to Info. Command is executing on all instances. INFO: Successfully deployed new configuration to environment.

此命令在 aws:elasticbeanstalk:application:environment 命名空间中设置环境属性。通过 eb setenv 设置的环境属性经过短暂的更新过程即可用于您的应用程序。

使用 eb printenv 可查看您的环境中设置的环境属性。

~/workspace/my-app/$ eb printenv Environment Variables: ENVVAR = TEST

AWS CLI

您可以使用 AWS CLI 更新配置选项设置,方法是部署包含配置文件的源包,应用远程存储的保存的配置,或使用 aws elasticbeanstalk update-environment 命令直接修改环境。

使用配置文件 (.ebextensions)

要通过 AWS CLI 对正在运行的环境应用配置文件,请将它们包含在要上传到 Amazon S3 的应用程序源包中。

有关配置文件的详细信息,请参阅.Ebextensions

~/workspace/my-app-v1.zip |-- .ebextensions | |-- environmentvariables.config | `-- healthcheckurl.config |-- index.php `-- styles.css

上传应用程序源包并将其应用于正在运行的环境 (AWS CLI)

  1. 如果您在 Amazon S3 中还没有 Elastic Beanstalk 存储桶,请使用 create-storage-location 创建一个:

    $ aws elasticbeanstalk create-storage-location { "S3Bucket": "elasticbeanstalk-us-west-2-123456789012" }
  2. 将应用程序源包上传到 Amazon S3。

    $ aws s3 cp sourcebundlev2.zip s3://elasticbeanstalk-us-west-2-123456789012/my-app/sourcebundlev2.zip
  3. 创建应用程序版本。

    $ aws elasticbeanstalk create-application-version --application-name my-app --version-label v2 --description MyAppv2 --source-bundle S3Bucket="elasticbeanstalk-us-west-2-123456789012",S3Key="my-app/sourcebundlev2.zip"
  4. 更新环境。

    $ aws elasticbeanstalk update-environment --environment-name my-env --version-label v2

使用保存的配置

通过在 --template-name 命令中使用 aws elasticbeanstalk update-environment 选项可以对正在运行的环境应用保存的配置。

保存的配置必须位于您的 Amazon S3 存储桶中,位于 resources/templates 下以您的应用程序命名的路径中。例如,对于账户 123456789012,美国西部(俄勒冈)区域 (us-west-2) 中的 my-app 应用程序的 v1 模板位于 s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app/v1

对正在运行的环境应用保存的配置 (AWS CLI)

  • 使用 update-environment 选项在 --template-name 调用中指定保存的配置。

    $ aws elasticbeanstalk update-environment --environment-name my-env --template-name v1

Elastic Beanstalk 在您使用 aws elasticbeanstalk create-configuration-template 创建时将保存的配置放在此位置。您也可以在本地修改保存的配置并自行将它们放在此处。

使用命令行选项

使用 JSON 文档更改配置选项 (AWS CLI)

  1. 在本地文件中以 JSON 格式定义您的选项设置。

  2. 使用 update-environment 选项运行 --option-settings

    $ aws elasticbeanstalk update-environment --environment-name my-env --option-settings file://~/ebconfigs/as-zero.json

在本例中,as-zero.json 定义使用最少和最大零个实例配置环境的选项。这会停止环境中的实例而不终止环境。

~/ebconfigs/as-zero.json

[ { "Namespace": "aws:autoscaling:asg", "OptionName": "MinSize", "Value": "0" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MaxSize", "Value": "0" }, { "Namespace": "aws:autoscaling:updatepolicy:rollingupdate", "OptionName": "RollingUpdateEnabled", "Value": "false" } ]
注意

使用 update-environment 设置配置选项会覆盖所有其他来源的设置。

您也可以使用 update-environment 删除您的环境中的选项。

删除配置选项 (AWS CLI)

  • 使用 update-environment 选项运行 --settings-to-remove 命令。

    $ aws elasticbeanstalk update-environment --environment-name my-env --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=InstanceType

通过 update-environment 从环境中删除选项,可以使应用程序源包中配置文件中的相应选项设置生效。如果有一个选项不是使用这些方法中的任何方法配置的,则在有 API 默认值时就会使用 API 默认值。有关详细信息,请参阅优先顺序