Configuration options for Beanstalk Cluster environments
A Beanstalk Cluster environment is configured through the twelve namespaces on this page. They
are the only namespaces that a Beanstalk Cluster environment accepts. The classic namespaces in
Configuration options for Beanstalk Standard environments configure
Beanstalk Standard environments and do not apply, and passing one of them to a Beanstalk Cluster
environment returns an InvalidParameterValueException rather than being
ignored.
For the ways to set these options, and for how Elastic Beanstalk resolves them, see Configuration options.
Note
The Default column gives the value that
DescribeConfigurationOptions advertises for the option. Where Elastic Beanstalk applies a value
even though it advertises no default, the description says so.
aws:elasticbeanstalk:eks
Configure the IAM roles for the Amazon EKS cluster that runs your environment. You supply both roles, and Elastic Beanstalk requires them when you create the environment. The subnets that you select determine which cluster the environment joins, and Elastic Beanstalk rejects the request if these roles don't match the roles registered for that cluster. For the role names that the console creates, their trusted services, and their policies, see Permissions for Beanstalk Cluster.
The environment also requires an observability role, and it can take an optional
application role. Both of those settings are in the
aws:elasticbeanstalk:eks:environment namespace rather than this one. See
aws:elasticbeanstalk:eks:environment.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
The ARN of the IAM role that Amazon EKS assumes for the cluster. |
None. You must supply a value. |
An IAM role ARN |
|
The ARN of the IAM role that the cluster's Amazon EC2 nodes assume. |
None. You must supply a value. |
An IAM role ARN |
aws:elasticbeanstalk:eks:environment
Configure the application container, the compute it reserves, its network placement, and the roles it uses.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
The ARN of an optional IAM role that your application assumes to call Amazon services. See Permissions for Beanstalk Cluster. |
None |
An IAM role ARN |
|
The CPU architecture that your application runs on. |
|
|
|
The CPU that each replica of your application reserves. Uses Kubernetes
quantity notation, so |
|
|
|
The most CPU that each replica of your application can use. Uses the same
notation as |
None |
|
|
The environment variables for the container, as a JSON object that maps each
variable name to its value. This is one option that holds every variable, not one option
per variable. Elastic Beanstalk sets |
|
A JSON object |
|
The names of the environments that may send traffic to this environment. See Multi-tenancy for Beanstalk Cluster environments. |
None |
A comma-separated list of environment names |
|
The ingress groups whose environments may send traffic to this environment. Every environment in a listed group is allowed. |
None |
A comma-separated list of ingress group names |
|
The ingress groups that this environment belongs to. Environments in the same group can reach each other. |
None |
A comma-separated list of ingress group names |
|
The Amazon EC2 instance category that the cluster's nodes are selected from. |
None |
|
|
The runtime language of your application, which selects the OpenTelemetry auto-instrumentation that Elastic Beanstalk adds to your container, so that your application emits metrics, logs, and traces to the observability backends that you select without application changes. This option chooses auto-instrumentation only. It doesn't limit the languages your application can use. Omit it if your runtime isn't listed, or if your application emits OpenTelemetry data on its own. |
None |
|
|
How traffic reaches your application. With |
|
|
|
The memory that each replica of your application reserves. Uses Kubernetes
quantity notation, such as |
|
A Kubernetes memory quantity |
|
The most memory that each replica of your application can use. Uses the same
notation as |
|
A Kubernetes memory quantity |
|
The name of the node pool that runs this environment's replicas. A unique value gives the environment its own nodes, and a shared value groups environments onto shared nodes. See Multi-tenancy for Beanstalk Cluster environments. |
None |
A DNS-1123 label |
|
The ARN of the IAM role that publishes the environment's metrics, logs, and traces. Elastic Beanstalk requires it, and it must match the role registered for the cluster that your subnets select. There is no default, so supply it explicitly. See Permissions for Beanstalk Cluster. |
None. You must supply a value. |
An IAM role ARN |
|
The secrets to expose to the container, as a JSON object that maps each name
to the ARN of a secret in Secrets Manager or a parameter in Systems Manager Parameter Store. Like
|
None |
A JSON object |
|
The port that your application listens on. Elastic Beanstalk requires it, injects it into
the container as the |
|
|
|
The subnets for the environment. They determine where the cluster's nodes run and which cluster the environment joins. If you omit them, Elastic Beanstalk uses the public subnets of the default VPC. You can't change them after you create the environment. See Configuring networking for Beanstalk Cluster environments. |
None |
A comma-separated list of subnet IDs |
aws:elasticbeanstalk:eks:environment:deployment
Choose how Elastic Beanstalk replaces the running replicas of your application when you deploy a new application version.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
The deployment strategy. |
|
|
aws:elasticbeanstalk:eks:environment:deployment:strategy:rolling
Bound how far a rolling deployment may run ahead of, or behind, the number of replicas that
the environment is running. These options apply when strategy is
RollingUpdate.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
How many replicas Elastic Beanstalk may start beyond the environment's current replica count while it deploys. |
|
A count, such as |
|
How many of the environment's replicas may be unavailable at one time while it deploys. |
|
A count, such as |
aws:elasticbeanstalk:eks:environment:autoscaling
Set the number of replicas that Elastic Beanstalk runs for your application, and how often it evaluates whether to change that number.
If you configure no trigger, Elastic Beanstalk scales the environment on CPU utilization with a target
of 80 percent, between min-replica and max-replica. To scale on
something else, set a trigger. See
aws:elasticbeanstalk:eks:environment:autoscaling:trigger.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
The fewest replicas of your application that the environment runs. |
|
|
|
The most replicas of your application that the environment runs. |
|
|
|
How often, in seconds, Elastic Beanstalk evaluates the scaling triggers. |
|
|
|
How long, in seconds, Elastic Beanstalk waits after the last trigger stops reporting activity before it scales the environment back down. |
|
An integer of |
aws:elasticbeanstalk:eks:environment:autoscaling:trigger
Choose what makes the environment scale. You can scale on the CPU or memory that your
replicas use, and you can scale on a schedule or on a metric that your own endpoint reports.
These options have no advertised defaults. When you set none of them, Elastic Beanstalk supplies a CPU
trigger with cpu-metric-type set to Utilization and
cpu-value set to 80.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
Whether the CPU trigger compares a percentage of the reserved CPU
( |
None. Elastic Beanstalk applies |
|
|
The CPU target that the environment scales to hold. With
|
None. Elastic Beanstalk applies |
An integer |
|
Whether the memory trigger compares a percentage of the reserved memory
( |
None. Elastic Beanstalk applies |
|
|
The memory target that the environment scales to hold. |
None |
An integer |
|
The kind of event-driven trigger. |
None |
|
|
The settings for the trigger, as a JSON object. With |
None |
A JSON object |
|
How Elastic Beanstalk authenticates to the endpoint that a |
|
|
|
The ARN of the Secrets Manager secret that holds the credentials for the endpoint. You
can set it only when |
None |
An Secrets Manager secret ARN |
The following example scales the environment to five replicas during weekday working hours in UTC:
$ cat schedule.json
[
{
"Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger",
"OptionName": "scaler-type",
"Value": "cron"
},
{
"Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger",
"OptionName": "scaler-metadata",
"Value": "{\"timezone\":\"UTC\",\"start\":\"0 8 * * 1-5\",\"end\":\"0 18 * * 1-5\",\"desiredReplicas\":\"5\"}"
}
]
$ aws elasticbeanstalk update-environment \
--environment-name my-cluster-env \
--option-settings file://schedule.json
A scaler-metadata value is itself a JSON document, so the settings go in a file
rather than on the command line.
aws:elasticbeanstalk:eks:environment:autoscaling:behavior
Limit how quickly the environment adds or removes replicas once a trigger fires. Each direction takes a period, a unit, and an amount: within each period, the environment changes the replica count by at most the amount that you set.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
The period, in seconds, that |
None |
An integer of |
|
Whether |
None |
|
|
The most that the environment adds within one
|
None |
An integer |
|
The period, in seconds, that |
None |
An integer of |
|
Whether |
None |
|
|
The most that the environment removes within one
|
None |
An integer |
The container probe namespaces
Three namespaces configure container probes, and each one takes the same nine options:
-
aws:elasticbeanstalk:eks:environment:readiness-probedecides when a replica is ready to receive traffic. A replica that fails it is taken out of service without being restarted. -
aws:elasticbeanstalk:eks:environment:liveness-probedecides when a replica is unhealthy. A replica that fails it is restarted. -
aws:elasticbeanstalk:eks:environment:startup-probegives a slow-starting replica time to initialize before the other two probes begin.
Every probe is off until you enable it. For how probes relate to environment health, see Monitoring Beanstalk Cluster environments.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
Whether the probe runs. |
|
|
|
The path that the probe requests. |
|
A URL path |
|
The port that the probe requests. If you omit it, the probe uses
|
None. The probe uses |
|
|
How long the probe waits after a replica starts before its first request. |
|
An integer number of seconds |
|
How often the probe runs. |
|
|
|
How long the probe waits for a response before the request counts as a failure. |
|
An integer number of seconds |
|
How many consecutive successes make the probe pass. |
|
An integer |
|
How many consecutive failures make the probe fail. |
|
An integer |
aws:elasticbeanstalk:eks:alb
Configure the Application Load Balancer in front of your application, its listeners and TLS,
and the health check on its target group. These options apply when
load-balancer-type is ALB. For the network settings, for supplying a
load balancer that you already own, and for the rules that govern the HTTPS listener, see
Configuring networking for Beanstalk Cluster environments.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
The ARN of an Application Load Balancer that you already own, used instead of one that Elastic Beanstalk creates. Elastic Beanstalk rejects the ARN of a Network Load Balancer. |
None. Elastic Beanstalk creates a load balancer. |
An Application Load Balancer ARN |
|
Whether the load balancer is reachable from the internet. If you omit it, Elastic Beanstalk derives it from your subnets: public subnets give an internet-facing load balancer, and private subnets give an internal one. |
None. Derived from your subnets. |
|
|
The subnets to place the load balancer in. If you omit them, it uses the environment's subnets. |
None. The environment's subnets. |
A comma-separated list of subnet IDs |
|
The security groups to attach to the load balancer. |
None |
A comma-separated list of security group IDs |
|
Whether Elastic Beanstalk adds and removes the security group rules between the load balancer and your application. |
|
|
|
Whether the load balancer serves IPv4 only or both IPv4 and IPv6. Elastic Beanstalk
advertises no default and applies |
|
|
|
Whether the load balancer sends traffic to the replicas' IP addresses or to the
nodes that run them. Elastic Beanstalk advertises no default and applies |
|
|
|
The listeners to open, as a JSON array with one object per listener, such as
|
None. Elastic Beanstalk configures HTTPS on port 443. |
A JSON array of protocol-to-port objects |
|
The ARN of your own ACM certificate to attach to the HTTPS listeners, for example when you serve the environment from a custom domain. You don't need this option for HTTPS to work: Elastic Beanstalk creates and attaches a certificate for the environment's own domain either way. If you set it, the load balancer carries both certificates. |
None |
An ACM certificate ARN |
|
The security policy for the HTTPS listeners. |
None |
An Elastic Load Balancing security policy name |
|
Selects which HTTPS port Elastic Beanstalk redirects HTTP requests to. The value must be a port that a configured HTTPS listener uses. Elastic Beanstalk redirects requests that arrive on an HTTP listener whether or not you set this option, so it only changes the target port. |
None. Elastic Beanstalk redirects to your HTTPS listener's port. |
|
|
The protocol that the load balancer uses to reach your application. |
None |
|
|
The protocol version that the load balancer uses to reach your application.
Applies only when |
None |
|
|
The path that the target group health check requests. |
|
A URL path |
|
The protocol that the target group health check uses. |
|
|
|
How often the target group health check runs. |
|
|
|
How long the health check waits for a response. |
|
|
|
The HTTP status codes that count as a successful health check. |
|
A status code, a list, or a range |
|
How many consecutive successful checks make a target healthy. |
|
|
|
How many consecutive failed checks make a target unhealthy. |
|
|
|
The ARN of the Amazon WAF web ACL to associate with the load balancer. |
None |
An Amazon WAF web ACL ARN |
|
The tags to apply to the load balancer. |
None |
A JSON object of tag keys and values |
|
Load balancer attributes to apply to the load balancer, passed through to Elastic Load Balancing without interpretation. |
None |
A comma-separated list of |
|
Listener attributes to apply to a specific listener, passed through to Elastic Load Balancing without interpretation. Supply only listener attributes here, not load balancer attributes. |
None |
A JSON array of objects, each mapping a listener to a comma-separated list of
|
|
Annotations to apply directly to the Kubernetes ingress that Elastic Beanstalk generates for your environment. Use this for load balancer behavior that the other options in this namespace don't cover. |
None |
A JSON array of objects, each mapping an ingress annotation key to its value.
Each comma-separated segment of a value must contain exactly one
|
Note
load-balancer-attributes, listener-attributes, and
raw-annotation pass their values through to the load balancer without
interpreting them, so Elastic Beanstalk doesn't validate what an individual attribute or annotation means.
When you create an environment, an invalid value prevents the load balancer from being
created, so the failure is visible. When you update an environment, Elastic Beanstalk doesn't wait for the
load balancer to reconcile, so the operation can succeed before your change takes effect.
Confirm the change on the load balancer itself.
aws:elasticbeanstalk:eks:observability
Choose where your application's metrics, logs, and traces go. Elastic Beanstalk provisions and operates the collection components, and you are responsible for instrumenting your application and for access to any destination that you select. See Monitoring Beanstalk Cluster environments.
| Name | Description | Default | Valid values |
|---|---|---|---|
|
Where your application's metrics go. |
|
|
|
The Amazon Managed Service for Prometheus remote-write endpoint. Set it only
when |
None |
A remote-write endpoint URL |
|
Where your application's logs go. |
|
|
|
Where your application's traces go. Unlike metrics and logs, traces have no backend until you select one. |
None |
|
|
The OpenTelemetry collector pipeline configuration to use for the signals that
you set to |
None |
A collector pipeline configuration, as JSON |
|
The ARN of an Secrets Manager secret holding the credentials that the collector needs to
reach a |
None |
An Secrets Manager secret ARN |