Sign in

Filter ASGs: Identify ASGs that are associated with a Launch Configuration

There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.

This task involves identifying which ASGs are configured to use launch configurations as their instance management template. This is crucial for assessing the deployment strategy, as launch configurations are immutable and often need to be replaced with updated configurations or migrated to the more flexible launch templates. This helps in managing instance configurations and scaling policies efficiently.

import boto3 from botocore.exceptions import ClientError # Load AWS credentials from a secure source creds = _get_creds(cred_label)['creds'] access_key = creds['username'] secret_key = creds['password'] def filter_asgs_with_launch_configs(asg_list): """ Filter ASGs that are associated with a Launch Configuration. :param asg_list: List of ASGs fetched from an upstream task. :return: Filtered list of ASGs with Launch Configurations. """ asg_details = [] for asg in asg_list: if 'LaunchConfigurationName' in asg: asg_details.append({ 'AutoScalingGroupName': asg['AutoScalingGroupName'], 'LaunchConfigurationName': asg['LaunchConfigurationName'], 'Region': asg['Region'] }) return asg_details def display_asg_details(data): """ Display details of ASGs in a structured table format. :param data: List of filtered ASGs. """ if not data: print("No Auto Scaling Groups with Launch Configurations found.") return # Assuming 'context.newtable' creates a new table context in your environment table = context.newtable() table.title = "ASG with Launch Configurations" table.num_cols = 3 table.num_rows = 1 table.has_header_row = True # Define header names headers = ["AutoScalingGroupName", "LaunchConfigurationName", "Region"] for col_num, header in enumerate(headers): table.setval(0, col_num, header) # Populate the table with ASG data for row_num, asg in enumerate(data, start=1): table.num_rows += 1 values = [ asg["AutoScalingGroupName"], asg["LaunchConfigurationName"], asg["Region"] ] for col_num, value in enumerate(values): table.setval(row_num, col_num, value) # Filtering ASGs with Launch Configurations filtered_asgs = filter_asgs_with_launch_configs(asg_list) display_asg_details(filtered_asgs) context.skip_sub_tasks = True
copied
  1. 1

    Delete AWS EC2 Auto Scaling Groups (ASGs)

    There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.

    This task involves removing specified ASGs from the AWS environment. This operation is critical for cleaning up unused or unnecessary resources, managing costs, or decommissioning services.

    import boto3 from botocore.exceptions import ClientError creds = _get_creds(cred_label)['creds'] access_key = creds['username'] secret_key = creds['password'] def delete_auto_scaling_groups(filtered_asgs): """ Deletes a list of auto scaling groups provided in filtered_asgs. Each ASG dict must contain 'AutoScalingGroupName' and 'Region'. """ for asg in filtered_asgs: region = asg['Region'] asg_name = asg['AutoScalingGroupName'] try: # Initialize the boto3 client for AutoScaling in the specified region client = boto3.client('autoscaling', aws_access_key_id=access_key,aws_secret_access_key=secret_key,region_name=region) # Delete the Auto Scaling group client.delete_auto_scaling_group(AutoScalingGroupName=asg_name, ForceDelete=True) print(f"Successfully requested deletion of ASG: {asg_name} in {region}") except ClientError as e: print(f"Failed to delete ASG: {asg_name} in {region}. Error: {e}") # Example filtered_asgs list #filtered_asgs = [{"AutoScalingGroupName":"test1-asg","AutoScalingGroupARN":"arn:aws:autoscaling:us-east-1:188379622596:autoScalingGroup:4f564e69-b9f3-4d3f-8cfc-5ee7468f1396:autoScalingGroupName/test1-asg","MixedInstancesPolicy":{"LaunchTemplate":{"LaunchTemplateSpecification":{"LaunchTemplateId":"lt-0b4e1233a5006c59b","LaunchTemplateName":"test1-asg-template","Version":"$Default"},"Overrides":[{"InstanceType":"t3.micro"},{"InstanceType":"t3a.micro"}]},"InstancesDistribution":{"OnDemandAllocationStrategy":"prioritized","OnDemandBaseCapacity":0,"OnDemandPercentageAboveBaseCapacity":0,"SpotAllocationStrategy":"price-capacity-optimized"}},"MinSize":0,"MaxSize":0,"DesiredCapacity":0,"DefaultCooldown":300,"AvailabilityZones":["us-east-1a","us-east-1b","us-east-1c"],"LoadBalancerNames":[],"TargetGroupARNs":[],"HealthCheckType":"EC2","HealthCheckGracePeriod":300,"Instances":[],"CreatedTime":"2024-05-27 10:49:04","SuspendedProcesses":[],"VPCZoneIdentifier":"subnet-b8482599,subnet-26325179,subnet-836e58ce","EnabledMetrics":[],"Tags":[],"TerminationPolicies":["Default"],"NewInstancesProtectedFromScaleIn":false,"ServiceLinkedRoleARN":"arn:aws:iam::188379622596:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling","CapacityRebalance":true,"TrafficSources":[],"Region":"us-east-1"}] # Deleting ASGs delete_auto_scaling_groups(filtered_asgs)
    copied
    1