Configuring Amazon EC2 instances using the AWS CLI
Use the AWS Command Line Interface (AWS CLI) to create and configure Elastic Beanstalk environments using commands in your command-line shell. This section provides examples of the create-environment and update-environment commands.
The first two examples creates a new environment. The command specifies an Amazon EC2 instances type, t4g.small, that's based on arm64 processor
architecture. Elastic Beanstalk defaults the Image ID (AMI) for the EC2 instances based on the Region, platform version and instance type. The instance type
corresponds to a processor architecture. The solution-stack-name
parameter applies to platform version.
Example 1 — create a new arm64 based environment (namespace options inline)
aws elasticbeanstalk create-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"
\ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
\ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small
As an alternative, use an options.json
file to specify the namespace options instead of including them inline.
Example 2 — create a new arm64 based environment (namespace options in options.json
file)
aws elasticbeanstalk create-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"
\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t4g.small" } ]
The next two examples update the configuration for an existing environment with the update-environment command. In this example we're adding another instance type that's also based on arm64 processor architecture. For existing environments, all instance types that are added must have the same processor architecture. If you want to replace the existing instance types with those from a different architecture, you can do so. But make sure that all of the instance types in the command have the same type of architecture.
Example 3 — update an existing arm64 based environment (namespace options inline)
aws elasticbeanstalk update-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"
\ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
\ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small,t4g.micro
As an alternative, use an options.json
file to specify the namespace options instead of including them inline.
Example 4 — update an existing arm64 based environment (namespace options in options.json
file)
aws elasticbeanstalk update-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"
\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t4g.small, t4g.micro" } ]
The next two examples show more create-environment commands. These examples don't provide values for InstanceTypes
. When InstanceTypes
values aren't
specified, Elastic Beanstalk defaults to x86 based processor architecture. The Image ID (AMI) for the environment's EC2 instances will default according to the
Region, platform version and defaulted instance type. The instance type corresponds to a processor architecture.
Example 5 — create a new x86 based environment (namespace options inline)
aws elasticbeanstalk create-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"
\ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
As an alternative, use an options.json
file to specify the namespace options instead of including them inline.
Example 6 — create a new x86 based environment (namespace options in options.json
file)
aws elasticbeanstalk create-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"
\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" } ]