

# Configuration options
<a name="command-options"></a>

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](#configuration-options-recommendedvalues) 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-options-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:
+ [Setting configuration options before environment creation](environment-configuration-methods-before.md)
+ [Setting configuration options during environment creation](environment-configuration-methods-during.md)
+ [Setting configuration options after environment creation](environment-configuration-methods-after.md)

For a complete list of namespaces and options, including default and supported values for each, see [General options for all environments](command-options-general.md) and [Platform specific options](command-options-specific.md).

## Precedence
<a name="configuration-options-precedence"></a>

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](#configuration-options-recommendedvalues) 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](environment-configuration-methods-after.md#configuration-options-remove-awscli) or [with the EB CLI](environment-configuration-methods-after.md#configuration-options-remove-ebcli).

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
<a name="configuration-options-recommendedvalues"></a>

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**](eb3-create.md).

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` and `RollingUpdateEnabled`
+ Namespace: `aws:elasticbeanstalk:application`

  Option Name: `Application Healthcheck URL`
+ Namespace: `aws:elasticbeanstalk:command`

  Option Name: `DeploymentPolicy`, `BatchSize` and `BatchSizeType`
+ Namespace: `aws:elasticbeanstalk:environment`

  Option Name: `ServiceRole`
+ Namespace: `aws:elasticbeanstalk:healthreporting:system`

  Option Name: `SystemType` and `HealthCheckSuccessThreshold`
+ 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` and `ConnectionDrainingEnabled`

**EB CLI**
+ Namespace: `aws:autoscaling:launchconfiguration`

  Option Names: `IamInstanceProfile`, `InstanceType`
+ Namespace: `aws:autoscaling:updatepolicy:rollingupdate`

  Option Names: `RollingUpdateType` and `RollingUpdateEnabled`
+ Namespace: `aws:elasticbeanstalk:command`

  Option Name: `BatchSize` and `BatchSizeType`
+ 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`

# Setting configuration options before environment creation
<a name="environment-configuration-methods-before"></a>

AWS Elastic Beanstalk supports a large number of [configuration options](command-options.md) that let you modify the settings that are applied to resources in your environment. Several of these options have default values that can be overridden to customize your environment. Other options can be configured to enable additional features.

Elastic Beanstalk supports two methods of saving configuration option settings. Configuration files in YAML or JSON format can be included in your application's source code in a directory named `.ebextensions` and deployed as part of your application source bundle. You create and manage configuration files locally.

Saved configurations are templates that you create from a running environment or JSON options file and store in Elastic Beanstalk. Existing saved configurations can also be extended to create a new configuration.

**Note**  
Settings defined in configuration files and saved configurations have lower precedence than settings configured during or after environment creation, including recommended values applied by the Elastic Beanstalk console and [EB CLI](eb-cli3.md). See [Precedence](command-options.md#configuration-options-precedence) for details.

Options can also be specified in a JSON document and provided directly to Elastic Beanstalk when you create or update an environment with the EB CLI or AWS CLI. Options provided directly to Elastic Beanstalk in this manner override all other methods.

For a full list of available options, see [Configuration options](command-options.md).

**Topics**
+ [Configuration files (`.ebextensions`)](#configuration-options-before-ebextensions)
+ [Saved configurations](#configuration-options-before-savedconfig)
+ [JSON document](#configuration-options-before-json)
+ [EB CLI configuration](#configuration-options-before-configyml)

## Configuration files (`.ebextensions`)
<a name="configuration-options-before-ebextensions"></a>

Use `.ebextensions` to configure options that are required to make your application work, and provide default values for other options that can be overridden at a higher level of [precedence](command-options.md#configuration-options-precedence). Options specified in `.ebextensions` have the lowest level of precedence and are overridden by settings at any other level.

To use configuration files, create a folder named `.ebextensions` at the top level of your project's source code. Add a file with the extension `.config` and specify options in the following manner:

```
option_settings:
  - namespace:  namespace
    option_name:  option name
    value:  option value
  - namespace:  namespace
    option_name:  option name
    value:  option value
```

For example, the following configuration file sets the application's health check url to `/health`:

`healthcheckurl.config`

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application
    option_name:  Application Healthcheck URL
    value:  /health
```

In JSON:

```
{
 "option_settings" :
    [
      {
        "namespace" : "aws:elasticbeanstalk:application",
        "option_name" : "Application Healthcheck URL",
        "value" : "/health"
      }
    ]
}
```

This configures the Elastic Load Balancing load balancer in your Elastic Beanstalk environment to make an HTTP request to the path `/health` to each EC2 instance to determine if it is healthy or not.

**Note**  
YAML relies on consistent indentation. Match the indentation level when replacing content in an example configuration file and ensure that your text editor uses spaces, not tab characters, to indent.

Include the `.ebextensions` directory in your [Application Source Bundle](applications-sourcebundle.md) and deploy it to a new or existing Elastic Beanstalk environment.

Configuration files support several sections in addition to `option_settings` for customizing the software and files that run on the servers in your environment. For more information, see [.Ebextensions](ebextensions.md).

## Saved configurations
<a name="configuration-options-before-savedconfig"></a>

Create a saved configuration to save settings that you have applied to an existing environment during or after environment creation by using the Elastic Beanstalk console, EB CLI, or AWS CLI. Saved configurations belong to an application and can be applied to new or existing environments for that application.

