diff --git a/upup/pkg/fi/cloudup/awsup/aws_cloud.go b/upup/pkg/fi/cloudup/awsup/aws_cloud.go index 226e85f44f..5ddd6efd23 100644 --- a/upup/pkg/fi/cloudup/awsup/aws_cloud.go +++ b/upup/pkg/fi/cloudup/awsup/aws_cloud.go @@ -350,6 +350,7 @@ func deleteGroup(c AWSCloud, g *cloudinstances.CloudInstanceGroup) error { name := aws.StringValue(asg.AutoScalingGroupName) template := aws.StringValue(asg.LaunchConfigurationName) + launchTemplate := aws.StringValue(asg.LaunchTemplate.LaunchTemplateName) // Delete ASG { @@ -365,14 +366,29 @@ func deleteGroup(c AWSCloud, g *cloudinstances.CloudInstanceGroup) error { } // Delete LaunchConfig - { - klog.V(2).Infof("Deleting autoscaling launch configuration %q", template) - request := &autoscaling.DeleteLaunchConfigurationInput{ - LaunchConfigurationName: aws.String(template), + if launchTemplate != "" { + // Delete launchTemplate + { + klog.V(2).Infof("Deleting autoscaling launch template %q", launchTemplate) + req := &ec2.DeleteLaunchTemplateInput{ + LaunchTemplateName: aws.String(launchTemplate), + } + _, err := c.EC2().DeleteLaunchTemplate(req) + if err != nil { + return fmt.Errorf("error deleting autoscaling launch template %q: %v", launchTemplate, err) + } } - _, err := c.Autoscaling().DeleteLaunchConfiguration(request) - if err != nil { - return fmt.Errorf("error deleting autoscaling launch configuration %q: %v", template, err) + } else if template != "" { + // Delete LaunchConfig + { + klog.V(2).Infof("Deleting autoscaling launch configuration %q", template) + request := &autoscaling.DeleteLaunchConfigurationInput{ + LaunchConfigurationName: aws.String(template), + } + _, err := c.Autoscaling().DeleteLaunchConfiguration(request) + if err != nil { + return fmt.Errorf("error deleting autoscaling launch configuration %q: %v", template, err) + } } }