本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在创建环境之前设置配置选项
Amazon Elastic Beanstalk 支持大量配置选项,这些选项使您可以修改应用于环境中的资源的设置。其中一些选项具有默认值,可以覆盖这些值以自定义环境。其他选项可以进行配置以启动附加功能。
Elastic Beanstalk 支持两种用于保存配置选项设置的方法。YAML 或 JSON 格式的配置文件可以放在应用程序的源代码中(位于一个名为 .ebextensions
的目录中),并作为应用程序源包的一部分进行部署。您可在本地创建和管理配置文件。
保存的配置是您通过正在运行的环境或 JSON 选项文件创建并存储在 Elastic Beanstalk 中的模板。保存的现有配置也可以进行扩展以创建新配置。
注意
选项还可以在 JSON 文档中指定,并在使用 EB CLI 或 创建或更新环境时直接提供给 Elastic BeanstalkAmazon 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 负载均衡器以向每个 EC2 实例的 /health
路径进行 HTTP 请求,从而确定它是否运行状况良好。
注意
YAML 依赖一致的缩进。当替换示例配置文件中的内容时,应匹配缩进级别,并且确保您的文本编辑器使用空格而不是字符来进行缩进。
在您的应用程序源包中包含 .ebextensions
目录,并将它部署到新的或现有的 Elastic Beanstalk 环境中。
除了 option_settings
之外,配置文件还支持几个部分,用于对在环境中的服务器上运行的软件和文件进行自定义。有关更多信息,请参阅.Ebextensions。
保存的配置
使用 Elastic Beanstalk 控制台、EB CLI 或 创建保存的配置,以保存在创建环境期间或在创建环境后应用于现有环境的设置Amazon CLI 保存的配置属于某个应用程序,可以应用于该应用程序的新环境或现有环境。
Elastic Beanstalk 控制台
创建保存的配置(Elastic Beanstalk 控制台)
打开 Elastic Beanstalk 控制台
,然后在 Regions(区域)列表中选择您的 Amazon Web Services 区域。 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
-
选择 Actions(操作),然后选择 Save configuration(保存配置)。
-
使用屏幕上的对话框完成该操作。
保存的配置存储在 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)
-
保存所附加环境的当前配置:
~/project$
eb config save --cfg
my-app-v1
EB CLI 将配置保存到
~/project/.elasticbeanstalk/saved_configs/
my-app-v1
.cfg.yml -
如果需要,可在本地修改保存的配置。
-
将保存的配置上传到 S3:
~/project$
eb config put
my-app-v1
Amazon CLI
使用aws elasticbeanstalk
create-configuration-template
从正在运行的环境创建保存的配置
创建保存的配置(Amazon CLI)
-
使用
describe-environments
确定 Elastic Beanstalk 环境的环境 ID:$
aws elasticbeanstalk describe-environments --environment-name
{ "Environments": [ { "ApplicationName": "my-env", "EnvironmentName": "my-env", "VersionLabel": "89df", "Status": "Ready", "Description": "Environment created from the EB CLI using \"eb create\"", "EnvironmentId": "my-env
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" } ] } -
使用
create-configuration-template
保存环境的当前配置:$ aws elasticbeanstalk create-configuration-template --environment-id
e-vcghmm2zwk
--application-namemy-app
--template-namev1
Elastic Beanstalk 会将配置保存到 Amazon S3 中的 Elastic Beanstalk 存储桶中。
JSON 文档
如果您使用 Amazon CLI 创建和更新环境,则还可以采用 JSON 格式提供配置选项。如果您使用 Amazon 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