# Boto3 로 AWS EC2에 태그 추가하기

bhs9610·2020년 10월 9일
0

파이떤 보또뜨리

목록 보기
1/3

boto3 로 EC2에 쉽게 태그를 추가할수 있어서 콘솔가서 일일이 달아주기 귀찮으니 파이썬으로 해봅시다

목적

수백개에 EC2에 태그를 다 달아야한다.. 콘솔이나 CLI 로 하면 하루종일 걸릴거 같으니 boto3 를 사용해 한번에 달게 해보자! 코드는 aws ec2 describe-instances 라고 쳐서 나오는 json 을 보면서 만들었다

import boto3

ec2_client = boto3.client('ec2', region_name = 'ap-northeast-2')
response = ec2_client.describe_instances()
instances = response['Reservations']
instance_ids = []

for instance in instances:
    instance_ids.append(instance['Instances'][0]['InstanceId'])

tage_creation = ec2_client.create_tags(

        Resources =
            instance_ids,
        Tags = [
            {
                'Key' : 'Changman',
                'Value' : 'hi',
                'Key' : 'Operation',
                'Value' : 'Start',
                'Key' : 'Name',
                'Value' : 'CHANG',
            }
            ]
        )

print(instances)

aws cli 를 사용해 ID 와 KEY 를 등록했기 때문에 소스파일에 정의 할 필요가 없었다 (region 에러가 나와서 region_name만 등록해놨습니다)

간략한 코드설명

desribe_instances()

인스턴스 이름을 나열하는 메서드가 없기 때문에 위 함수로 모든 인스턴스 정보를 가져온다 우리가 필요한건 InstacneId 이다.

instance_ids.append(instance['Instances'][0]['InstanceId'])

이제 for 루프문을 돌리면서 인스턴스 아이디 하나하나 태그를 붙여줄거다 그러기 위해선 목록에 있는 인스턴스 아이디를 빼와서 빈 리스트에 넣어줄거다 아래와 같은 JSON 형식을 받는다

"Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-044057cb1bc4ce527",
                    "InstanceId": "i-08a03f733f9b33849",
                    "InstanceType": "m4.xlarge",
                    "KeyName": "changman",
                    "LaunchTime": "2020-10-09T10:18:46.000Z",
                    "Monitoring": {
                        "State": "disabled"
..............
.........
........

tage_creation = ec2_client.create_tags(

이제 Instance ID 만 빼온 리스트 전체에다가 태그를 붙여준다 아래는 실행결과이다.

다음에는,

다음에는 모든 EC2말고 조건문을 추가해서 특정 이름이나 인스턴스 ID 에다가만 태그를 붙여보도록 해봐야겠다

profile
@changhyuni

0개의 댓글