Skip to content

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.

Minimal Example

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

ts
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
});

Advanced Configuration

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

ts
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
    }
  }]
});

Spot Instance Configuration

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

ts
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
});

Custom User Data

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

ts
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`
});