Environment Properties and Other Software Settings

You can use environment properties to pass secrets, endpoints, debug settings, and other information to your application.
Environment properties help you run your application in multiple environments for
different purposes, such as development, testing, staging, and
production.

Environment Variables

In most cases, environment properties are passed to your application as environment variables, but the behavior is platform
dependent. For example, the Java SE platform sets environment variables that you retrieve with
System.getenv, while the Tomcat platform sets Java system properties that you retrieve with
System.getProperty.

In addition to the standard set of options available for all environments, most Elastic
Beanstalk platforms let you specify language-specific or framework-specific
settings. These can take the following forms.

Placeholder environment properties – The Tomcat platform defines an environment property named
JDBC_CONNECTION_STRING that is not set to any value. This type of setting was more common on older platform
versions.

Configuration options – Most platforms define configuration options
in platform-specific or shared namespaces, such as aws:elasticbeanstalk:xray or aws:elasticbeanstalk:container:python.

For information about platform-specific options, see the platform topic for your language
or framework:

Also, when you add a database to your environment, Elastic Beanstalk sets environment properties, such as
RDS_HOSTNAME, that you can read in your application code to construct a connection object or string.

The symbols listed are valid for environment property keys, but might not be valid
for environment variable names on your environment's platform.
For compatibility with all platforms, limit environment properties to the following
pattern: [A-Z_][A-Z0-9_]*

Keys can contain up to 128 characters. Values can contain up to 256
characters.

Keys and values are case sensitive.

The combined size of all environment properties cannot exceed 4,096 bytes when stored
as strings with the format
key=value.

Software Setting Namespaces

You can use a configuration file to set configuration
options and perform other instance configuration tasks during deployments. Configuration
options can be defined by the Elastic Beanstalk service or
the platform that you use and are organized into namespaces.

If you use configuration files or AWS CloudFormation templates to create custom resources, you can use an AWS CloudFormation
function to get information about the resource and assign it to an environment property
dynamically during deployment. The following example from the the
elastic-beanstalk-samples GitHub repository uses the Ref function to
get the ARN of an Amazon SNS topic that it creates, and assigns it to an environment
property named NOTIFICATION_TOPIC.

Most Elastic Beanstalk platforms define additional namespaces with options for configuring
software that runs on the instance, such as the reverse proxy that
relays requests to your application. For more information about the namespaces available
for your platform, see the following:

Elastic Beanstalk provides many configuration options for customizing your environment.
In
addition to configuration files, you can also set configuration options using the
console, saved configurations, the EB CLI, or the AWS CLI.
See Configuration Options for more information.

Accessing Environment Properties

In most cases, you access environment properties in your application code like an
environment variable. In general, however, environment properties
are passed only to the application and can't be viewed by connecting an instance in
your environment and running env.