Skip to content
GitHubXDiscord

LaunchConfiguration

The LaunchConfiguration resource lets you define an EC2 instance configuration used by Auto Scaling groups to launch instances. For more details, refer to the AWS AutoScaling LaunchConfigurations documentation.

Create a basic LaunchConfiguration with required properties and commonly used optional settings.

import AWS from "alchemy/aws/control";
const launchConfig = await AWS.AutoScaling.LaunchConfiguration("myLaunchConfig", {
imageId: "ami-0abcdef1234567890", // Replace with a valid AMI ID
instanceType: "t2.micro", // Select a suitable instance type
keyName: "myKeyPair", // Provide your key pair name for SSH access
securityGroups: ["sg-0123456789abcdef0"], // Use a valid security group ID
associatePublicIpAddress: true // Enable public IP assignment
});

Customize the LaunchConfiguration with additional options such as monitoring and EBS optimization.

const advancedLaunchConfig = await AWS.AutoScaling.LaunchConfiguration("advancedLaunchConfig", {
imageId: "ami-0abcdef1234567890",
instanceType: "t2.micro",
keyName: "myKeyPair",
securityGroups: ["sg-0123456789abcdef0"],
ebsOptimized: true, // Optimize EBS for better performance
instanceMonitoring: true, // Enable detailed monitoring
blockDeviceMappings: [{
deviceName: "/dev/sda1",
ebs: {
volumeSize: 20, // Set volume size in GB
deleteOnTermination: true // Delete the volume on instance termination
}
}]
});

Configure a LaunchConfiguration to launch Spot Instances with a specified maximum price.

const spotLaunchConfig = await AWS.AutoScaling.LaunchConfiguration("spotLaunchConfig", {
imageId: "ami-0abcdef1234567890",
instanceType: "t2.micro",
keyName: "myKeyPair",
securityGroups: ["sg-0123456789abcdef0"],
spotPrice: "0.03", // Set maximum price for the Spot Instance
instanceMonitoring: false // Disable detailed monitoring for cost saving
});

Provide a user data script to initialize the instance upon launch.

const userDataLaunchConfig = await AWS.AutoScaling.LaunchConfiguration("userDataLaunchConfig", {
imageId: "ami-0abcdef1234567890",
instanceType: "t2.micro",
keyName: "myKeyPair",
securityGroups: ["sg-0123456789abcdef0"],
userData: `#!/bin/bash
echo "Hello World" > /var/www/html/index.html
systemctl start httpd`
});