data engineering
python get autoscaling group ip list
qkqhxla1
2020. 3. 26. 23:55
https://stackoverflow.com/questions/47558854/boto3-to-pull-all-ec2-instances-from-a-given-asg
나중에 보기 위해 코드 저장해둠. 오토 스케일링 그룹 내의 인스턴스 하나하나로 ssh로 들어가야 할 경우가 많은데 오토 스케일링 그룹 내의 인스턴스가 좀 많으면 aws콘솔에서는 하나하나 확인하기가 너무 짜증난다.
다시 들어가서 로딩되는데 시간도 오래걸리고.. 그래서 ip리스트를 받아오는 코드가 있으면 매우 쉽게 해당 ip로 들어갈수 있는 ssh프로그램을 짤 수 있다.
# -*- coding: utf-8 -*- import boto3 class AwsManager: def __init__(self): self.access_key = aws access key self.secret_access_key = aws secret key self.region = 'ap-northeast-2' def get_asg_instance_id_list(self, asg_group): asg_client = boto3.client('autoscaling', verify=False, aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_access_key, region_name=self.region) asg_response = asg_client.describe_auto_scaling_groups(AutoScalingGroupNames=[asg_group]) instance_ids = [] # List to hold the instance-ids for i in asg_response['AutoScalingGroups']: for k in i['Instances']: instance_ids.append(k['InstanceId']) return instance_ids def get_instance_ip_from_id(self, instance_ids): ec2_client = boto3.client('ec2', verify=False, aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_access_key, region_name=self.region) ec2_response = ec2_client.describe_instances(InstanceIds=instance_ids) private_ip = [] # List to hold the Private IP Address for instances in ec2_response['Reservations']: for ip in instances['Instances']: private_ip.append(ip['PrivateIpAddress']) return private_ip if __name__ == '__main__': awsmanager = AwsManager() asg_group_name = 오토 스케일링 그룹 이름 instance_id_list = awsmanager.get_asg_instance_id_list(asg_group_name) ip_list = awsmanager.get_instance_ip_from_id(instance_id_list) print ip_list