AWS Amazon EC2 Auto Scaling Configuration
This page shows how to write Terraform and CloudFormation for Amazon EC2 Auto Scaling Configuration and write them securely.
aws_launch_configuration (Terraform)
The Configuration in Amazon EC2 Auto Scaling can be configured in Terraform with the resource name aws_launch_configuration
. The following sections describe 1 example of how to use the resource and its parameters.
Example Usage from GitHub
resource "aws_launch_configuration" "ngx_plus" {
name = "ngx-plus"
image_id = data.aws_ami.ngx_plus.id
instance_type = var.machine_type
key_name = var.key_name
security_groups = [
Security Best Practices for aws_launch_configuration
There are 2 settings in aws_launch_configuration that should be taken care of for security reasons. The following section explain an overview and example code.
Check public IPs should be given to Auto Scaling instances
It is better to block public access on the Internet to them. It is better to avoid associating public IP addresses if this is unintentional.
Ensure to enable at rest encryption of Auto Scaling
It is better to enable at rest encryption of Auto Scaling. Device encryption reduces the risk of data leakage.
Parameters
-
arn
optional computed - string -
associate_public_ip_address
optional - bool -
ebs_optimized
optional computed - bool -
enable_monitoring
optional - bool -
iam_instance_profile
optional - string -
id
optional computed - string -
image_id
required - string -
instance_type
required - string -
key_name
optional computed - string -
name
optional computed - string -
name_prefix
optional - string -
placement_tenancy
optional - string -
security_groups
optional - set of string -
spot_price
optional - string -
user_data
optional - string -
user_data_base64
optional - string -
vpc_classic_link_id
optional - string -
vpc_classic_link_security_groups
optional - set of string -
ebs_block_device
set block-
delete_on_termination
optional - bool -
device_name
required - string -
encrypted
optional computed - bool -
iops
optional computed - number -
no_device
optional - bool -
snapshot_id
optional computed - string -
volume_size
optional computed - number -
volume_type
optional computed - string
-
-
ephemeral_block_device
set block-
device_name
required - string -
virtual_name
required - string
-
-
metadata_options
list block-
http_endpoint
optional computed - string -
http_put_response_hop_limit
optional computed - number -
http_tokens
optional computed - string
-
-
root_block_device
list block-
delete_on_termination
optional - bool -
encrypted
optional computed - bool -
iops
optional computed - number -
volume_size
optional computed - number -
volume_type
optional computed - string
-
Explanation in Terraform Registry
Provides a resource to create a new launch configuration, used for autoscaling groups.
AWS::AutoScaling::LaunchConfiguration (CloudFormation)
The LaunchConfiguration in AutoScaling can be configured in CloudFormation with the resource name AWS::AutoScaling::LaunchConfiguration
. The following sections describe how to use the resource and its parameters.
Example Usage from GitHub
An example could not be found in GitHub.
Parameters
-
AssociatePublicIpAddress
optional - Boolean -
BlockDeviceMappings
optional - List of BlockDeviceMapping -
ClassicLinkVPCId
optional - String -
ClassicLinkVPCSecurityGroups
optional - List -
EbsOptimized
optional - Boolean -
IamInstanceProfile
optional - String -
ImageId
required - String -
InstanceId
optional - String -
InstanceMonitoring
optional - Boolean -
InstanceType
required - String -
KernelId
optional - String -
KeyName
optional - String -
LaunchConfigurationName
optional - String -
MetadataOptions
optional - MetadataOptions -
PlacementTenancy
optional - String -
RamDiskId
optional - String -
SecurityGroups
optional - List -
SpotPrice
optional - String -
UserData
optional - String
Explanation in CloudFormation Registry
The
AWS::AutoScaling::LaunchConfiguration
resource specifies the launch configuration that can be used by an Auto Scaling group to configure Amazon EC2 instances. When you update the launch configuration for an Auto Scaling group, CloudFormation deletes that resource and creates a new launch configuration with the updated properties and a new name. Existing instances are not affected. To update existing instances when you update theAWS::AutoScaling::LaunchConfiguration
resource, you can specify an UpdatePolicy attribute for the group. You can find sample update policies for rolling updates in Auto scaling template snippets. For more information, see CreateLaunchConfiguration in the Amazon EC2 Auto Scaling API Reference and Launch configurations in the Amazon EC2 Auto Scaling User Guide.Note To configure Amazon EC2 instances launched as part of the Auto Scaling group, you can specify a launch template or a launch configuration. We recommend that you use a launch template to make sure that you can use the latest features of Amazon EC2, such as Dedicated Hosts and T2 Unlimited instances. For more information, see Creating a launch template for an Auto Scaling group.
Frequently asked questions
What is AWS Amazon EC2 Auto Scaling Configuration?
AWS Amazon EC2 Auto Scaling Configuration is a resource for Amazon EC2 Auto Scaling of Amazon Web Service. Settings can be wrote in Terraform and CloudFormation.
Where can I find the example code for the AWS Amazon EC2 Auto Scaling Configuration?
For Terraform, the jpouyaud-perso/aws-nlb-ha-sni-routing-asg source code example is useful. See the Terraform Example section for further details.