Configuration options
Elastic Beanstalk defines a large number of configuration options that you can use to configure your environment's behavior and the resources that it contains.
Configuration options are organized into namespaces like aws:autoscaling:asg
, which defines options for an environment's Auto Scaling group.
The Elastic Beanstalk console and EB CLI set configuration options when you create an environment, including options that you set explicitly, and recommended values defined by the client. You can also set configuration options in saved configurations and configuration files. If the same option is set in multiple locations, the value used is determined by the order of precedence.
Configuration option settings can be composed in text format and saved prior to environment creation, applied during environment creation using any supported client, and added, modified or removed after environment creation. For a detailed breakdown of all of the available methods for working with configuration options at each of these three stages, read the following topics:
For a complete list of namespaces and options, including default and supported values for each, see General options for all environments and Platform specific options.
Precedence
During environment creation, configuration options are applied from multiple sources with the following precedence, from highest to lowest:
-
Settings applied directly to the environment – Settings specified during a create environment or update environment operation on the Elastic Beanstalk API by any client, including the Elastic Beanstalk console, EB CLI, AWS CLI, and SDKs. The Elastic Beanstalk console and EB CLI also apply recommended values for some options that apply at this level unless overridden.
-
Saved Configurations – Settings for any options that are not applied directly to the environment are loaded from a saved configuration, if specified.
-
Configuration Files (.ebextensions) – Settings for any options that are not applied directly to the environment, and also not specified in a saved configuration, are loaded from configuration files in the
.ebextensions
folder at the root of the application source bundle.Configuration files are executed in alphabetical order. For example,
.ebextensions/01run.config
is executed before.ebextensions/02do.config
. -
Default Values – If a configuration option has a default value, it only applies when the option is not set at any of the above levels.
If the same configuration option is defined in more than one location, the setting with the highest precedence is applied. When a setting is applied from a saved configuration or settings applied directly to the environment, the setting is stored as part of the environment's configuration. These settings can be removed with the AWS CLI or with the EB CLI.
Settings in configuration files are not applied directly to the environment and cannot be removed without modifying the configuration files and deploying a new application version. If a setting applied with one of the other methods is removed, the same setting will be loaded from configuration files in the source bundle.
For example, say you set the minimum number of instances in your environment to 5 during environment creation, using either the Elastic Beanstalk console, a command line option, or a saved configuration. The source bundle for your application also includes a configuration file that sets the minimum number of instances to 2.
When you create the environment, Elastic Beanstalk sets the MinSize
option in the aws:autoscaling:asg
namespace to 5. If you then remove
the option from the environment configuration, the value in the configuration file is loaded, and the minimum number of instances is set to 2. If you then
remove the configuration file from the source bundle and redeploy, Elastic Beanstalk uses the default setting of 1.
Recommended values
The Elastic Beanstalk Command Line Interface (EB CLI) and Elastic Beanstalk console provide recommended values for some configuration options. These values can be different from the default values and are set at the API level when your environment is created. Recommended values allow Elastic Beanstalk to improve the default environment configuration without making backwards incompatible changes to the API.
For example, both the EB CLI and Elastic Beanstalk console set the configuration option for EC2 instance type (InstanceType
in the
aws:autoscaling:launchconfiguration
namespace). Each client provides a different way of overriding the default setting. In the console you
can choose a different instance type from a drop down menu on the Configuration Details page of the Create New
Environment wizard. With the EB CLI, you can use the --instance_type
parameter for eb
create.
Because the recommended values are set at the API level, they will override values for the same options that you set in configuration files or saved configurations. The following options are set:
Elastic Beanstalk console
-
Namespace:
aws:autoscaling:launchconfiguration
Option Names:
IamInstanceProfile
,EC2KeyName
,InstanceType
-
Namespace:
aws:autoscaling:updatepolicy:rollingupdate
Option Names:
RollingUpdateType
andRollingUpdateEnabled
-
Namespace:
aws:elasticbeanstalk:application
Option Name:
Application Healthcheck URL
-
Namespace:
aws:elasticbeanstalk:command
Option Name:
DeploymentPolicy
,BatchSize
andBatchSizeType
-
Namespace:
aws:elasticbeanstalk:environment
Option Name:
ServiceRole
-
Namespace:
aws:elasticbeanstalk:healthreporting:system
Option Name:
SystemType
andHealthCheckSuccessThreshold
-
Namespace:
aws:elasticbeanstalk:sns:topics
Option Name:
Notification Endpoint
-
Namespace:
aws:elasticbeanstalk:sqsd
Option Name:
HttpConnections
-
Namespace:
aws:elb:loadbalancer
Option Name:
CrossZone
-
Namespace:
aws:elb:policies
Option Names:
ConnectionDrainingTimeout
andConnectionDrainingEnabled
EB CLI
-
Namespace:
aws:autoscaling:launchconfiguration
Option Names:
IamInstanceProfile
,InstanceType
-
Namespace:
aws:autoscaling:updatepolicy:rollingupdate
Option Names:
RollingUpdateType
andRollingUpdateEnabled
-
Namespace:
aws:elasticbeanstalk:command
Option Name:
BatchSize
andBatchSizeType
-
Namespace:
aws:elasticbeanstalk:environment
Option Name:
ServiceRole
-
Namespace:
aws:elasticbeanstalk:healthreporting:system
Option Name:
SystemType
-
Namespace:
aws:elb:loadbalancer
Option Name:
CrossZone
-
Namespace:
aws:elb:policies
Option Names:
ConnectionDrainingEnabled