本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在创建环境之前设置配置选项
AWS Elastic Beanstalk 支持大量配置选项,允许您修改应用于环境中资源的设置。其中一些选项具有默认值,可以覆盖这些值以自定义环境。其他选项可以进行配置以启动附加功能。
Elastic Beanstalk 支持两种用于保存配置选项设置的方法。YAML 或 JSON 格式的配置文件可以放在应用程序的源代码中(位于一个名为 .ebextensions
的目录中),并作为应用程序源包的一部分进行部署。您可在本地创建和管理配置文件。
保存的配置是您通过正在运行的环境或 JSON 选项文件创建并存储在 Elastic Beanstalk 中的模板。保存的现有配置也可以进行扩展以创建新配置。
注意
选项还可以在 JSON 文档中指定,并在使用 EB CLI 或 创建或更新环境时直接提供给 Elastic Beanstalk AWS 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 负载均衡器配置为向每个实例的路径发出 HTTP 请求, EC2 以确定其是否运行正常。/health
注意
YAML 依赖一致的缩进。当替换示例配置文件中的内容时,应匹配缩进级别,并且确保您的文本编辑器使用空格而不是字符来进行缩进。
在您的应用程序源包中包含 .ebextensions
目录,并将它部署到新的或现有的 Elastic Beanstalk 环境中。
除了 option_settings
之外,配置文件还支持几个部分,用于对在环境中的服务器上运行的软件和文件进行自定义。有关更多信息,请参阅.Ebextensions。
保存的配置
使用 Elastic Beanstalk 控制台、EB CLI 或 创建保存的配置,以保存在创建环境期间或在创建环境后应用于现有环境的设置 AWS CLI保存的配置属于某个应用程序,可以应用于该应用程序的新环境或现有环境。
Elastic Beanstalk 控制台
创建保存的配置(Elastic Beanstalk 控制台)
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 AWS 区域 -
在导航窗格中,选择 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
AWS CLI
使用aws elasticbeanstalk
create-configuration-template
从正在运行的环境创建保存的配置
创建保存的配置(AWS 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 文档
如果您使用 AWS CLI 来创建和更新环境,则还可以提供 JSON 格式的配置选项。如果您使用来创建和管理环境,则使用 JSON 格式 AWS CLI 的配置文件库会很有用。
例如,以下 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
配置选项。
~/ .yml workspace/my-app/.elasticbeanstalk/config
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