Is there a way to find out if a EC2 instance is associated with Auto scaling group

Viewed 1000

Is there a way to find out if an EC2 instance is associated with Auto Scaling Group?

4 Answers

You can use the describe-auto-scaling-instances function to check which autoscaling group the instance is attached to.

So for example for instance id i-4ba0837f you could run the following command

aws autoscaling describe-auto-scaling-instances --instance-ids i-4ba0837f

Example response if attached to an autoscaling group is below

{
    "AutoScalingInstances": [
        {
            "ProtectedFromScaleIn": false,
            "AvailabilityZone": "us-west-2c",
            "InstanceId": "i-4ba0837f",
            "AutoScalingGroupName": "my-auto-scaling-group",
            "HealthStatus": "HEALTHY",
            "LifecycleState": "InService",
            "LaunchConfigurationName": "my-launch-config"
        }
    ]
}

However if it is not attached to any this will be an empty list.

{
    "AutoScalingInstances": []
}

If this returns no results then that instance is not part of an autoscaling group.

This will also be available in the SDKs:

You can also look at the instance tags to find out whether it belongs to an ASG. An EC2 in an ASG will always have the aws:autoscaling:groupName tag.

You may use describe-auto-scaling-instances

aws autoscaling describe-auto-scaling-instances --instance-ids your-instance-id

It will print something like this, if exists

{
  "AutoScalingInstances": [
    {
      "InstanceId": "some-instance-id",
      "InstanceType": "m4.large",
      "AutoScalingGroupName": "awseb-some-name",
      "AvailabilityZone": "eu-west-1c",
      "LifecycleState": "InService",
      "HealthStatus": "HEALTHY",
      "LaunchTemplate": {
        "LaunchTemplateId": "lt-04a2fffdesa",
        "LaunchTemplateName": "AWSEBEC2LaunchTemplate_foobar",
        "Version": "2"
      },
      "ProtectedFromScaleIn": false
    }
  ]
}

if not

{
  "AutoScalingInstances": []
}
Related