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 控制台

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

使用配置文件 (.ebextensions)

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

将更新的源包部署到您的环境(Elastic Beanstalk 控制台)

  1. 打开 Elastic Beanstalk 控制台

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

  3. 选择 Upload and Deploy (上传和部署)

    
              上传和部署
  4. 选择 Browse (浏览) 并打开应用程序源包。

  5. 选择 Deploy

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

使用保存的配置

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

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

  1. 打开 Elastic Beanstalk 控制台

  2. 选择您的应用程序的名称。

  3. 选择保存的配置

  4. 选择保存的配置,然后选择加载

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

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

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

使用环境管理控制台

Elastic Beanstalk 控制台在每个环境的配置页面上显示几个配置选项。

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

  1. 打开 Elastic Beanstalk 控制台

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

  3. 选择 Configuration

  4. 选择包含要修改的选项的配置卡上的修改

  5. 更改设置,然后选择保存

  6. 根据需要,在其他配置卡上重复前面 2 个步骤。

  7. 选择 Apply

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

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

EB CLI

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

使用配置文件 (.ebextensions)

.config 文件放在项目文件夹的 .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 的应用程序源包中。

~/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 选项可以对正在运行的环境应用保存的配置。

保存的配置必须位于您的 Elastic Beanstalk 存储桶中,位于 resources/templates 下以您的应用程序命名的路径中。例如,对于账户 123456789012,美国西部(俄勒冈) 区域的 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 默认值。有关详细信息,请参阅优先顺序