**Topics**
+ [Elastic Beanstalk console](#configuration-options-before-savedconfig-console)
+ [EB CLI](#configuration-options-before-savedconfig-ebcli)
+ [AWS CLI](#configuration-options-before-savedconfig-awscli)

### Elastic Beanstalk console
<a name="configuration-options-before-savedconfig-console"></a>

**To create a saved configuration (Elastic Beanstalk console)**

1. Open the [Elastic Beanstalk console](https://console.aws.amazon.com/elasticbeanstalk), and in the **Regions** list, select your AWS Region.

1. In the navigation pane, choose **Environments**, and then choose the name of your environment from the list.

1. Choose **Actions**, and then choose **Save configuration**.

1. Use the on-screen dialog box to complete the action.

Saved configurations are stored in the Elastic Beanstalk S3 bucket in a folder named after your application. For example, configurations for an application named `my-app` in the us-west-2 region for account number 123456789012 can be found at `s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app`.

### EB CLI
<a name="configuration-options-before-savedconfig-ebcli"></a>

The [EB CLI](eb-cli3.md) also provides subcommands for interacting with saved configurations under [**eb config**](eb3-config.md):

**To create a saved configuration (EB CLI)**

1. Save the attached environment's current configuration:

   ```
   ~/project$ eb config save --cfg my-app-v1
   ```

   The EB CLI saves the configuration to `~/project/.elasticbeanstalk/saved_configs/my-app-v1.cfg.yml`

1. Modify the saved configuration locally if needed.

1. Upload the saved configuration to S3:

   ```
   ~/project$ eb config put my-app-v1
   ```

### AWS CLI
<a name="configuration-options-before-savedconfig-awscli"></a>

Create a saved configuration from a running environment with `aws elasticbeanstalk create-configuration-template`

**To create a saved configuration (AWS CLI)**

1. Identify your Elastic Beanstalk environment's environment ID with `describe-environments`:

   ```
   $ aws elasticbeanstalk describe-environments --environment-name my-env
   {
       "Environments": [
           {
               "ApplicationName": "my-env",
               "EnvironmentName": "my-env",
               "VersionLabel": "89df",
               "Status": "Ready",
               "Description": "Environment created from the EB CLI using \"eb create\"",
               "EnvironmentId": "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"
           }
       ]
   }
   ```

1. Save the environment's current configuration with `create-configuration-template`:

   ```
   $ aws elasticbeanstalk create-configuration-template --environment-id e-vcghmm2zwk --application-name my-app --template-name v1
   ```

Elastic Beanstalk saves the configuration to your Elastic Beanstalk bucket in Amazon S3.

## JSON document
<a name="configuration-options-before-json"></a>

If you use the AWS CLI to create and update environments, you can also provide configuration options in JSON format. A library of configuration files in JSON is useful if you use the AWS CLI to create and manage environments.

For example, the following JSON document sets the application's health check url to `/health`:

**\$1/ebconfigs/healthcheckurl.json**

```
[
  {
    "Namespace": "aws:elasticbeanstalk:application",
    "OptionName": "Application Healthcheck URL",
    "Value": "/health"
  }
]
```

## EB CLI configuration
<a name="configuration-options-before-configyml"></a>

In addition to supporting saved configurations and direct environment configuration with **eb config** commands, the EB CLI has a configuration file with an option named `default_ec2_keyname` that you can use to specify an Amazon EC2 key pair for SSH access to the instances in your environment. The EB CLI uses this option to set the `EC2KeyName` configuration option in the `aws:autoscaling:launchconfiguration` namespace. 

**\$1/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
```

# Setting configuration options during environment creation
<a name="environment-configuration-methods-during"></a>

When you create an AWS Elastic Beanstalk environment by using the Elastic Beanstalk console, EB CLI, AWS CLI, an SDK, or the Elastic Beanstalk API, you can provide values for configuration options to customize your environment and the AWS resources that are launched within it.

For anything other than a one-off configuration change, you can [store configuration files](environment-configuration-methods-before.md) locally, in your source bundle, or in Amazon S3.

This topic includes procedures for all of the methods to set configuration options during environment creation.

**Topics**
+ [In the Elastic Beanstalk console](#configuration-options-during-console)
+ [Using the EB CLI](#configuration-options-during-ebcli)
+ [Using the AWS CLI](#configuration-options-during-awscli)

## In the Elastic Beanstalk console
<a name="configuration-options-during-console"></a>

When you create an Elastic Beanstalk environment in the Elastic Beanstalk console, you can provide configuration options using configuration files, saved configurations, and forms in the **Create New Environment** wizard.

**Topics**
+ [Using configuration files (`.ebextensions`)](#configuration-options-during-console-ebextensions)
+ [Using a saved configuration](#configuration-options-during-console-savedconfig)
+ [Using the new environment wizard](#configuration-options-during-console-wizard)

### Using configuration files (`.ebextensions`)
<a name="configuration-options-during-console-ebextensions"></a>

Include `.config` files in your [application source bundle](applications-sourcebundle.md) in a folder named `.ebextensions`.

For details about configuration files, see [.Ebextensions](ebextensions.md).

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

Upload the source bundle to Elastic Beanstalk normally, during [environment creation](using-features.environments.md).

The Elastic Beanstalk console applies [recommended values](command-options.md#configuration-options-recommendedvalues) for some configuration options and has form fields for others. Options configured by the Elastic Beanstalk console are applied directly to the environment and override settings in configuration files.

### Using a saved configuration
<a name="configuration-options-during-console-savedconfig"></a>

When you create a new environment using the Elastic Beanstalk console, one of the first steps is to choose a configuration. The configuration can be a [**predefined configuration**](concepts.platforms.md), typically the latest version of a platform such as **PHP** or **Tomcat**, or it can be a **saved configuration**.

**To apply a saved configuration during environment creation (Elastic Beanstalk console)**

1. Open the [Elastic Beanstalk console](https://console.aws.amazon.com/elasticbeanstalk), and in the **Regions** list, select your AWS Region.

1. In the navigation pane, choose **Applications**, and then choose your application's name from the list.

1. In the navigation pane, find your application's name and choose **Saved configurations**.

1. Select the saved configuration you want to apply, and then choose **Launch environment**.

1. Proceed through the wizard to create your environment.

Saved configurations are application-specific. See [Saved configurations](environment-configuration-methods-before.md#configuration-options-before-savedconfig) for details on creating saved configurations.

### Using the new environment wizard
<a name="configuration-options-during-console-wizard"></a>

Most of the standard configuration options are presented on the **Configure more options** page of the [Create New Environment wizard](environments-create-wizard.md). If you create an Amazon RDS database or configure a VPC for your environment, additional configuration options are available for those resources.

**To set configuration options during environment creation (Elastic Beanstalk console)**

1. Open the [Elastic Beanstalk console](https://console.aws.amazon.com/elasticbeanstalk), and in the **Regions** list, select your AWS Region.

1. In the navigation pane, choose **Applications**.

1. Choose or [create](applications.md) an application.

1. Choose **Actions**, and then choose **Create environment**.

1. Proceed through the wizard, and choose **Configure more options**.

1. Choose any of the **configuration presets**, and then choose **Edit** in one or more of the configuration categories to change a group of related configuration options.

1. When you are done making option selections, choose **Create environment**.

Any options that you set in the new environment wizard are set directly on the environment and override any option settings in saved configurations or configuration files (`.ebextensions`) that you apply. You can remove settings after the environment is created using the [EB CLI](environment-configuration-methods-after.md#configuration-options-after-ebcli) or [AWS CLI](environment-configuration-methods-after.md#configuration-options-after-awscli) to allow the settings in saved configurations or configuration files to surface.

For details about the new environment wizard, see [The create new environment wizard](environments-create-wizard.md).

## Using the EB CLI
<a name="configuration-options-during-ebcli"></a>

**Topics**
+ [Using configuration files (`.ebextensions`)](#configuration-options-during-ebcli-ebextensions)
+ [Using saved configurations](#configuration-options-during-ebcli-savedconfig)
+ [Using command line options](#configuration-options-during-ebcli-params)

### Using configuration files (`.ebextensions`)
<a name="configuration-options-during-ebcli-ebextensions"></a>

Include `.config` files in your project folder under `.ebextensions` to deploy them with your application code.

For details about configuration files, see [.Ebextensions](ebextensions.md).

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

Create your environment and deploy your source code to it with **eb create**.

```
~/workspace/my-app$ eb create my-env
```

### Using saved configurations
<a name="configuration-options-during-ebcli-savedconfig"></a>

To apply a saved configuration when you create an environment with [**eb create**](eb3-create.md), use the `--cfg` option.

```
~/workspace/my-app$ eb create --cfg savedconfig
```

You can store the saved configuration in your project folder or in your Elastic Beanstalk storage location on Amazon S3. In the previous example, the EB CLI first looks for a saved configuration file named `savedconfig.cfg.yml` in the folder `.elasticbeanstalk/saved_configs/`. Do not include the file name extensions (`.cfg.yml`) when applying a saved configuration with `--cfg`.

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

If the EB CLI does not find the configuration locally, it looks in the Elastic Beanstalk storage location in Amazon S3. For details on creating, editing, and uploading saved configurations, see [Saved configurations](environment-configuration-methods-before.md#configuration-options-before-savedconfig).

### Using command line options
<a name="configuration-options-during-ebcli-params"></a>

The EB CLI **eb create** command has several [options](eb3-create.md#eb3-createoptions) that you can use to set configuration options during environment creation. You can use these options to add an RDS database to your environment, configure a VPC, or override [recommended values](command-options.md#configuration-options-recommendedvalues).

For example, the EB CLI uses the `t2.micro` instance type by default. To choose a different instance type, use the `--instance_type` option.

```
$ eb create my-env --instance_type t2.medium
```

To create an Amazon RDS database instance and attach it to your environment, use the `--database` options.

```
$ eb create --database.engine postgres --database.username dbuser
```

If you leave out the environment name, database password, or any other parameters that are required to create your environment, the EB CLI prompts you to enter them.

See [eb create](eb3-create.md) for a full list of available options and usage examples.

## Using the AWS CLI
<a name="configuration-options-during-awscli"></a>

When you use the `create-environment` command to create an Elastic Beanstalk environment with the AWS CLI, the AWS CLI does not apply any [recommended values](command-options.md#configuration-options-recommendedvalues). All configuration options are defined in configuration files in the source bundle that you specify. 

**Topics**
+ [Using configuration files (`.ebextensions`)](#configuration-options-during-awscli-ebextensions)
+ [Using a saved configuration](#configuration-options-during-awscli-savedconfig)
+ [Using command line options](#configuration-options-during-awscli-params)

### Using configuration files (`.ebextensions`)
<a name="configuration-options-during-awscli-ebextensions"></a>

To apply configuration files to an environment that you create with the AWS CLI, include them in the application source bundle that you upload to Amazon S3.

For details about configuration files, see [.Ebextensions](ebextensions.md).

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

**To upload an application source bundle and create an environment with the AWS CLI**

1. If you don't already have an Elastic Beanstalk bucket in Amazon S3, create one with `create-storage-location`.

   ```
   $ aws elasticbeanstalk create-storage-location
   {
       "S3Bucket": "elasticbeanstalk-us-west-2-123456789012"
   }
   ```

1. Upload your application source bundle to Amazon S3.

   ```
   $ aws s3 cp sourcebundle.zip s3://elasticbeanstalk-us-west-2-123456789012/my-app/sourcebundle.zip
   ```

1. Create the application version.

   ```
   $ aws elasticbeanstalk create-application-version --application-name my-app --version-label v1 --description MyAppv1 --source-bundle S3Bucket="elasticbeanstalk-us-west-2-123456789012",S3Key="my-app/sourcebundle.zip" --auto-create-application
   ```

1. Create the environment.

   ```
   $ aws elasticbeanstalk create-environment --application-name my-app --environment-name my-env --version-label v1 --solution-stack-name "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8"
   ```

### Using a saved configuration
<a name="configuration-options-during-awscli-savedconfig"></a>

To apply a saved configuration to an environment during creation, use the `--template-name` parameter.

```
$ aws elasticbeanstalk create-environment --application-name my-app --environment-name my-env --template-name savedconfig --version-label v1
```

When you specify a saved configuration, do not also specify a solution stack name. Saved configurations already specify a solution stack and Elastic Beanstalk will return an error if you try to use both options. 

### Using command line options
<a name="configuration-options-during-awscli-params"></a>

Use the `--option-settings` parameter to specify configuration options in JSON format.

```
$ aws elasticbeanstalk create-environment --application-name my-app --environment-name my-env --version-label v1 --template-name savedconfig --option-settings '[
  {
    "Namespace": "aws:elasticbeanstalk:application",
    "OptionName": "Application Healthcheck URL",
    "Value": "/health"
  }
]
```

To load the JSON from a file, use the `file://` prefix.

```
$ aws elasticbeanstalk create-environment --application-name my-app --environment-name my-env --version-label v1 --template-name savedconfig --option-settings file://healthcheckurl.json
```

Elastic Beanstalk applies option settings that you specify with the `--option-settings` option directly to your environment. If the same options are specified in a saved configuration or configuration file, `--option-settings` overrides those values.

# Setting configuration options after environment creation
<a name="environment-configuration-methods-after"></a>

You can modify the option settings on a running environment by applying saved configurations, uploading a new source bundle with configuration files (`.ebextensions`), or using a JSON document. The EB CLI and Elastic Beanstalk console also have client-specific functionality for setting and updating configuration options.

When you set or change a configuration option, you can trigger a full environment update, depending on the severity of the change. For example, changes to options in the [`aws:autoscaling:launchconfiguration`](command-options-general.md#command-options-general-autoscalinglaunchconfiguration), such as `InstanceType`, require that the Amazon EC2 instances in your environment are reprovisioned. This triggers a [rolling update](using-features.rollingupdates.md). Other configuration changes can be applied without any interruption or reprovisioning.

You can remove option settings from an environment with EB CLI or AWS CLI commands. Removing an option that has been set directly on an environment at an API level allows settings in configuration files, which are otherwise masked by settings applied directly to an environment, to surface and take effect.

Settings in saved configurations and configuration files can be overridden by setting the same option directly on the environment with one of the other configuration methods. However, these can only be removed completely by applying an updated saved configuration or configuration file. When an option is not set in a saved configuration, in a configuration file, or directly on an environment, the default value applies, if there is one. See [Precedence](command-options.md#configuration-options-precedence) for details.

**Topics**
+ [The Elastic Beanstalk console](#configuration-options-after-console)
+ [The EB CLI](#configuration-options-after-ebcli)
+ [The AWS CLI](#configuration-options-after-awscli)

## The Elastic Beanstalk console
<a name="configuration-options-after-console"></a>

You can update configuration option settings in the Elastic Beanstalk console by deploying an application source bundle that contains configuration files, applying a saved configuration, or modifying the environment directly with the **Configuration** page in the environment management console.

**Topics**
+ [Using configuration files (`.ebextensions`)](#configuration-options-after-console-ebextensions)
+ [Using a saved configuration](#configuration-options-after-console-savedconfig)
+ [Using the Elastic Beanstalk console](#configuration-options-after-console-configpage)

### Using configuration files (`.ebextensions`)
<a name="configuration-options-after-console-ebextensions"></a>

Update configuration files in your source directory, create a new source bundle, and deploy the new version to your Elastic Beanstalk environment to apply the changes.

For details about configuration files, see [.Ebextensions](ebextensions.md).

**To deploy a source bundle**

1. Open the [Elastic Beanstalk console](https://console.aws.amazon.com/elasticbeanstalk), and in the **Regions** list, select your AWS Region.

1. In the navigation pane, choose **Environments**, and then choose the name of your environment from the list.

1. On the environment overview page, choose **Upload and deploy**.

1. Use the on-screen dialog box to upload the source bundle.

1. Choose **Deploy**.

1. When the deployment completes, you can choose the site URL to open your website in a new tab.

Changes made to configuration files will not override option settings in saved configurations or settings applied directly to the environment at the API level. See [Precedence](command-options.md#configuration-options-precedence) for details.

### Using a saved configuration
<a name="configuration-options-after-console-savedconfig"></a>

Apply a saved configuration to a running environment to apply option settings that it defines.

**To apply a saved configuration to a running environment (Elastic Beanstalk console)**

1. Open the [Elastic Beanstalk console](https://console.aws.amazon.com/elasticbeanstalk), and in the **Regions** list, select your AWS Region.

1. In the navigation pane, choose **Applications**, and then choose your application's name from the list.

1. In the navigation pane, find your application's name and choose **Saved configurations**.

1. Select the saved configuration you want to apply, and then choose **Load**.

1. Select an environment, and then choose **Load**.

Settings defined in a saved configuration override settings in configuration files, and are overridden by settings configured using the environment management console.

See [Saved configurations](environment-configuration-methods-before.md#configuration-options-before-savedconfig) for details on creating saved configurations.

### Using the Elastic Beanstalk console
<a name="configuration-options-after-console-configpage"></a>

The Elastic Beanstalk console presents many configuration options on the **Configuration** page for each environment.

**To change configuration options on a running environment (Elastic Beanstalk console)**

1. Open the [Elastic Beanstalk console](https://console.aws.amazon.com/elasticbeanstalk), and in the **Regions** list, select your AWS Region.

1. In the navigation pane, choose **Environments**, and then choose the name of your environment from the list.

1. In the navigation pane, choose **Configuration**.

1. Find the configuration page you want to edit:
   + If you see the option you're interested in, or you know which configuration category it's in, choose **Edit** in the configuration category for it.
   + To look for an option, turn on **Table View**, and then enter search terms into the search box. As you type, the list gets shorter and shows only options that match your search terms.

     When you see the option you're looking for, choose **Edit** in the configuration category that contains it.  
![\[Table view of the configuration overview page of the Elastic Beanstalk console, showing an option search\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/images/environments-cfg-console.overview.table.search1.png)

1. Change settings, and then choose **Save**.

1. Repeat the previous two steps in additional configuration categories, as needed.

1. Choose **Apply**.

Changes made to configuration options in the environment management console are applied directly to the environment. These changes override settings for the same options in configuration files or saved configurations. For details, see [Precedence](command-options.md#configuration-options-precedence).

For details about changing configuration options on a running environment using the Elastic Beanstalk console, see the topics under [Configuring Elastic Beanstalk environments](customize-containers.md).

## The EB CLI
<a name="configuration-options-after-ebcli"></a>

You can update configuration option settings with the EB CLI by deploying source code that contains configuration files, applying settings from a saved configuration, or modifying the environment configuration directly with the **eb config** command.

**Topics**
+ [Using configuration files (`.ebextensions`)](#configuration-options-after-ebcli-ebextensions)
+ [Using a saved configuration](#configuration-options-after-ebcli-savedconfig)
+ [Using **eb config**](#configuration-options-after-ebcli-ebconfig)
+ [Using **eb setenv**](#configuration-options-after-ebcli-ebsetenv)

### Using configuration files (`.ebextensions`)
<a name="configuration-options-after-ebcli-ebextensions"></a>

Include `.config` files in your project folder under `.ebextensions` to deploy them with your application code.

For details about configuration files, see [.Ebextensions](ebextensions.md).

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

Deploy your source code with **eb deploy**.

```
~/workspace/my-app$ eb deploy
```

### Using a saved configuration
<a name="configuration-options-after-ebcli-savedconfig"></a>

You can use the **eb config** command to apply a saved configuration to a running environment. Use the `--cfg` option with the name of the saved configuration to apply its settings to your environment.

```
$ eb config --cfg v1
```

In this example, `v1` is the name of a [previously created and saved configuration file](environment-configuration-methods-before.md#configuration-options-before-savedconfig).

Settings applied to an environment with this command override settings that were applied during environment creation, and settings defined in configuration files in your application source bundle.

### Using **eb config**
<a name="configuration-options-after-ebcli-ebconfig"></a>

The EB CLI's **eb config** command lets you set and remove option settings directly on an environment by using a text editor.

When you run **eb config**, the EB CLI shows settings applied to your environment from all sources, including configuration files, saved configurations, recommended values, options set directly on the environment, and API defaults.

**Note**  
**eb config** does not show environment properties. To set environment properties that you can read from within your application, use [**eb setenv**](#configuration-options-after-ebcli-ebsetenv).

The following example shows settings applied in the `aws:autoscaling:launchconfiguration` namespace. These settings include:
+ Two recommended values, for `IamInstanceProfile` and `InstanceType`, applied by the EB CLI during environment creation.
+ The option `EC2KeyName`, set directly on the environment during creation based on repository configuration.
+ API default values for the other options.

```
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
...
```

**To set or change configuration options with **eb config****

1. Run **eb config** to view your environment's configuration.

   ```
   ~/workspace/my-app/$ eb config
   ```

1. Change any of the setting values using the default text editor.

   ```
   aws:autoscaling:launchconfiguration:
       BlockDeviceMappings: null
       EC2KeyName: my-key
       IamInstanceProfile: aws-elasticbeanstalk-ec2-role
       ImageId: ami-1f316660
       InstanceType: t2.medium
   ```

1. Save the temporary configuration file and exit.

1. The EB CLI updates your environment configuration.

Setting configuration options with **eb config** overrides settings from all other sources.

You can also remove options from your environment with **eb config**.<a name="configuration-options-remove-ebcli"></a>

**To remove configuration options (EB CLI)**

1. Run **eb config** to view your environment's configuration.

   ```
   ~/workspace/my-app/$ eb config
   ```

1. Replace any value shown with the string `null`. You can also delete the entire line containing the option that you want to remove.

   ```
   aws:autoscaling:launchconfiguration:
       BlockDeviceMappings: null
       EC2KeyName: my-key
       IamInstanceProfile: aws-elasticbeanstalk-ec2-role
       ImageId: ami-1f316660
       InstanceType: null
   ```

1. Save the temporary configuration file and exit.

1. The EB CLI updates your environment configuration.

Removing options from your environment with **eb config** allows settings for the same options to surface from configuration files in your application source bundle. See [Precedence](command-options.md#configuration-options-precedence) for details.

### Using **eb setenv**
<a name="configuration-options-after-ebcli-ebsetenv"></a>

To set environment properties with the EB CLI, use **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.
```

This command sets environment properties in the [`aws:elasticbeanstalk:application:environment` namespace](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment). Environment properties set with **eb setenv** are available to your application after a short update process.

View environment properties set on your environment with **eb printenv**.

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

## The AWS CLI
<a name="configuration-options-after-awscli"></a>

You can update configuration option settings with the AWS CLI by deploying a source bundle that contains configuration files, applying a remotely stored saved configuration, or modifying the environment directly with the `aws elasticbeanstalk update-environment` command.

**Topics**
+ [Using configuration files (`.ebextensions`)](#configuration-options-after-awscli-ebextensions)
+ [Using a saved configuration](#configuration-options-after-awscli-savedconfig)
+ [Using command line options](#configuration-options-after-awscli-commandline)

### Using configuration files (`.ebextensions`)
<a name="configuration-options-after-awscli-ebextensions"></a>

To apply configuration files to a running environment with the AWS CLI, include them in the application source bundle that you upload to Amazon S3.

For details about configuration files, see [.Ebextensions](ebextensions.md).

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

**To upload an application source bundle and apply it to a running environment (AWS CLI)**

1. If you don't already have an Elastic Beanstalk bucket in Amazon S3, create one with `create-storage-location`:

   ```
   $ aws elasticbeanstalk create-storage-location
   {
       "S3Bucket": "elasticbeanstalk-us-west-2-123456789012"
   }
   ```

1. Upload your application source bundle to Amazon S3.

   ```
   $ aws s3 cp sourcebundlev2.zip s3://elasticbeanstalk-us-west-2-123456789012/my-app/sourcebundlev2.zip
   ```

1. Create the application version.

   ```
   $ 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"
   ```

1. Update the environment.

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

### Using a saved configuration
<a name="configuration-options-after-awscli-savedconfig"></a>

You can apply a saved configuration to a running environment with the `--template-name` option on the `aws elasticbeanstalk update-environment` command.

The saved configuration must be in your Elastic Beanstalk bucket in a path named after your application under `resources/templates`. For example, the `v1` template for the `my-app` application in the US West (Oregon) Region (us-west-2) for account 123456789012 is located at `s3://elasticbeanstalk-us-west-2-123456789012/resources/templates/my-app/v1`

**To apply a saved configuration to a running environment (AWS CLI)**
+ Specify the saved configuration in an `update-environment` call with the `--template-name` option.

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

Elastic Beanstalk places saved configurations in this location when you create them with `aws elasticbeanstalk create-configuration-template`. You can also modify saved configurations locally and place them in this location yourself.

### Using command line options
<a name="configuration-options-after-awscli-commandline"></a>

**To change configuration options with a JSON document (AWS CLI)**

1. Define your option settings in JSON format in a local file.

1. Run `update-environment` with the `--option-settings` option.

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

In this example, `as-zero.json` defines options that configure the environment with a minimum and maximum of zero instances. This stops the instances in the environment without terminating the environment.

**`~/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"
    }
]
```

**Note**  
Setting configuration options with `update-environment` overrides settings from all other sources.

You can also remove options from your environment with `update-environment`.<a name="configuration-options-remove-awscli"></a>

**To remove configuration options (AWS CLI)**
+ Run the `update-environment` command with the `--options-to-remove` option.

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

Removing options from your environment with `update-environment` allows settings for the same options to surface from configuration files in your application source bundle. If an option isn't configured using any of these methods, the API default value applies, if one exists. See [Precedence](command-options.md#configuration-options-precedence) for details.

# General options for all environments
<a name="command-options-general"></a>

**Topics**
+ [aws:autoscaling:asg](#command-options-general-autoscalingasg)
+ [aws:autoscaling:launchconfiguration](#command-options-general-autoscalinglaunchconfiguration)
+ [aws:autoscaling:scheduledaction](#command-options-general-autoscalingscheduledaction)
+ [aws:autoscaling:trigger](#command-options-general-autoscalingtrigger)
+ [aws:autoscaling:updatepolicy:rollingupdate](#command-options-general-autoscalingupdatepolicyrollingupdate)
+ [aws:ec2:instances](#command-options-general-ec2instances)
+ [aws:ec2:vpc](#command-options-general-ec2vpc)
+ [aws:elasticbeanstalk:application](#command-options-general-elasticbeanstalkapplication)
+ [aws:elasticbeanstalk:application:environment](#command-options-general-elasticbeanstalkapplicationenvironment)
+ [aws:elasticbeanstalk:application:environmentsecrets](#command-options-general-elasticbeanstalk-application-environmentsecrets)
+ [aws:elasticbeanstalk:cloudwatch:logs](#command-options-general-cloudwatchlogs)
+ [aws:elasticbeanstalk:cloudwatch:logs:health](#command-options-general-cloudwatchlogs-health)
+ [aws:elasticbeanstalk:command](#command-options-general-elasticbeanstalkcommand)
+ [aws:elasticbeanstalk:environment](#command-options-general-elasticbeanstalkenvironment)
+ [aws:elasticbeanstalk:environment:process:default](#command-options-general-environmentprocess)
+ [aws:elasticbeanstalk:environment:process:process\$1name](#command-options-general-environmentprocess-process)
+ [aws:elasticbeanstalk:environment:proxy:staticfiles](#command-options-general-environmentproxystaticfiles)
+ [aws:elasticbeanstalk:healthreporting:system](#command-options-general-elasticbeanstalkhealthreporting)
+ [aws:elasticbeanstalk:hostmanager](#command-options-general-elasticbeanstalkhostmanager)
+ [aws:elasticbeanstalk:managedactions](#command-options-general-elasticbeanstalkmanagedactions)
+ [aws:elasticbeanstalk:managedactions:platformupdate](#command-options-general-elasticbeanstalkmanagedactionsplatformupdate)
+ [aws:elasticbeanstalk:monitoring](#command-options-general-elasticbeanstalkmonitoring)
+ [aws:elasticbeanstalk:sns:topics](#command-options-general-elasticbeanstalksnstopics)
+ [aws:elasticbeanstalk:sqsd](#command-options-general-elasticbeanstalksqsd)
+ [aws:elasticbeanstalk:trafficsplitting](#command-options-general-elasticbeanstalktrafficsplitting)
+ [aws:elasticbeanstalk:xray](#command-options-general-elasticbeanstalkxray)
+ [aws:elb:healthcheck](#command-options-general-elbhealthcheck)
+ [aws:elb:loadbalancer](#command-options-general-elbloadbalancer)
+ [aws:elb:listener](#command-options-general-elblistener)
+ [aws:elb:listener:listener\$1port](#command-options-general-elblistener-listener)
+ [aws:elb:policies](#command-options-general-elbpolicies)
+ [aws:elb:policies:policy\$1name](#command-options-general-elbpolicies-custom)
+ [aws:elbv2:listener:default](#command-options-general-elbv2-listener-default)
+ [aws:elbv2:listener:listener\$1port](#command-options-general-elbv2-listener)
+ [aws:elbv2:listenerrule:rule\$1name](#command-options-general-elbv2-listenerrule)
+ [aws:elbv2:loadbalancer](#command-options-general-elbv2)
+ [aws:rds:dbinstance](#command-options-general-rdsdbinstance)

## aws:autoscaling:asg
<a name="command-options-general-autoscalingasg"></a>

Configure your environment's Auto Scaling group. For more information, see [Auto Scaling your Elastic Beanstalk environment instances](using-features.managing.as.md).


**Namespace: `aws:autoscaling:asg`**  

| **Name** | **Description** | **Default** | **Valid values** | 
| --- | --- | --- | --- | 
|  Availability Zones  |  Availability Zones (AZs) are distinct locations within an AWS Region that are engineered to be isolated from failures in other AZs. They provide inexpensive, low-latency network connectivity to other AZs in the same Region. Choose the number of AZs for your instances.  |  `Any`  |  `Any` `Any 1` `Any 2` `Any 3`  | 
|  Cooldown  |  Cooldown periods help prevent Amazon EC2 Auto Scaling from initiating additional scaling activities before the effects of previous activities are visible. A cooldown period is the amount of time, in seconds, after a scaling activity completes before another scaling activity can start.  |  `360`   |  `0` to `10000`  | 
|  Custom Availability Zones  |  Define the AZs for your instances.  |  None  |  `us-east-1a`  `us-east-1b`  `us-east-1c`  `us-east-1d`  `us-east-1e`  `eu-central-1`   | 
|  EnableCapacityRebalancing  |  Specifies whether to enable the Capacity Rebalancing feature for Spot Instances in your Auto Scaling Group. For more information, see [Capacity Rebalancing](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html) in the *Amazon EC2 Auto Scaling User Guide*. This option is only relevant when `EnableSpot` is set to `true` in the [`aws:ec2:instances`](#command-options-general-ec2instances) namespace, and there is at least one Spot Instance in your Auto Scaling group.  |  `false`  |  `true` `false`  | 
|  MinSize  |  The minimum number of instances that you want in your Auto Scaling group.  |  `1`   |  `1` to `10000`  | 
|  MaxSize  |  The maximum number of instances that you want in your Auto Scaling group.  |  `4`   |  `1` to `10000`  | 

## aws:autoscaling:launchconfiguration
<a name="command-options-general-autoscalinglaunchconfiguration"></a>

Configure the Amazon Elastic Compute Cloud (Amazon EC2) instances for your environment.

The instances that are used for your environment are created using either an Amazon EC2 launch template or an Auto Scaling group launch configuration resource. The following options work with both of these resource types.

For more information, see [The Amazon EC2 instances for your Elastic Beanstalk environment](using-features.managing.ec2.md). You can also reference more information about Amazon Elastic Block Store (EBS) in [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) chapter in the *Amazon EC2 User Guide*.


**Namespace: `aws:autoscaling:launchconfiguration`**  

| **Name** | **Description** | **Default** | **Valid values** | 
| --- | --- | --- | --- | 
|  DisableDefaultEC2SecurityGroup  |  When set to the default value of `false`, Elastic Beanstalk creates a default security group that allows traffic from the internet or load balancer on the standard ports for HTTP (80). It attaches this security group to the EC2 instances of the environment when it creates the environment. When set to `true` Elastic Beanstalk will not assign the default security group to the EC2 instances for a new environment. For an existing environment, Elastic Beanstalk will unassign the default EC2 security group from your environment's EC2 instances. As a result, you must also set the following configurations: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) If a value is specified for EC2KeyName in an environment that has `DisableDefaultEC2SecurityGroup` set to `true` a default security group will not be associated with the EC2 instances.  |  `false`  |  `true` `false`  | 
|  DisableIMDSv1  |  Set to `true` to disable Instance Metadata Service Version 1 (IMDSv1) and enforce IMDSv2. Set to `false` to enable both IMDSv1 and IMDSv2. The instances for your environment default as follows, based on the platform operating system:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) For more information, see [Configuring the instance metadata service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).   This option setting can cause Elastic Beanstalk to migrate an existing environment with launch configurations to launch templates. Doing so requires the necessary permissions to manage launch templates. These permissions are included in our managed policy. If you use custom policies instead of our managed policies, environment creation or updates might fail when you update your environment configuration. For more information and other considerations, see [Migrating your Elastic Beanstalk environment to launch templates](environments-cfg-autoscaling-launch-templates.md).   |  `false` – platforms based on Windows server, Amazon Linux 2 and earlier `true` – platforms based on Amazon Linux 2023  |  `true` `false`  | 
|  EC2KeyName  |  You can use a key pair to securely log into your EC2 instance. If a value is specified for `EC2KeyName` in an environment that has `DisableDefaultEC2SecurityGroup` set to `true` a default security group will not be associated with the EC2 instances.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  None  |  | 
|  IamInstanceProfile  |  An instance profile enables AWS Identity and Access Management (IAM) users and AWS services to access temporary security credentials to make AWS API calls. Specify the instance profile's name or its ARN. Examples: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  None  |  Instance profile name or ARN.  | 
|  ImageId  |  You can override the default Amazon Machine Image (AMI) by specifying your own custom AMI ID. Example: `ami-1f316660`  |  None  |    | 
|   InstanceType  |  The instance type that's used to run your application in an Elastic Beanstalk environment.  The `InstanceType` option is obsolete. It's replaced by the newer and more powerful `InstanceTypes` option in the [`aws:ec2:instances`](#command-options-general-ec2instances) namespace. You can use this new option to specify a list of one or more instance types for your environment. The first value on that list is equivalent to the value of the `InstanceType` option that's included in the `aws:autoscaling:launchconfiguration` namespace that's described here. We recommend that you specify instance types by using the new option. If specified, the new option takes precedence over the previous one. For more information, see [The aws:ec2:instances namespace](environments-cfg-autoscaling-configuration-approaches.md#environments-cfg-autoscaling-namespace.instances).  The instance types that are available depend on the Availability Zones and Region used. If you choose a subnet, the Availability Zone that contains that subnet determines the available instance types.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  Varies by account and Region.  |  One EC2 instance type. Varies by account, Region, and Availability Zone. You can obtain a list of Amazon EC2 instance types filtered by these values. For more information, see [Available instance types](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) in the *Amazon EC2 User Guide*.  | 
|  LaunchTemplateTagPropagationEnabled  |  Set to `true` to enable the propagation of environment tags to the launch templates for specific resources provisioned to the environment.  Elastic Beanstalk can only propagate tags to launch templates for the following resources: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) This constraint exists because CloudFormation only allows tags on template creation for specific resources. For more information see [TagSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html) in the *AWS CloudFormation User Guide*.    Changing this option value from `false` to `true` for an existing environment may be a breaking change for previously existing tags.   When this feature is enabled, the propagation of tags will require EC2 replacement, which can result in downtime. You can enable *rolling updates* to apply configuration changes in batches and prevent downtime during the update process. For more information, see [Configuration changes](environments-updating.md).    For more information about launch templates, see the following: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) For more information about this option, see [Tag propagation to launch templates](applications-tagging-resources.launch-templates.md).  |  `false`  |  `true` `false`  | 
|  MonitoringInterval  |  The interval (in minutes) that you want Amazon CloudWatch metrics to be returned at.  |  `5 minute`  |  `1 minute` `5 minute`  | 
|  SecurityGroups  |  Lists the Amazon EC2 security group IDs to assign to the EC2 instances in the Auto Scaling group to define firewall rules for the instances. Use this option along with `DisableDefaultEC2SecurityGroup` to attach your own custom security groups that define firewall rules for the EC2 instances. For more information, see [Load balanced (multi-instance) environments](using-features.managing.ec2.instances.sg.md#using-features.managing.ec2.instances.sg.load-balancer-security).  You may need to complete some additional configuration to prevent incoming traffic to your EC2 instances from being blocked. This only applies to multi-instance environments with custom EC2 security groups. The EC2 security groups must include an inbound rule that grants access to traffic routed from the load balancer. For more information, see [Managing EC2 security groups in multi-instance environments](using-features.managing.ec2.instances.sg.md#using-features.managing.ec2.instances.sg.load-balancer-security).  You can provide a single string of comma-separated values that contain existing Amazon EC2 security groups IDs or references to AWS::EC2::SecurityGroup resources created in the template.  You must provide at least one value for this option if `DisableDefaultEC2SecurityGroup` for this namespace is set to `true`.  |  `elasticbeanstalk-default`   |    | 
|   SSHSourceRestriction  |  Used to lock down SSH access to an environment. For example, you can lock down SSH access to the EC2 instances so that only a bastion host can access the instances in the private subnet. This string takes the following form: `protocol, fromPort, toPort, source_restriction` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)  |  None  |    | 
|  BlockDeviceMappings  |  Attach additional Amazon EBS volumes or instance store volumes on all of the instances in the Auto Scaling group.  This option setting can cause Elastic Beanstalk to migrate an existing environment with launch configurations to launch templates. Doing so requires the necessary permissions to manage launch templates. These permissions are included in our managed policy. If you use custom policies instead of our managed policies, environment creation or updates might fail when you update your environment configuration. For more information and other considerations, see [Migrating your Elastic Beanstalk environment to launch templates](environments-cfg-autoscaling-launch-templates.md).  When mapping instance store volumes, you only need to map the device name to a volume name. However, we recommend, when mapping Amazon EBS volumes, you additionally specify some or all of the following fields (each field must be separated by a colon): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) The following example attaches three Amazon EBS volumes, one blank 100GB gp2 volume and one snapshot, one blank 20GB io1 volume with 2000 provisioned IOPS, and an instance store volume `ephemeral0`. Multiple instance store volumes can be attached if the instance type supports it.  `/dev/sdj=:100:true:gp2,/dev/sdh=snap-51eef269,/dev/sdi=:20:true:io1:2000,/dev/sdb=ephemeral0`   |  None  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)  | 
|  RootVolumeType  |  Volume type (magnetic, general purpose SSD or provisioned IOPS SSD) to use for the root Amazon EBS volume attached to the EC2 instances for your environment.  This option setting can cause Elastic Beanstalk to migrate an existing environment with launch configurations to launch templates. Doing so requires the necessary permissions to manage launch templates. These permissions are included in our managed policy. If you use custom policies instead of our managed policies, environment creation or updates might fail when you update your environment configuration. For more information and other considerations, see [Migrating your Elastic Beanstalk environment to launch templates](environments-cfg-autoscaling-launch-templates.md).   |  Varies by platform.  |  `standard` for magnetic storage. `gp2` or `gp3` for general purpose SSD. `io1` for provisioned IOPS SSD.  | 
|  RootVolumeSize  |  The storage capacity of the root Amazon EBS volume in whole GB. Required if you set `RootVolumeType` to provisioned IOPS SSD. For example, `"64"`.  |  Varies per platform for magnetic storage and general purpose SSD. None for provisioned IOPS SSD.  |  `10` to `16384` GB for general purpose and provisioned IOPS SSD. `8` to `1024` GB for magnetic.  | 
|  RootVolumeIOPS  |  The desired input/output operations per second (IOPS) for a provisioned IOPS SSD root volume or for a general purpose `gp3` SSD root volume. The maximum ratio of IOPS to volume size is 500 to 1. For example, a volume with 3000 IOPS must be at least 6 GiB.  |  None  |  `100` to `20000` for io1 provisioned IOPS SSD root volumes. `3000` to `16000` for general purpose `gp3` SSD root volumes.  | 
|  RootVolumeThroughput  |  The desired throughput of mebibytes per second (MiB/s) to provision for the Amazon EBS root volume attached to your environment's EC2 instance.  This option is only applicable to `gp3` storage types.   |  None  |  `125` to `1000`  | 

## aws:autoscaling:scheduledaction
<a name="command-options-general-autoscalingscheduledaction"></a>

Configure [scheduled actions](environments-cfg-autoscaling-scheduledactions.md) for your environment's Auto Scaling group. For each action, specify a `resource_name` in addition to the option name, namespace, and value for each setting. See [The aws:autoscaling:scheduledaction namespace](environments-cfg-autoscaling-scheduledactions.md#environments-cfg-autoscaling-scheduledactions-namespace) for examples.


**Namespace: `aws:autoscaling:scheduledaction`**  

| **Name** | **Description** | **Default** | **Valid values** | 
| --- | --- | --- | --- | 
|  StartTime  |  For one-time actions, choose the date and time to run the action. For recurrent actions, choose when to activate the action.  |  None  |  A [ISO-8601 timestamp](http://www.w3.org/TR/NOTE-datetime) unique across all scheduled scaling actions.  | 
|  EndTime  |  A date and time in the future (in the UTC/GMT time zone) when you want the scheduled scaling action to stop repeating. If you don't specify an **EndTime**, the action recurs according to the `Recurrence` expression. Example: `2015-04-28T04:07:2Z` When a scheduled action ends, Amazon EC2 Auto Scaling doesn't automatically revert to its previous settings. Configure a second scheduled action to return to the original settings as needed.  |  None  |  A [ISO-8601 timestamp](http://www.w3.org/TR/NOTE-datetime) unique across all scheduled scaling actions.  | 
|  MaxSize  |  The maximum instance count to apply when the action runs.  |  None  |  `0` to `10000`  | 
|  MinSize  |  The minimum instance count to apply when the action runs.  |  None  |  `0` to `10000`  | 
|  DesiredCapacity  |  Set the initial desired capacity for the Auto Scaling group. After the scheduled action is applied, triggers adjust the desired capacity based on their settings.  |  None  |  `0` to `10000`  | 
|  Recurrence  |  The frequency that you want the scheduled action to occur at. If you don't specify a recurrence, then the scaling action occurs only once, as specified by the `StartTime`.  |  None  |  A [Cron](http://en.wikipedia.org/wiki/Cron) expression.  | 
|  Suspend  |  Set to `true` to deactivate a recurrent scheduled action temporarily.  |   `false`   |   `true`   `false`   | 

## aws:autoscaling:trigger
<a name="command-options-general-autoscalingtrigger"></a>

Configure scaling triggers for your environment's Auto Scaling group.

**Note**  
Three options in this namespace determine how long the metric for a trigger can remain beyond its defined limits before the trigger initates. These options are related as follows:  
`BreachDuration = Period * EvaluationPeriods`  
The default values for these options (5, 5, and 1, respectively) satisfy this equation. If you specify inconsistent values, Elastic Beanstalk might modify one of the values so that the equation is still satisfied.


**Namespace: `aws:autoscaling:trigger`**  

| **Name** | **Description** | **Default** | **Valid values** | 
| --- | --- | --- | --- | 
|  BreachDuration  |  The amount of time, in minutes, a metric can be beyond its defined limit (as specified in the `UpperThreshold` and `LowerThreshold`) before the trigger is invoked.  |  `5`  |  `1` to `600`  | 
|  LowerBreachScaleIncrement  |  How many Amazon EC2 instances to remove when performing a scaling activity.  |  `-1`  |    | 
|  LowerThreshold  |  If the measurement falls below this number for the breach duration, a trigger is invoked.  |  `2000000`  |  `0` to `20000000`  | 
|  MeasureName  |  The metric that's used for your Auto Scaling trigger.  `HealthyHostCount`, `UnhealthyHostCount` and `TargetResponseTime` are only applicable for environments with a dedicated load balancer. These aren't valid metric values for environments configured with a shared load balancer. For more information about load balancer types, see [Load balancer for your Elastic Beanstalk environment](using-features.managing.elb.md).   |  `NetworkOut`  |  `CPUUtilization` `NetworkIn` `NetworkOut` `DiskWriteOps` `DiskReadBytes` `DiskReadOps` `DiskWriteBytes` `Latency` `RequestCount` `HealthyHostCount` `UnhealthyHostCount` `TargetResponseTime`  | 
|  Period  |  Specifies how frequently Amazon CloudWatch measures the metrics for your trigger. The value is the number of minutes between two consecutive periods.  |  `5`  |  `1` to `600`  | 
|  EvaluationPeriods  |  The number of consecutive evaluation periods that's used to determine if a breach is occurring.  |  `1`  |  `1` to `600`  | 
|  Statistic  |  The Statistic the trigger uses, such as `Average`.  |  `Average`  |  `Minimum` `Maximum` `Sum` `Average`  | 
|  Unit  |  The unit for the trigger measurement, such as `Bytes`.  |  `Bytes`  |  `Seconds` `Percent` `Bytes`  `Bits`  `Count`  `Bytes/Second`  `Bits/Second`  `Count/Second`  `None`   | 
|  UpperBreachScaleIncrement  |  Specifies how many Amazon EC2 instances to add when performing a scaling activity.  |  `1`  |    | 
|  UpperThreshold  |  If the measurement is higher than this number for the breach duration, a trigger is invoked.  |  `6000000`  |  `0` to `20000000`  | 

## aws:autoscaling:updatepolicy:rollingupdate
<a name="command-options-general-autoscalingupdatepolicyrollingupdate"></a>

Configure rolling updates your environment's Auto Scaling group.


**Namespace: `aws:autoscaling:updatepolicy:rollingupdate`**  

| **Name** | **Description** | **Default** | **Valid values** | 
| --- | --- | --- | --- | 
|  MaxBatchSize  |  The number of instances included in each batch of the rolling update.  |  One-third of the minimum size of the Auto Scaling group, rounded to the next highest integer.  |  `1` to `10000`  | 
|  MinInstancesInService  |  The minimum number of instances that must be in service within the Auto Scaling group while other instances are terminated.  |  The minimum size of the Auto Scaling group or one fewer than the maximum size of the Auto Scaling group, whichever is lower.  |  `0` to `9999`  | 
|  RollingUpdateEnabled  |  If `true`, it enables rolling updates for an environment. Rolling updates are useful when you need to make small, frequent updates to your Elastic Beanstalk software application and you want to avoid application downtime. Setting this value to true automatically enables the `MaxBatchSize`, `MinInstancesInService`, and `PauseTime` options. Setting any of those options also automatically sets the `RollingUpdateEnabled` option value to `true`. Setting this option to `false` disables rolling updates.  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `false`  |  `true` `false`  | 
|  RollingUpdateType  |  This includes three types: time-based rolling updates, health-based rolling updates, and immutable updates.  Time-based rolling updates apply a PauseTime between batches. Health-based rolling updates wait for new instances to pass health checks before moving on to the next batch. [Immutable updates](environmentmgmt-updates-immutable.md) launch a full set of instances in a new Auto Scaling group.  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `Time`  |  `Time` `Health` `Immutable`  | 
|  PauseTime  |  The amount of time (in seconds, minutes, or hours) the Elastic Beanstalk service waits after it completed updates to one batch of instances and before it continues on to the next batch.  |  Automatically computed based on instance type and container.  |  `PT0S`\$1 (0 seconds) to `PT1H` (1 hour)  | 
|  Timeout  |  The maximum amount of time (in minutes or hours) to wait for all instances in a batch of instances to pass health checks before canceling the update.  |  `PT30M` (30 minutes)  |  `PT5M`\$1 (5 minutes) to `PT1H` (1 hour) \$1[ISO8601 duration](http://en.wikipedia.org/wiki/ISO_8601#Durations) format: `PT#H#M#S` where each \$1 is the number of hours, minutes, and/or seconds, respectively.  | 

## aws:ec2:instances
<a name="command-options-general-ec2instances"></a>

Configure your environment's instances, including Spot options. This namespace complements [`aws:autoscaling:launchconfiguration`](#command-options-general-autoscalinglaunchconfiguration) and [`aws:autoscaling:asg`](#command-options-general-autoscalingasg).

For more information, see [Auto Scaling your Elastic Beanstalk environment instances](using-features.managing.as.md).


**Namespace: `aws:ec2:instances`**  

| **Name** | **Description** | **Default** | **Valid values** | 
| --- | --- | --- | --- | 
|  EnableSpot  |  Enable Spot Instance requests for your environment. When `false`, some options in this namespace don't take effect.  This option setting can cause Elastic Beanstalk to migrate an existing environment with launch configurations to launch templates. Doing so requires the necessary permissions to manage launch templates. These permissions are included in our managed policy. If you use custom policies instead of our managed policies, environment creation or updates might fail when you update your environment configuration. For more information and other considerations, see [Migrating your Elastic Beanstalk environment to launch templates](environments-cfg-autoscaling-launch-templates.md).   |  `false`  |  `true` `false`  | 
|   InstanceTypes  |  A comma-separated list of instance types that you want your environment to use (for example, `t2.micro,t3.micro`). When `EnableSpot` is `true` and `SpotAllocationStrategy` is set to `capacity-optimized-prioritized`, the list of values specified in this option determines the instance type priority for the Spot Instance allocation strategy. When Spot Instances are not activated (`EnableSpot` is `false`), only the first instance type on the list is used. The first instance type on the list in this option is equivalent to the value of the `InstanceType` option in the [`aws:autoscaling:launchconfiguration`](#command-options-general-autoscalinglaunchconfiguration) namespace. We don't recommend using the latter option because it's obsolete. If you specify both, the first instance type on the list in the `InstanceTypes` option is used, and `InstanceType` is ignored. The instance types that are available depend on the Availability Zones and Region used. If you choose a subnet, the Availability Zone that contains that subnet determines the available instance types.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)  Some older AWS accounts might provide Elastic Beanstalk with default instance types that don't support Spot Instances (for example, t1.micro). If you activate Spot Instance requests and you get an error about an instance type that doesn’t support Spot, be sure to configure instance types that support Spot. To choose Spot Instance types, use the [Spot Instance Advisor](https://aws.amazon.com/ec2/spot/instance-advisor/).  When you update your environment configuration and remove one or more instance types from the `InstanceTypes` option, Elastic Beanstalk terminates any Amazon EC2 instances running on any of the removed instance types. Your environment's Auto Scaling group then launches new instances, as necessary to complete the desired capacity, using your current specified instance types.  |  A list of two instance types. Varies by account and Region.  |  One to forty EC2 instance types. We recommend at least two. Varies by account, Region, and Availability Zone. You can obtain a list of Amazon EC2 instance types filtered by these values. For more information, see [Available instance types](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) in the *Amazon EC2 User Guide*. The instance types must all be part of the same architecture (`arm64`, `x86_64`, `i386`). `SupportedArchitectures` is also part of this namespace. If you provide any values for `SupportedArchitectures`, the value(s) you enter for `InstanceTypes` must belong to one, and only one, of the architectures you provide for `SupportedArchitectures`.  | 
|  SpotAllocationStrategy  |  Specifies the [spot instance allocation strategy](environments-cfg-autoscaling-spot-allocation-strategy.md) that determines how Spot Instances are allocated from the available spot capacity pools. If set to `capacity-optimized-prioritized`, the order of the values in `InstanceTypes` sets the instance type priority for allocation. This option is relevant only when `EnableSpot` is `true`.  |  `capacity-optimized`  |  `capacity-optimized` `price-capacity-optimized` `capacity-optimized-prioritized` `lowest-price `  | 
|  SpotFleetOnDemandBase  |  The minimum number of On-Demand Instances that your Auto Scaling group provisions before considering Spot Instances as your environment scales up. This option is relevant only when `EnableSpot` is `true`.  |  `0`  |  `0` to `MaxSize` option in [`aws:autoscaling:asg`](#command-options-general-autoscalingasg) namespace  | 
|  SpotFleetOnDemandAboveBasePercentage  |  The percentage of On-Demand Instances as part of additional capacity that your Auto Scaling group provisions beyond the `SpotOnDemandBase` instances. This option is relevant only when `EnableSpot` is `true`.  |  `0` for a single-instance environment `70` for a load-balanced environment  |  `0` to `100`  | 
|  SpotMaxPrice  |  The maximum price per unit hour, in USD, that you're willing to pay for a Spot Instance. For recommendations about maximum price options for Spot Instances, see [Spot Instance pricing history](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html) in the *Amazon EC2 User Guide*. This option is relevant only when `EnableSpot` is `true`.  |  On-Demand price, for each instance type. The option's value in this case is `null`.  |  `0.001` to `20.0` `null`  | 
|  SupportedArchitectures  |  A comma-separated list of EC2 instance architecture types that you'll use for your environment. Elastic Beanstalk supports instance types based on the following processor architectures: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) For more information about processor architecture and Amazon EC2 instance types see [Amazon EC2 instance types](using-features.managing.ec2.instance-types.md).  |  None  |  `arm64` `x86_64` `i386`  The 32-bit architecture `i386` is not supported by the majority of Elastic Beanstalk platforms. We recommended that you choose the `x86_64` or `arm64` architecture types instead.   | 

## aws:ec2:vpc
<a name="command-options-general-ec2vpc"></a>

Configure your environment to launch resources in a custom [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC). If you don't configure settings in this namespace, Elastic Beanstalk launches resources in the default VPC.


**Namespace: `aws:ec2:vpc`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  VPCId  |  The ID for your Amazon VPC.  |  None  |    | 
|  Subnets  |  The IDs of the Auto Scaling group subnet or subnets. If you have multiple subnets, specify the value as a single comma-separated string of subnet IDs (for example, `"subnet-11111111,subnet-22222222"`).  |  None  |    | 
|  ELBSubnets  |  The IDs of the subnet or subnets for the elastic load balancer. If you have multiple subnets, specify the value as a single comma-separated string of subnet IDs (for example, `"subnet-11111111,subnet-22222222"`).  |  None  |    | 
|  ELBScheme  |  Specify `internal` if you want to create an internal load balancer in your Amazon VPC so that your Elastic Beanstalk application can't be accessed from outside your Amazon VPC. If you specify a value other than `public` or `internal`, Elastic Beanstalk ignores the value.  |  `public`   |  `public`  `internal`   | 
|  DBSubnets  |  Contains the IDs of the database subnets. This is only used if you want to add an Amazon RDS DB Instance as part of your application. If you have multiple subnets, specify the value as a single comma-separated string of subnet IDs (for example, `"subnet-11111111,subnet-22222222"`).  |  None  |    | 
|  AssociatePublicIpAddress  |  Specifies whether to launch instances with public IP addresses in your Amazon VPC. Instances with public IP addresses don't require a NAT device to communicate with the Internet. You must set the value to `true` if you want to include your load balancer and instances in a single public subnet. This option has no effect on a single-instance environment, which always has a single Amazon EC2 instance with an Elastic IP address. The option is relevant to load-balanced, scalable environments.  |  None  |  `true`  `false`   | 

## aws:elasticbeanstalk:application
<a name="command-options-general-elasticbeanstalkapplication"></a>

Configure a health check path for your application. For more information, see [Basic health reporting](using-features.healthstatus.md).


**Namespace: `aws:elasticbeanstalk:application`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  Application Healthcheck URL  |  The path where health check requests are sent to. If this path isn't set, the load balancer attempts to make a TCP connection on port 80 to verify the health status of your application. Set to a path starting with `/` to send an HTTP GET request to that path. You can also include a protocol (HTTP, HTTPS, TCP, or SSL) and port before the path to check HTTPS connectivity or use a non-default port.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  None  |  Valid values include: `/` (HTTP GET to root path) `/health` `HTTPS:443/` `HTTPS:443/health`  | 

The EB CLI and Elastic Beanstalk console apply recommended values for the preceding options. You must remove these settings if you want to use configuration files to configure the same. See [Recommended values](command-options.md#configuration-options-recommendedvalues) for details.

## aws:elasticbeanstalk:application:environment
<a name="command-options-general-elasticbeanstalkapplicationenvironment"></a>

Configure environment properties for your application.


**Namespace: `aws:elasticbeanstalk:application:environment`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  Any environment variable name.  |  Pass in key-value pairs.  |  None  |  Any environment variable value.  | 

See [Environment variables and other software settings](environments-cfg-softwaresettings.md) for more information.

## aws:elasticbeanstalk:application:environmentsecrets
<a name="command-options-general-elasticbeanstalk-application-environmentsecrets"></a>

Configure environment variables to serve as *environment secrets* for your application. Environment secrets store AWS Secrets Manager secrets or AWS Systems Manager Parameter Store parameters.


**Namespace: `aws:elasticbeanstalk:application:environmentsecrets`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  OptionName  |  Specifies the name of the environment variable to hold the secret store or parameter store value.  |  None  | Any environment variable name. | 
|  Value  |  Specifies the ARN for the value stored in AWS Secrets Manager or AWS Systems Manager Parameter Store. During instance bootstrapping Elastic Beanstalk initiates the environment variable to the value stored in this ARN resource.  Ensure that the necessary permissions are in place for your environment's EC2 instance profile role to access the secret and parameter ARNs. For more information, see [Required IAM permissions](AWSHowTo.secrets.IAM-permissions.md).   |  None  |  Valid ARN value for an AWS Secrets Manager secret or AWS Systems Manager Parameter Store parameter value.  | 

For more information, see [Configuring secrets as environment variables](AWSHowTo.secrets.env-vars.md).

## aws:elasticbeanstalk:cloudwatch:logs
<a name="command-options-general-cloudwatchlogs"></a>

Configure instance log streaming for your application.


**Namespace: `aws:elasticbeanstalk:cloudwatch:logs`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  StreamLogs  |  Specifies whether to create groups in CloudWatch Logs for proxy and deployment logs, and stream logs from each instance in your environment.  |  `false`  |  `true` `false`  | 
|  DeleteOnTerminate  |  Specifies whether to delete the log groups when the environment is terminated. If `false`, the logs are kept `RetentionInDays` days.  |  `false`  |  `true` `false`  | 
|  RetentionInDays  |  The number of days to keep log events before they expire.  |  7  |  1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 3653  | 

## aws:elasticbeanstalk:cloudwatch:logs:health
<a name="command-options-general-cloudwatchlogs-health"></a>

Configure environment health log streaming for your application.


**Namespace: `aws:elasticbeanstalk:cloudwatch:logs:health`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  HealthStreamingEnabled  |  For environments with enhanced health reporting enabled, specifies whether to create a group in CloudWatch Logs for environment health and archive Elastic Beanstalk environment health data. For information about enabling enhanced health, see [`aws:elasticbeanstalk:healthreporting:system`](#command-options-general-elasticbeanstalkhealthreporting).  |  `false`  |  `true` `false`  | 
|  DeleteOnTerminate  |  Specifies whether to delete the log group when the environment is terminated. If `false`, the health data is kept `RetentionInDays` days.  |  `false`  |  `true` `false`  | 
|  RetentionInDays  |  The number of days to keep the archived health data before it expires.  |  7  |  1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 3653  | 

## aws:elasticbeanstalk:command
<a name="command-options-general-elasticbeanstalkcommand"></a>

Configure the deployment policy for your application code. For more information, see [Deployment policies and settings](using-features.rolling-version-deploy.md).


**Namespace: `aws:elasticbeanstalk:command`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  DeploymentPolicy  |  Choose a [deployment policy](using-features.rolling-version-deploy.md) for application version deployments.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `AllAtOnce`  |  `AllAtOnce` `Rolling` `RollingWithAdditionalBatch` `Immutable` `TrafficSplitting`  | 
|  Timeout  |  The amount of time, in seconds, to wait for an instance to complete executing commands. Elastic Beanstalk internally adds 240 seconds (four minutes) to the `Timeout` value. For example, the effective timeout by default is 840 seconds (600 \$1 240), or 14 minutes.  |  `600`   |  `1` to `3600`  | 
|  BatchSizeType  |  The type of number that's specified in **BatchSize**.  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `Percentage`   |  `Percentage`  `Fixed`   | 
|  BatchSize  |  The percentage or the fixed number of Amazon EC2 instances in the Auto Scaling group to simultaneously perform deployments on. Valid values vary depending on the **BatchSizeType** setting used.  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `100`   |  `1` to `100` (`Percentage`). `1` to [aws:autoscaling:asg::MaxSize](#command-options-general-autoscalingasg) (`Fixed`)  | 
|  IgnoreHealthCheck  |  Don't cancel a deployment due to failed health checks.  | false  |  `true`  `false`   | 

## aws:elasticbeanstalk:environment
<a name="command-options-general-elasticbeanstalkenvironment"></a>

Configure your environment's architecture and service role.


**Namespace: `aws:elasticbeanstalk:environment`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  EnvironmentType  |  Set to `SingleInstance` to launch one EC2 instance with no load balancer.  |  `LoadBalanced`   |  `SingleInstance`  `LoadBalanced`   | 
|  ServiceRole  |  The name of an IAM role that Elastic Beanstalk uses to manage resources for the environment. Specify a role name (optionally prefixed with a custom path) or its ARN. Examples: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  None  |  IAM role name, path/name, or ARN  | 
|  LoadBalancerType  |  The type of load balancer for your environment. For more information, see [Load balancer for your Elastic Beanstalk environment](using-features.managing.elb.md).  |  `classic`  |  `classic` `application` `network`  | 
|  LoadBalancerIsShared  |  Specifies whether the environment's load balancer is dedicated or shared. This option can only be set for an Application Load Balancer. It can't be changed after the environment is created. When `false`, the environment has its own dedicated load balancer, created, and managed by Elastic Beanstalk. When `true`, the environment uses a shared load balancer, created by you and specified in the `SharedLoadBalancer` option of the [aws:elbv2:loadbalancer](#command-options-general-elbv2) namespace.  |   `false`   |   `true`   `false`   | 

## aws:elasticbeanstalk:environment:process:default
<a name="command-options-general-environmentprocess"></a>

Configure your environment's default process.


**Namespace: `aws:elasticbeanstalk:environment:process:default`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  DeregistrationDelay  |  The amount of time, in seconds, to wait for active requests to complete before deregistering.  |  `20`  |  `0` to `3600`  | 
|  HealthCheckInterval  |  The interval of time, in seconds, that Elastic Load Balancing checks the health of the Amazon EC2 instances of your application.  |  With classic or application load balancer: `15` With network load balancer: `30`  |  With classic or application load balancer: `5` to `300` With network load balancer: `10`, `30`  | 
|  HealthCheckPath  |  The path that HTTP requests for health checks are sent to.  |  `/`   |  A routable path.  | 
|  HealthCheckTimeout  |  The amount of time, in seconds, to wait for a response during a health check. This option is only applicable to environments with an application load balancer.  |  `5`  |  `1` to `60`  | 
|  HealthyThresholdCount  |  The number of consecutive successful requests before Elastic Load Balancing changes the instance health status.  |  With classic or application load balancer: `3` With network load balancer: `5`  |  `2` to `10`  | 
|  MatcherHTTPCode  |  A comma-separated list of HTTP code(s) that indicate that an instance is healthy. This option is only applicable to environments with a network or application load balancer.  |  `200`  |  With application load balancer: `200` to `499` With network load balancer: `200` to `399`  | 
|  Port  |  Port that the process listens on.  |  `80`  |  `1` to `65535`  | 
|  Protocol  |  The protocol that the process uses. With an application load balancer, you can only set this option to `HTTP` or `HTTPS`. With a network load balancer, you can only set this option to `TCP`.  |  With classic or application load balancer: `HTTP` With network load balancer: `TCP`  |  `TCP` `HTTP` `HTTPS`  | 
|  StickinessEnabled  |  Set to true to enable sticky sessions. This option is only applicable to environments with an application load balancer.  |  `'false'`  |  `'false'` `'true'`  | 
|  StickinessLBCookieDuration  |  The lifetime, in seconds, of the sticky session cookie. This option is only applicable to environments with an application load balancer.  |  `86400` (one day)  |  `1` to `604800`  | 
|  StickinessType  |  Set to `lb_cookie` to use cookies for sticky sessions. This option is only applicable to environments with an application load balancer.  |  `lb_cookie`  |  `lb_cookie`  | 
|  UnhealthyThresholdCount  |  The number of consecutive unsuccessful requests before Elastic Load Balancing changes the instance health status.  |  `5`  |  `2` to `10`  | 

## aws:elasticbeanstalk:environment:process:process\$1name
<a name="command-options-general-environmentprocess-process"></a>

Configure additional processes for your environment.


**Namespace: `aws:elasticbeanstalk:environment:process:process_name`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  DeregistrationDelay  |  The amount of time, in seconds, to wait for active requests to complete before deregistering.  |  `20`  |  `0` to `3600`  | 
|  HealthCheckInterval  |  The interval, in seconds, that Elastic Load Balancing checks the health of Amazon EC2 instances for your application.  |  With classic or application load balancer: `15` With network load balancer: `30`  |  With classic or application load balancer: `5` to `300` With network load balancer: `10`, `30`  | 
|  HealthCheckPath  |  The path that HTTP requests for health checks are sent to.  |  `/`   |  A routable path.  | 
|  HealthCheckTimeout  |  The amount of time, in seconds, to wait for a response during a health check. This option is only applicable to environments with an application load balancer.  |  `5`  |  `1` to `60`  | 
|  HealthyThresholdCount  |  The number of consecutive successful requests before Elastic Load Balancing changes the instance health status.  |  With classic or application load balancer: `3` With network load balancer: `5`  |  `2` to `10`  | 
|  MatcherHTTPCode  |  A comma-separated list of HTTP code(s) that indicates that an instance is healthy. This option is only applicable to environments with a network or application load balancer.  |  `200`  |  With application load balancer: `200` to `499` With network load balancer: `200` to `399`  | 
|  Port  |  The port that the process listens on.  |  `80`  |  `1` to `65535`  | 
|  Protocol  |  The protocol that the process uses. With an application load balancer, you can only set this option to `HTTP` or `HTTPS`. With a network load balancer, you can only set this option to `TCP`.  |  With classic or application load balancer: `HTTP` With network load balancer: `TCP`  |  `TCP` `HTTP` `HTTPS`  | 
|  StickinessEnabled  |  Set to true to enable sticky sessions. This option is only applicable to environments with an application load balancer.  |  `'false'`  |  `'false'` `'true'`  | 
|  StickinessLBCookieDuration  |  The lifetime, in seconds, of the sticky session cookie. This option is only applicable to environments with an application load balancer.  |  `86400` (one day)  |  `1` to `604800`  | 
|  StickinessType  |  Set to `lb_cookie` to use cookies for sticky sessions. This option is only applicable to environments with an application load balancer.  |  `lb_cookie`  |  `lb_cookie`  | 
|  UnhealthyThresholdCount  |  The number of consecutive unsuccessful requests before Elastic Load Balancing changes the instance health status.  |  `5`  |  `2` to `10`  | 

## aws:elasticbeanstalk:environment:proxy:staticfiles
<a name="command-options-general-environmentproxystaticfiles"></a>

You can use the following namespace to configure the proxy server to serve static files. When the proxy server receives a request for a file under the specified path, it serves the file directly instead of routing the request to your application. This reduces the number of requests that your application has to process.

Map a path served by the proxy server to a folder in your source code that contains static assets. Each option that you define in this namespace maps a different path.

**Note**  
This namespace applies to platform branches based on Amazon Linux 2 and later. If your environment uses a platform version based on Amazon Linux AMI (preceding Amazon Linux 2), refer to [Platform specific options](command-options-specific.md) for platform-specific static file namespaces.


**Namespace: `aws:elasticbeanstalk:environment:proxy:staticfiles`**  

| **Name**  | **Value**  | 
| --- | --- | 
|  The path where the proxy server serves the files. Start the value with `/`. For example, specify `/images` to serve files at `subdomain.eleasticbeanstalk.com/images`.  |  The name of the folder containing the files. For example, specify `staticimages` to serve files from a folder named `staticimages` at the top level of your source bundle.  | 

## aws:elasticbeanstalk:healthreporting:system
<a name="command-options-general-elasticbeanstalkhealthreporting"></a>

Configure enhanced health reporting for your environment.


**Namespace: `aws:elasticbeanstalk:healthreporting:system`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  SystemType  |  The health reporting system ([basic](using-features.healthstatus.md) or [enhanced](health-enhanced.md)). Enhanced health reporting requires a [service role](concepts-roles-service.md) and a version 2 or newer [platform version](concepts.platforms.md).  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `basic`   |  `basic`  `enhanced`   | 
| ConfigDocument | A JSON document that describes the environment and instance metrics to publish to CloudWatch. | None |  | 
|  EnhancedHealthAuthEnabled  |  Enables authorization for the internal API that Elastic Beanstalk uses to communicate enhanced health information from your environment instances to the Elastic Beanstalk service. For more information, see [Enhanced health roles](health-enhanced.md#health-enhanced-roles).  This option is only applicable to enhanced health reporting (such as when `SystemType` is set to `enhanced`).   |  `true`   |  `true`  `false`   | 
|  HealthCheckSuccessThreshold  |  Lowers the threshold for instances to pass health checks.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `Ok`  |  `Ok` `Warning` `Degraded` `Severe`  | 

## aws:elasticbeanstalk:hostmanager
<a name="command-options-general-elasticbeanstalkhostmanager"></a>

Configure the EC2 instances in your environment to upload rotated logs to Amazon S3.


**Namespace: `aws:elasticbeanstalk:hostmanager`**  

| **Name**  | **Description**  | **Default**  | Valid values | 
| --- | --- | --- | --- | 
|  LogPublicationControl  |  Copy the log files of the Amazon EC2 instances for your application to the Amazon S3 bucket that's associated with your application.  |  `false`   |  `true`  `false`   | 

## aws:elasticbeanstalk:managedactions
<a name="command-options-general-elasticbeanstalkmanagedactions"></a>

Configure managed platform updates for your environment.


**Namespace: `aws:elasticbeanstalk:managedactions`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  ManagedActionsEnabled  |  Enable [managed platform updates](environment-platform-update-managed.md#environment-platform-update-managed-namespace). When you set this to `true`, you must also specify a `PreferredStartTime` and `UpdateLevel`.  |  `false`   |  `true`  `false`   | 
|  PreferredStartTime  |  Configure a maintenance window for managed actions in UTC. For example, `"Tue:09:00"`.  |  None  |  Day and time in the  *day*:*hour*:*minute*  format.  | 
|  ServiceRoleForManagedUpdates  |  The name of an IAM role that Elastic Beanstalk uses to perform managed platform updates for your environment. You can use either the same role that you specified for the `ServiceRole` option of the `aws:elasticbeanstalk:environment` namespace, or your account's [managed updates service-linked role](using-service-linked-roles-managedupdates.md). In the latter case, if the account doesn't have a managed-updates service-linked role yet, Elastic Beanstalk creates it.  |  None  |  Same as `ServiceRole` or `AWSServiceRoleForElasticBeanstalkManagedUpdates`  | 

## aws:elasticbeanstalk:managedactions:platformupdate
<a name="command-options-general-elasticbeanstalkmanagedactionsplatformupdate"></a>

Configure managed platform updates for your environment.


**Namespace: `aws:elasticbeanstalk:managedactions:platformupdate`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  UpdateLevel  |  The highest level of update to apply with managed platform updates. Platforms are versioned *major*.*minor*.*patch*. For example, 2.0.8 has a major version of 2, a minor version of 0, and a patch version of 8.  |  None  |  `patch` for patch version updates only. `minor` for both minor and patch version updates.  | 
|  InstanceRefreshEnabled  |  Enable weekly instance replacement. This requires `ManagedActionsEnabled` to be set to `true`.  | false |  `true`  `false`   | 

## aws:elasticbeanstalk:monitoring
<a name="command-options-general-elasticbeanstalkmonitoring"></a>

Configure your environment to terminate EC2 instances that fail health checks.


**Namespace: `aws:elasticbeanstalk:monitoring`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  Automatically Terminate Unhealthy Instances  |  Terminate an instance if it fails health checks.  This option was only supported on [legacy environments](using-features.migration.md). It determined the health of an instance based on being able to reach it and on other instance-based metrics. Elastic Beanstalk doesn't provide a way to automatically terminate instances based on application health.   |  `true`   |  `true`  `false`   | 

## aws:elasticbeanstalk:sns:topics
<a name="command-options-general-elasticbeanstalksnstopics"></a>

Configure notifications for your environment.


**Namespace: `aws:elasticbeanstalk:sns:topics`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  Notification Endpoint  |  The endpoint where you want to be notified of important events affecting your application.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  None  |    | 
|  Notification Protocol  |  The protocol that's used to send notifications to your endpoint.  |  `email`   |  `http`  `https`  `email`  `email-json`  `sqs`   | 
|  Notification Topic ARN  |  The Amazon Resource Name (ARN) for the topic you subscribed to.  |  None  |    | 
|  Notification Topic Name  |  The name of the topic you subscribed to.  |  None  |    | 

## aws:elasticbeanstalk:sqsd
<a name="command-options-general-elasticbeanstalksqsd"></a>

Configure the Amazon SQS queue for a worker environment.


**Namespace: `aws:elasticbeanstalk:sqsd`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  WorkerQueueURL  |  The URL of the queue that the daemon in the worker environment tier reads messages from.  When you don't specify a value, the queue that Elastic Beanstalk automatically creates is a [standard](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html) Amazon SQS queue. When you provide a value, you can provide the URL of either a standard or a [FIFO](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html) Amazon SQS queue. Be aware that if you provide a FIFO queue, [periodic tasks](using-features-managing-env-tiers.md#worker-periodictasks) aren't supported.   |  automatically generated  |  If you don't specify a value, then Elastic Beanstalk automatically creates a queue.  | 
|  HttpPath  |  The relative path to the application that HTTP POST messages are sent to.  |  /  |   | 
|  MimeType  |  The MIME type of the message that's sent in the HTTP POST request.  |  `application/json`   |  `application/json`  `application/x-www-form-urlencoded`  `application/xml`  `text/plain`  Custom MIME type.  | 
|  HttpConnections  |  The maximum number of concurrent connections to any applications that are within an Amazon EC2 instance.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `50`   |  `1` to `100`  | 
|  ConnectTimeout  |  The amount of time, in seconds, to wait for successful connections to an application.  |  `5`   |  `1` to `60`  | 
|  InactivityTimeout  | The amount of time, in seconds, to wait for a response on an existing connection to an application.The message is reprocessed until the daemon receives a 200 (OK) response from the application in the worker environment tier or the RetentionPeriod expires. |  `299`   |  `1` to `36000`  | 
|  VisibilityTimeout  |  The amount of time, in seconds, an incoming message from the Amazon SQS queue is locked for processing. After the configured amount of time has passed, then the message is again made visible in the queue for any other daemon to read.  |  300  |  `0` to `43200`  | 
|  ErrorVisibilityTimeout  |  The amount of time, in seconds, that elapses before Elastic Beanstalk returns a message to the Amazon SQS queue after a processing attempt fails with an explicit error.  |  `2` seconds  |  `0` to `43200` seconds  | 
|  RetentionPeriod  |  The amount of time, in seconds, a message is valid and is actively processed for.  |  `345600`   |  `60` to `1209600`  | 
|  MaxRetries  |  The maximum number of attempts that Elastic Beanstalk attempts to send the message to the web application that will process it before moving the message to the dead-letter queue.  |   `10`   |  `1` to `100`  | 

## aws:elasticbeanstalk:trafficsplitting
<a name="command-options-general-elasticbeanstalktrafficsplitting"></a>

Configure traffic-splitting deployments for your environment.

This namespace applies when you set the `DeploymentPolicy` option of the [aws:elasticbeanstalk:command](#command-options-general-elasticbeanstalkcommand) namespace to `TrafficSplitting`. For more information about deployment policies, see [Deployment policies and settings](using-features.rolling-version-deploy.md).


**Namespace: `aws:elasticbeanstalk:trafficsplitting`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  NewVersionPercent  |  The initial percentage of incoming client traffic that Elastic Beanstalk shifts to environment instances running the new application version you're deploying.  |   `10`   |  `1` to `100`  | 
|  EvaluationTime  |  The time period, in minutes, that Elastic Beanstalk waits after an initial healthy deployment before proceeding to shift all incoming client traffic to the new application version that you're deploying.  |   `5`   |  `3` to `600`  | 

## aws:elasticbeanstalk:xray
<a name="command-options-general-elasticbeanstalkxray"></a>

Run the AWS X-Ray daemon to relay trace information from your [X-Ray integrated](environment-configuration-debugging.md) application.


**Namespace: `aws:elasticbeanstalk:xray`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  `XRayEnabled`  |  Set to `true` to run the X-Ray daemon on the instances in your environment.  |  `false`  |  `true` `false`  | 

## aws:elb:healthcheck
<a name="command-options-general-elbhealthcheck"></a>

Configure healthchecks for a Classic Load Balancer.


**Namespace: `aws:elb:healthcheck`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  HealthyThreshold  |  The number of consecutive successful requests before Elastic Load Balancing changes the instance health status.  |  `3`   |  `2` to `10`  | 
|  Interval  |  The interval that Elastic Load Balancing checks the health of your application's Amazon EC2 instances at.  |  `10`   |  `5` to `300`  | 
|  Timeout  |  The amount of time, in seconds, that Elastic Load Balancing waits for a response before it considers the instance nonresponsive.  |  `5`   |  `2` to `60`  | 
|  UnhealthyThreshold  |  The number of consecutive unsuccessful requests before Elastic Load Balancing changes the instance health status.  |  `5`   |  `2` to `10`  | 
|  (deprecated) Target  |  The destination on a backend instance that health checks are sent to. Use `Application Healthcheck URL` in the [`aws:elasticbeanstalk:application`](#command-options-general-elasticbeanstalkapplication) namespace instead.  |  `TCP:80`   |  Target in the format *PROTOCOL*:*PORT**/PATH*  | 

## aws:elb:loadbalancer
<a name="command-options-general-elbloadbalancer"></a>

Configure your environment's Classic Load Balancer.

Several of the options in this namespace are no longer supported in favor of listener-specific options in the [aws:elb:listener](#command-options-general-elblistener) namespace. With these options that aren't supported anymore, you can only configure two listeners (one secure and one unsecure) on standard ports.


**Namespace: `aws:elb:loadbalancer`**  

| Name | Description | Default | Valid values | 
| --- | --- | --- | --- | 
|  CrossZone  |  Configure the load balancer to route traffic evenly across all instances in all Availability Zones rather than only within each zone.  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `false`   |  `true`  `false`   | 
|  SecurityGroups  |  Assign one or more security groups that you created to the load balancer. Required if `DisableDefaultEC2SecurityGroup` ([aws:autoscaling:launchconfiguration](#command-options-general-autoscalinglaunchconfiguration)) is set to `true`. Load balanced environments that have opted out of the default Elastic Beanstalk EC2 security group must provide one or more security groups with this option. For more information, see [Managing EC2 security groups](using-features.managing.ec2.instances.sg.md).  |  None  |  One or more security group IDs.  | 
| ManagedSecurityGroup |  Assign an existing security group to the load balancer for your environment, instead of creating a new one. To use this setting, update the `SecurityGroups` setting in this namespace to include your security group’s ID, and remove the ID of the security group that was created automatically, if one was created. To allow traffic from the load balancer to your environment’s EC2 instances, Elastic Beanstalk adds a rule to the security group of the instances that allows inbound traffic from the managed security group.  | None | A security group ID. | 
|  (deprecated) LoadBalancerHTTPPort  | The port to listen on for the unsecure listener.  |  `80`   |  `OFF`  `80`   | 
|  (deprecated) LoadBalancerPortProtocol  |  The protocol to use on the unsecure listener.  |  `HTTP`   |  `HTTP`  `TCP`   | 
|  (deprecated) LoadBalancerHTTPSPort  | The port to listen on for the secure listener. |  `OFF`   |  `OFF`  `443`  `8443`   | 
|  (deprecated) LoadBalancerSSLPortProtocol  | The protocol to use on the secure listener. |  `HTTPS`   |  `HTTPS`  `SSL`   | 
|  (deprecated) SSLCertificateId  | The Amazon Resource Name (ARN) of an SSL certificate to bind to the secure listener. |  None  |    | 

## aws:elb:listener
<a name="command-options-general-elblistener"></a>

Configure the default listener (port 80) on a Classic Load Balancer.


**Namespace: `aws:elb:listener`**  

| Name | Description | Default | Valid values | 
| --- | --- | --- | --- | 
| ListenerProtocol | The protocol used by the listener. | HTTP  | HTTP TCP  | 
| InstancePort | The port that this listener uses to communicate with the EC2 instances. | 80 | 1 to 65535 | 
| InstanceProtocol |  The protocol that this listener uses to communicate with the EC2 instances. It must be at the same internet protocol layer as the `ListenerProtocol`. It also must have the same security level as any other listener using the same `InstancePort` as this listener. For example, if `ListenerProtocol` is `HTTPS` (application layer, using a secure connection), you can set `InstanceProtocol` to `HTTP` (also at the application layer, using an insecure connection). If, in addition, you set `InstancePort` to `80`, you must set `InstanceProtocol` to `HTTP` in all other listeners with `InstancePort` set to `80`.  |  `HTTP` when `ListenerProtocol` is `HTTP` `TCP` when `ListenerProtocol` is `TCP`  | HTTP or HTTPS when ListenerProtocol is HTTP or HTTPS `TCP` or `SSL` when `ListenerProtocol` is `TCP` or `SSL` | 
| PolicyNames | A comma-separated list of policy names to apply to the port for this listener. We recommend that you use the LoadBalancerPorts option of the [aws:elb:policies](#command-options-general-elbpolicies) namespace instead. | None |  | 
| ListenerEnabled | Specifies whether this listener is enabled. If you specify false, the listener isn't included in the load balancer.  | true |  `true` `false`  | 

## aws:elb:listener:listener\$1port
<a name="command-options-general-elblistener-listener"></a>

Configure additional listeners on a Classic Load Balancer.


**Namespace: `aws:elb:listener:listener_port`**  

| Name | Description | Default | Valid values | 
| --- | --- | --- | --- | 
|  ListenerProtocol  | The protocol used by the listener. |  HTTP  |  HTTP HTTPS TCP SSL  | 
|  InstancePort  | The port that this listener uses to communicate with the EC2 instances. | The same as listener\$1port. | 1 to 65535 | 
|  InstanceProtocol  |  The protocol that this listener uses to communicate with the EC2 instances. It must be at the same internet protocol layer as the `ListenerProtocol`. It also must have the same security level as any other listener using the same `InstancePort` as this listener. For example, if `ListenerProtocol` is `HTTPS` (application layer, using a secure connection), you can set `InstanceProtocol` to `HTTP` (also at the application layer, using an insecure connection). If, in addition, you set `InstancePort` to `80`, you must set `InstanceProtocol` to `HTTP` in all other listeners with `InstancePort` set to `80`.  |  `HTTP` when `ListenerProtocol` is `HTTP` or `HTTPS` `TCP` when `ListenerProtocol` is `TCP` or `SSL`  | HTTP or HTTPS when ListenerProtocol is HTTP or HTTPS `TCP` or `SSL` when `ListenerProtocol` is `TCP` or `SSL` | 
|  PolicyNames  | A comma-separated list of policy names to apply to the port for this listener. We suggest that you use the LoadBalancerPorts option of the [aws:elb:policies](#command-options-general-elbpolicies) namespace instead. | None |  | 
|  SSLCertificateId  | The Amazon Resource Name (ARN) of an SSL certificate to bind to the listener. |  None  |  | 
|  ListenerEnabled  | Specifies whether this listener is enabled. If you specify false, the listener isn't included in the load balancer.  | true if any other option is set. false otherwise. |  true false  | 

## aws:elb:policies
<a name="command-options-general-elbpolicies"></a>

Modify the default stickiness and global load balancer policies for a Classic Load Balancer.


**Namespace: `aws:elb:policies`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  ConnectionDrainingEnabled  |  Specifies whether the load balancer maintains existing connections to instances that have become unhealthy or deregistered to complete in-progress requests.  If you use the Elastic Beanstalk console or EB CLI to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console and EB CLI override this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `false`   |  `true`  `false`   | 
|  ConnectionDrainingTimeout  |  The maximum number of seconds that the load balancer maintains existing connections to an instance during connection draining before forcibly closing the connections.  If you use the Elastic Beanstalk console to create an environment, you can't set this option in a [configuration file](ebextensions.md). The console overrides this option with a [recommended value](command-options.md#configuration-options-recommendedvalues).   |  `20`   |  `1` to `3600`  | 
|  ConnectionSettingIdleTimeout  |  The amount of time, in seconds, that the load balancer waits for any data to be sent or received over the connection. If no data has been sent or received after this time period elapses, the load balancer closes the connection.  |  `60`   |  `1` to `3600`  | 
| LoadBalancerPorts |  A comma-separated list of the listener ports that the default policy (`AWSEB-ELB-StickinessPolicy`) applies to.  | None | You can use :all to indicate all listener ports | 
|  Stickiness Cookie Expiration  |  The amount of time, in seconds, that each cookie is valid. Uses the default policy (`AWSEB-ELB-StickinessPolicy`) .  |   `0`   |  `0` to `1000000`  | 
|  Stickiness Policy  |  Binds a user's session to a specific server instance so that all requests coming from the user during the session are sent to the same server instance. Uses the default policy (`AWSEB-ELB-StickinessPolicy`) .  |   `false`   |  true false  | 

## aws:elb:policies:policy\$1name
<a name="command-options-general-elbpolicies-custom"></a>

Create additional load balancer policies for a Classic Load Balancer.


**Namespace: `aws:elb:policies:policy_name`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  CookieName  | The name of the application-generated cookie that controls the session lifetimes of a AppCookieStickinessPolicyType policy. This policy can be associated only with HTTP/HTTPS listeners.  | None |  | 
|  InstancePorts  |  A comma-separated list of the instance ports that this policy applies to.  | None | A list of ports, or :all | 
|  LoadBalancerPorts  |  A comma-separated list of the listener ports that this policy applies to.  | None | A list of ports, or :all | 
|  ProxyProtocol  |  For a `ProxyProtocolPolicyType` policy, specifies whether to include the IP address and port of the originating request for TCP messages. This policy can be associated only with TCP/SSL listeners.  | None | true false  | 
|  PublicKey  |  The contents of a public key for a `PublicKeyPolicyType` policy to use when authenticating the backend server or servers. This policy can't be applied directly to backend servers or listeners. It must be part of a `BackendServerAuthenticationPolicyType` policy.  | None |  | 
|  PublicKeyPolicyNames  |  A comma-separated list of policy names (from the `PublicKeyPolicyType` policies) for a `BackendServerAuthenticationPolicyType` policy that controls authentication to a backend server or servers. This policy can be associated only with backend servers that are using HTTPS/SSL.  | None |  | 
|  SSLProtocols  |  A comma-separated list of SSL protocols to be enabled for a `SSLNegotiationPolicyType` policy that defines the ciphers and protocols that are accepted by the load balancer. This policy can be associated only with HTTPS/SSL listeners.  | None |  | 
|  SSLReferencePolicy  |  The name of a predefined security policy that adheres to AWS security best practices and that you want to activate for a `SSLNegotiationPolicyType` policy that defines the ciphers and protocols that are accepted by the load balancer. This policy can be associated only with HTTPS/SSL listeners.  | None |  | 
|  Stickiness Cookie Expiration  |  The amount of time, in seconds, that each cookie is valid.  |  `0`   |  `0` to `1000000`  | 
|  Stickiness Policy  |  Binds a user's session to a specific server instance so that all requests coming from the user during the session are sent to the same server instance.  |  `false`   | true false  | 

## aws:elbv2:listener:default
<a name="command-options-general-elbv2-listener-default"></a>

Configure the default listener (port 80) on an Application Load Balancer or a Network Load Balancer.

This namespace doesn't apply to an environment that uses a shared load balancer. Shared load balancers don't have a default listener.


**Namespace: `aws:elbv2:listener:default`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  DefaultProcess  |  The name of the [process](#command-options-general-environmentprocess) to forward traffic to when no rules match.  |  `default`  |  A process name.  | 
|  ListenerEnabled  |  Set to `false` to disable the listener. You can use this option to disable the default listener on port 80.  |  `true`  |  `true` `false`  | 
|  Protocol  |  The protocol of traffic to process.  |  With application load balancer: `HTTP` With network load balancer: `TCP`  |  With application load balancer: `HTTP`, `HTTPS` With network load balancer: `TCP`  | 
|  Rules  |  A list of [rules](#command-options-general-elbv2-listenerrule) to apply to the listener This option is only applicable to environments with an Application Load Balancer.  |  None  |  A comma-separated list of rule names.  | 
|  SSLCertificateArns  |  The Amazon Resource Name (ARN) of the SSL certificate to bind to the listener. This option is only applicable to environments with an Application Load Balancer.  |  None  |  The ARN of a certificate stored in IAM or ACM.  | 
|  SSLPolicy  |  Specify a security policy to apply to the listener. This option is only applicable to environments with an Application Load Balancer.  | None (ELB default) |  The name of a load balancer security policy.  | 

## aws:elbv2:listener:listener\$1port
<a name="command-options-general-elbv2-listener"></a>

Configure additional listeners on an Application Load Balancer or a Network Load Balancer.

**Note**  
For a shared Application Load Balancer, you can specify only the `Rule` option. The other options aren't applicable to shared load balancers.


**Namespace: `aws:elbv2:listener:listener_port`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  DefaultProcess  |  The name of the [process](#command-options-general-environmentprocess) where traffic is forwarded when no rules match.  |  `default`  |  A process name.  | 
|  ListenerEnabled  |  Set to `false` to disable the listener. You can use this option to disable the default listener on port 80.  |  `true`  |  `true` `false`  | 
|  Protocol  |  The protocol of traffic to process.  |  With application load balancer: `HTTP` With network load balancer: `TCP`  |  With application load balancer: `HTTP`, `HTTPS` With network load balancer: `TCP`  | 
|  Rules  |  List of [rules](#command-options-general-elbv2-listenerrule) to apply to the listener This option is applicable only to environments with an Application Load Balancer. If your environment uses a shared Application Load Balancer, and you don't specify this option for any listener, Elastic Beanstalk automatically associates the `default` rule with a port 80 listener.  |  None  |  A comma-separated list of rule names.  | 
|  SSLCertificateArns  |  The Amazon Resource Name (ARN) of the SSL certificate to bind to the listener. This option is only applicable to environments with an Application Load Balancer.  |  None  |  The ARN of a certificate stored in IAM or ACM.  | 
|  SSLPolicy  |  Specify a security policy to apply to the listener. This option is only applicable to environments with an Application Load Balancer.  | None (ELB default) |  The name of a load balancer security policy.  | 

## aws:elbv2:listenerrule:rule\$1name
<a name="command-options-general-elbv2-listenerrule"></a>

Define listener rules for an Application Load Balancer. If a request matches the host names or paths in a rule, the load balancer forwards it to the specified process. To use a rule, add it to a listener with the `Rules` option in the [`aws:elbv2:listener:listener_port`](#command-options-general-elbv2-listener) namespace.

**Note**  
This namespace isn't applicable to environments with a network load balancer.


**Namespace: `aws:elbv2:listenerrule:rule_name`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  HostHeaders  |  A list of host names to match. For example, `my.example.com`.  |  Dedicated load balancer: None Shared load balancer: The environment's CNAME  |  Each name can contain up to 128 characters. A pattern can include both uppercase and lowercase letters, numbers, hyphens (–), and up to three wildcard characters (`*` matches zero or more characters; `?` matches exactly one character). You can list more than one name, each separated by a comma. Application Load Balancer supports up to five combined `HostHeader` and `PathPattern` rules. For more information, see [Host conditions](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#host-conditions) in the *User Guide for Application Load Balancers*.  | 
|  PathPatterns  |  The path patterns to match (for example, `/img/*`). This option is only applicable to environments with an application load balancer.  |  None  |  Each pattern can contain up to 128 characters. A pattern can include uppercase and lowercase letters, numbers, hyphens (–), and up to three wildcard characters (`*` matches zero or more characters; `?` matches exactly one character). You can add multiple comma-separated path patterns. Application Load Balancer supports up to five combined `HostHeader` and `PathPattern` rules. For more information, see [Path conditions](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#path-conditions) in the *User Guide for Application Load Balancers*.  | 
|  Priority  |  The precedence of this rule when multiple rules match. The lower number takes precedence. No two rules can have the same priority. With a shared load balancer, Elastic Beanstalk treats rule priorities as relative across sharing environments, and maps them to absolute priorities during creation.  |  `1`  |  `1` to `1000`  | 
|  Process  |  The name of the [process](#command-options-general-environmentprocess) to forward traffic when this rule matches the request.  |  `default`  |  A process name.  | 

## aws:elbv2:loadbalancer
<a name="command-options-general-elbv2"></a>

Configure an Application Load Balancer.

For a shared load balancer, only the `SharedLoadBalancer` and `SecurityGroups` options are valid.

**Note**  
This namespace isn't applicable to environments with a Network Load Balancer.


**Namespace: `aws:elbv2:loadbalancer`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  AccessLogsS3Bucket  |  The Amazon S3 bucket where access logs are stored. The bucket must be in the same Region as the environment and allow the load balancer write access.  |  None  |  A bucket name.  | 
|  AccessLogsS3Enabled  |  Enable access log storage.  |  `false`  |  `true` `false`  | 
|  AccessLogsS3Prefix  |  A prefix to prepend to access log names. By default, the load balancer uploads logs to a directory named AWSLogs in the bucket you specify. Specify a prefix to place the AWSLogs directory inside another directory.  |  None  |    | 
|  IdleTimeout  |  The amount of time, in seconds, to wait for a request to complete before closing connections to client and instance.  |  None  |  `1` to `3600`  | 
|  IpAddressType  | Specifies the IP address format configuration for the environment's load balancer. Use the *dualstack* option to enable IPv6 protocol, along with IPv4 protocol. Only Application Load Balancers and Network Load Balancers support the *dualstack* option. Single instance environments and environments that use Classic Load Balancers do not support it. You must associate the environment's VPC and all of the VPC subnets with IPv6 CIDR blocks to support the *dualstack* option. For more information, see [Configuring dual-stack Elastic Beanstalk load balancers](environments-cfg-elbv2-ipv6-dualstack.md).  | ipv4 | ipv4, dualstack | 
|  ManagedSecurityGroup  |  Assign an existing security group to your environment’s load balancer, instead of creating a new one. To use this setting, update the `SecurityGroups` setting in this namespace to include your security group’s ID, and remove the automatically created security group’s ID, if one exists. To allow traffic from the load balancer to the EC2 instances for your environment, Elastic Beanstalk adds a rule to the security group of your instances that allows inbound traffic from the managed security group.  |  The security group that Elastic Beanstalks creates for your load balancer.  |  A security group ID.  | 
|  SecurityGroups  |  A list of security groups to attach to the load balancer. Required if `DisableDefaultEC2SecurityGroup` ([aws:autoscaling:launchconfiguration](#command-options-general-autoscalinglaunchconfiguration)) is set to `true`. Load balanced environments that have opted out of the default Elastic Beanstalk EC2 security group must provide one or more security groups with this option. For more information, see [Managing EC2 security groups](using-features.managing.ec2.instances.sg.md). For a shared load balancer, if you don't specify this value, Elastic Beanstalk checks if an existing security group that it manages is already attached to the load balancer. If one isn't attached to the load balancer, Elastic Beanstalk creates a security group and attaches it to the load balancer. Elastic Beanstalk deletes this security group when the last environment sharing the load balancer terminates. The load balancer security groups are used to set up the Amazon EC2 instance security group ingress rule.  |  The security group that Elastic Beanstalk creates for your load balancer.  |  Comma-separated list of security group IDs.  | 
|  SharedLoadBalancer  |  The Amazon Resource Name (ARN) of a shared load balancer. This option is relevant only to an Application Load Balancer. It's required when the `LoadBalancerIsShared` option of the [aws:elasticbeanstalk:environment](#command-options-general-elasticbeanstalkenvironment) namespace is set to `true`. You can't change the shared load balancer ARN after the environment is created. Criteria for a valid value: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html) Example: `arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/FrontEndLB/0dbf78d8ad96abbc`  |  None  |  ARN of a valid load balancer that meets all of the criteria described here.  | 

## aws:rds:dbinstance
<a name="command-options-general-rdsdbinstance"></a>

Configure an attached Amazon RDS DB instance.


**Namespace: `aws:rds:dbinstance`**  

| **Name**  | **Description**  | **Default**  | **Valid values**  | 
| --- | --- | --- | --- | 
|  DBAllocatedStorage  |  The allocated database storage size, specified in gigabytes.  |  MySQL: `5` Oracle: `10` sqlserver-se: `200` sqlserver-ex: `30` sqlserver-web: `30`  |  MySQL: `5`-`1024` Oracle: `10`-`1024` sqlserver: cannot be modified  | 
|  DBDeletionPolicy  |  Specifies whether to retain, delete, or create snapshot of the DB instance when an environment is terminated. This option works in conjunction with `HasCoupledDatabase`, also an option of this namespace.  Deleting a DB instance results in permanent data loss.   |  `Delete`   |  `Delete`  `Retain`  `Snapshot`   | 
|  DBEngine  |  The name of the database engine to use for this instance.  |  `mysql`   |  `mysql`  `oracle-se1`  `sqlserver-ex`  `sqlserver-web`  `sqlserver-se`  `postgres`   | 
|  DBEngineVersion  |  The version number of the database engine.  |  `5.5`   |    | 
|  DBInstanceClass  |  The database instance type.  |  `db.t2.micro`  (`db.m1.large` for an environment not running in an Amazon VPC)   |  For more information, see [DB Instance Class](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the * Amazon Relational Database Service User Guide*.  | 
|  DBPassword  |  The name of master user password for the database instance.  |  None  |    | 
|  DBSnapshotIdentifier  |  The identifier for the DB snapshot to restore from.  |  None  |    | 
|  DBUser  |  The name of master user for the DB Instance.  |  **ebroot**   |    | 
|  HasCoupledDatabase  |  Specifies whether a DB instance is coupled to your environment. If toggled to `true`, Elastic Beanstalk creates a new DB instance coupled to your environment. If toggled to `false`, Elastic Beanstalk initiates decoupling of the DB instance from your environment. This option works in conjunction with `DBDeletionPolicy`, also an option of this namespace.  Note: If you toggle this value back to `true` after decoupling the previous database, Elastic Beanstalk creates a new database with the previous database option settings. However, to maintain the security of your environment, it doesn't retain the existing `DBUser` and `DBPassword` settings. You need to specify `DBUser` and `DBPassword` again.   |  `false`   |  `true`  `false`   | 
|  MultiAZDatabase  |  Specifies whether a database instance Multi-AZ deployment needs to be created. For more information about Multi-AZ deployments with Amazon Relational Database Service (RDS), see [Regions and Availability Zones](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) in the * Amazon Relational Database Service User Guide*.  |  `false`   |  `true`  `false`   | 

# Platform specific options
<a name="command-options-specific"></a>

Some Elastic Beanstalk platforms define option namespaces that are specific to the platform. These namespaces and their options are listed below for each platform.

**Note**  
Previously, in platform versions based on Amazon Linux AMI (preceding Amazon Linux 2), the following two features and their respective namespaces were considered to be platform-specific features, and were listed here per platform:  
**Proxy configuration for static files** – `aws:elasticbeanstalk:environment:proxy:staticfiles`
**AWS X-Ray support** – `aws:elasticbeanstalk:xray`
In Amazon Linux 2 platform versions, Elastic Beanstalk implements these features in a consistent way across all supporting platforms. The related namespace are now listed in the [General options for all environments](command-options-general.md) page. We only kept mention of them on this page for platforms who had differently-named namespaces.

**Topics**
+ [Docker platform options](#command-options-docker)
+ [Go platform options](#command-options-golang)
+ [Java SE platform options](#command-options-plain-java)
+ [Java with Tomcat platform options](#command-options-java)
+ [.NET Core on Linux platform options](#command-options-dotnet-core-linux)
+ [.NET platform options](#command-options-net)
+ [Node.js platform options](#command-options-nodejs)
+ [PHP platform options](#command-options-php)
+ [Python platform options](#command-options-python)
+ [Ruby platform options](#command-options-ruby)

## Docker platform options
<a name="command-options-docker"></a>

The following Docker-specific configuration options apply to the Docker and Preconfigured Docker platforms.

**Note**  
These configuration options do not apply to  
Docker platform (Amazon Linux 2) with Docker Compose
Multicontainer Docker platform (Amazon Linux AMI AL1) - this platform is retired


**Namespace: `aws:elasticbeanstalk:environment:proxy`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  ProxyServer  |  Specifies the web server to use as a proxy.  |  `nginx`  |  `nginx` `none` – *Amazon Linux AM* and *Docker w/DC only*  | 

## Go platform options
<a name="command-options-golang"></a>

### Amazon Linux AMI (pre-Amazon Linux 2) platform options
<a name="command-options-golang.alami"></a>

#### Namespace: `aws:elasticbeanstalk:container:golang:staticfiles`
<a name="command-options-golang.alami.staticfiles"></a>

You can use the following namespace to configure the proxy server to serve static files. When the proxy server receives a request for a file under the specified path, it serves the file directly instead of routing the request to your application. This reduces the number of requests that your application has to process.

Map a path served by the proxy server to a folder in your source code that contains static assets. Each option that you define in this namespace maps a different path.


|  **Name**  |  **Value**  | 
| --- | --- | 
|  Path where the proxy server will serve the files. Example: `/images` to serve files at `subdomain.eleasticbeanstalk.com/images`.  |  Name of the folder containing the files. Example: `staticimages` to serve files from a folder named `staticimages` at the top level of your source bundle.  | 

## Java SE platform options
<a name="command-options-plain-java"></a>

### Amazon Linux AMI (pre-Amazon Linux 2) platform options
<a name="command-options-plain-java.alami"></a>

#### Namespace: `aws:elasticbeanstalk:container:java:staticfiles`
<a name="command-options-plain-java.alami.staticfiles"></a>

You can use the following namespace to configure the proxy server to serve static files. When the proxy server receives a request for a file under the specified path, it serves the file directly instead of routing the request to your application. This reduces the number of requests that your application has to process.

Map a path served by the proxy server to a folder in your source code that contains static assets. Each option that you define in this namespace maps a different path.


|  **Name**  |  **Value**  | 
| --- | --- | 
|  Path where the proxy server will serve the files. Example: `/images` to serve files at `subdomain.eleasticbeanstalk.com/images`.  |  Name of the folder containing the files. Example: `staticimages` to serve files from a folder named `staticimages` at the top level of your source bundle.  | 

## Java with Tomcat platform options
<a name="command-options-java"></a>


**Namespace: `aws:elasticbeanstalk:application:environment`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  JDBC\$1CONNECTION\$1STRING  |  The connection string to an external database.  |  n/a  |  n/a  | 

See [Environment variables and other software settings](environments-cfg-softwaresettings.md) for more information.


**Namespace: `aws:elasticbeanstalk:container:tomcat:jvmoptions`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  JVM Options  |  Pass command-line options to the JVM at startup.  |  n/a  |  n/a  | 
|  Xmx  |  Maximum JVM heap sizes.  |  `256m`  |  n/a  | 
|  XX:MaxPermSize  |  Section of the JVM heap that is used to store class definitions and associated metadata.  This option only applies to Java versions earlier than Java 8, and isn't supported on Elastic Beanstalk Tomcat platforms based on Amazon Linux 2 and later.   |  `64m`  |  n/a  | 
|  Xms  |  Initial JVM heap sizes.  |  `256m`  |  n/a  | 
|  *optionName*  |  Specify arbitrary JVM options in addition to the those defined by the Tomcat platform.  |  n/a  |  n/a  | 


**Namespace: `aws:elasticbeanstalk:environment:proxy`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  GzipCompression  |  Set to `false` to disable response compression. *Only valid on Amazon Linux AMI (preceding Amazon Linux 2) platform versions.*  |  `true`  |  `true` `false`  | 
|  ProxyServer  |  Set the proxy to use on your environment's instances. If you set this option to `apache`, Elastic Beanstalk uses [Apache 2.4](https://httpd.apache.org/docs/2.4/). Set to `apache/2.2` if your application isn't ready to migrate away from [Apache 2.2](https://httpd.apache.org/docs/2.2/) due to incompatible proxy configuration settings. *This value is only valid on Amazon Linux AMI (preceding Amazon Linux 2) platform versions.* Set to `nginx` to use [nginx](https://www.nginx.com/). This is the default starting with Amazon Linux 2 platform versions. For more information, see [Configuring the proxy server](java-tomcat-proxy.md).  |  `nginx` (Amazon Linux 2) `apache` (Amazon Linux AMI)  |  `apache` `apache/2.2` – *Amazon Linux AMI only* `nginx`  | 

## .NET Core on Linux platform options
<a name="command-options-dotnet-core-linux"></a>


**Namespace: `aws:elasticbeanstalk:environment:proxy`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  ProxyServer  |  Specifies the web server to use as a proxy.  |  `nginx`  |  `nginx` `none`  | 

## .NET platform options
<a name="command-options-net"></a>


**Namespace: `aws:elasticbeanstalk:container:dotnet:apppool`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  Target Runtime  |  Choose the version of .NET Framework for your application.  |  `4.0`  |  `2.0` `4.0`  | 
|  Enable 32-bit Applications  |  Set to `True` to run 32-bit applications.  |  `False`  |  `True` `False`  | 

## Node.js platform options
<a name="command-options-nodejs"></a>


**Namespace: `aws:elasticbeanstalk:environment:proxy`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  ProxyServer  |  Set the proxy to use on your environment's instances.  |  `nginx`  |  `apache` `nginx`  | 

### Amazon Linux AMI (pre-Amazon Linux 2) platform options
<a name="command-options-nodejs.alami"></a>

#### Namespace: `aws:elasticbeanstalk:container:nodejs`
<a name="command-options-nodejs.alami.nodejs"></a>


|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  NodeCommand  |  Command used to start the Node.js application. If an empty string is specified, `app.js` is used, then `server.js`, then `npm start` in that order.  |  ""  |  n/a  | 
|  NodeVersion  |  Version of Node.js. For example, `4.4.6` Supported Node.js versions vary between Node.js platform versions. See [Node.js](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) in the *AWS Elastic Beanstalk Platforms* document for a list of the currently supported versions.  When support for the version of Node.js that you are using is removed from the platform, you must change or remove the version setting prior to doing a [platform update](using-features.platform.upgrade.md). This might occur when a security vulnerability is identified for one or more versions of Node.js. When this happens, attempting to update to a new version of the platform that doesn't support the configured [NodeVersion](#command-options-nodejs) fails. To avoid needing to create a new environment, change the *NodeVersion* configuration option to a Node.js version that is supported by both the old platform version and the new one, or [remove the option setting](environment-configuration-methods-after.md), and then perform the platform update.   | varies | varies | 
|  GzipCompression  |  Specifies if gzip compression is enabled. If ProxyServer is set to `none`, then gzip compression is disabled.   |  `false`  |  `true` `false`  | 
|  ProxyServer  |  Specifies which web server should be used to proxy connections to Node.js. If ProxyServer is set to `none`, then static file mappings doesn't take effect and gzip compression is disabled.  |  `nginx`  |  `apache` `nginx` `none`  | 

#### Namespace: `aws:elasticbeanstalk:container:nodejs:staticfiles`
<a name="command-options-nodejs.alami.staticfiles"></a>

You can use the following namespace to configure the proxy server to serve static files. When the proxy server receives a request for a file under the specified path, it serves the file directly instead of routing the request to your application. This reduces the number of requests that your application has to process.

Map a path served by the proxy server to a folder in your source code that contains static assets. Each option that you define in this namespace maps a different path.

**Note**  
Static file settings do not apply if `aws:elasticbeanstalk:container:nodejs::ProxyFiles` is set to `none`.


|  **Name**  |  **Value**  | 
| --- | --- | 
|  Path where the proxy server will serve the files. Example: `/images` to serve files at `subdomain.eleasticbeanstalk.com/images`.  |  Name of the folder containing the files. Example: `staticimages` to serve files from a folder named `staticimages` at the top level of your source bundle.  | 

## PHP platform options
<a name="command-options-php"></a>


**Namespace: `aws:elasticbeanstalk:container:php:phpini`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  document\$1root  |  Specify the child directory of your project that is treated as the public-facing web root.  |  `/`  |  A blank string is treated as `/`, or specify a string starting with `/`  | 
|  memory\$1limit  |  Amount of memory allocated to the PHP environment.  |  `256M`  |  n/a  | 
|  zlib.output\$1compression  |  Specifies whether or not PHP should use compression for output.  |  `Off`  |  `On` `Off` `true` `false`  | 
|  allow\$1url\$1fopen  |  Specifies if PHP's file functions are allowed to retrieve data from remote locations, such as websites or FTP servers.  |  `On`  |  `On` `Off` `true` `false`  | 
|  display\$1errors  |  Specifies if error messages should be part of the output.  |  `Off`  |  `On` `Off`  | 
|  max\$1execution\$1time  |  Sets the maximum time, in seconds, a script is allowed to run before it is terminated by the environment.  |  `60`  |  `0` to `9223372036854775807` (PHP\$1INT\$1MAX)  | 
|  composer\$1options  |  Sets custom options to use when installing dependencies using Composer through the **composer.phar install** command. For more information, see [install](https://getcomposer.org/doc/03-cli.md#install-i) on the *getcomposer.org* website.  |  n/a  |  n/a  | 


**Namespace: `aws:elasticbeanstalk:environment:proxy`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  ProxyServer  |  Set the proxy to use on your environment's instances.  |  `nginx`  |  `apache` `nginx`  | 

**Note**  
For more information about the PHP platform, see [Using the Elastic Beanstalk PHP platform](create_deploy_PHP.container.md).

## Python platform options
<a name="command-options-python"></a>


**Namespace: `aws:elasticbeanstalk:application:environment`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  DJANGO\$1SETTINGS\$1MODULE  |  Specifies which settings file to use.  |  n/a  |  n/a  | 

See [Environment variables and other software settings](environments-cfg-softwaresettings.md) for more information.


**Namespace: `aws:elasticbeanstalk:container:python`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  WSGIPath  |  The file that contains the WSGI application. This file must have an `application` callable.  |  On Amazon Linux 2 Python platform versions: `application` On Amazon Linux AMI Python platform versions: `application.py`  |  n/a  | 
|  NumProcesses  |  The number of daemon processes that should be started for the process group when running WSGI applications.  |  `1`  |  n/a  | 
|  NumThreads  |  The number of threads to be created to handle requests in each daemon process within the process group when running WSGI applications.  |  `15`  |  n/a  | 


**Namespace: `aws:elasticbeanstalk:environment:proxy`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  ProxyServer  |  Set the proxy to use on your environment's instances.  |  `nginx`  |  `apache` `nginx`  | 

### Amazon Linux AMI (pre-Amazon Linux 2) platform options
<a name="command-options-python.alami"></a>

#### Namespace: `aws:elasticbeanstalk:container:python:staticfiles`
<a name="command-options-python.alami.staticfiles"></a>

You can use the following namespace to configure the proxy server to serve static files. When the proxy server receives a request for a file under the specified path, it serves the file directly instead of routing the request to your application. This reduces the number of requests that your application has to process.

Map a path served by the proxy server to a folder in your source code that contains static assets. Each option that you define in this namespace maps a different path.

By default, the proxy server in a Python environment serves any files in a folder named `static` at the `/static` path.


**Namespace: `aws:elasticbeanstalk:container:python:staticfiles`**  

|  **Name**  |  **Value**  | 
| --- | --- | 
|  Path where the proxy server will serve the files. Example: `/images` to serve files at `subdomain.eleasticbeanstalk.com/images`.  |  Name of the folder containing the files. Example: `staticimages` to serve files from a folder named `staticimages` at the top level of your source bundle.  | 

## Ruby platform options
<a name="command-options-ruby"></a>


**Namespace: `aws:elasticbeanstalk:application:environment`**  

|  **Name**  |  **Description**  |  **Default**  |  **Valid values**  | 
| --- | --- | --- | --- | 
|  RAILS\$1SKIP\$1MIGRATIONS  |  Specifies whether to run ``rake db:migrate`` on behalf of the users' applications; or whether it should be skipped. This is only applicable to Rails 3 applications.  |  `false`  |  `true` `false`  | 
|  RAILS\$1SKIP\$1ASSET\$1COMPILATION  |  Specifies whether the container should run ``rake assets:precompile` `on behalf of the users' applications; or whether it should be skipped. This is also only applicable to Rails 3 applications.  |  `false`  |  `true` `false`  | 
|  BUNDLE\$1WITHOUT  |  A colon (`:`) separated list of groups to ignore when installing dependencies from a Gemfile.  |  `test:development`  |  n/a  | 
|  RACK\$1ENV  |  Specifies what environment stage an application can be run in. Examples of common environments include development, production, test.  |  `production`  |  n/a  | 

See [Environment variables and other software settings](environments-cfg-softwaresettings.md) for more information.

# Custom options
<a name="configuration-options-custom"></a>

Use the `aws:elasticbeanstalk:customoption` namespace to define options and values that can be read in `Resources` blocks in other configuration files. Use custom options to collect user specified settings in a single configuration file.

For example, you may have a complex configuration file that defines a resource that can be configured by the user launching the environment. If you use `Fn::GetOptionSetting` to retrieve the value of a custom option, you can put the definition of that option in a different configuration file, where it is more easily discovered and modified by the user.

Also, because they are configuration options, custom options can be set at the API level to override values set in a configuration file. See [Precedence](command-options.md#configuration-options-precedence) for more information.

Custom options are defined like any other option:

```
option_settings:
  aws:elasticbeanstalk:customoption:
    option name: option value
```

For example, the following configuration file creates an option named `ELBAlarmEmail` and sets the value to `someone@example.com`:

```
option_settings:
  aws:elasticbeanstalk:customoption:
    ELBAlarmEmail: someone@example.com
```

Elsewhere, a configuration file defines an SNS topic that reads the option with `Fn::GetOptionSetting` to populate the value of the `Endpoint` attribute:

```
Resources:
  MySNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint: 
            Fn::GetOptionSetting:
              OptionName: ELBAlarmEmail
              DefaultValue: nobody@example.com
          Protocol: email
```

You can find more example snippets using `Fn::GetOptionSetting` at [Adding and customizing Elastic Beanstalk environment resources](environment-resources.md).