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
'data engineering' 카테고리의 다른 글
How to get temporary credential from ec2 iam role (0) | 2020.04.24 |
---|---|
데이터 직군 관련 블로그. (0) | 2020.04.22 |
fluentd와 elasticsearch, kibana(EFK)를 이용한 haproxy 로그 시각화 (0) | 2020.02.27 |
aws route53 ~ 쿠버네티스 ingress 흐름관련 (0) | 2020.02.22 |
rancher kubernetes kibana + elasticsearch 설치 삽질 정리. (0) | 2020.02.18 |