-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathas_vol_tagger.py
49 lines (40 loc) · 1.17 KB
/
as_vol_tagger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import boto3
import logging
logger = logging.getLogger('tagger')
logger.setLevel(logging.INFO)
logging.basicConfig()
def lambda_handler(event, context):
try:
instance_id = get_instance_id(event)
copy_tags_to_volumes(instance_id)
except Exception as e:
logger.error('Something went wrong: ' + str(e))
return False
def get_instance_id(event_json):
return event_json['detail']['EC2InstanceId']
def tag_key_exists(tag,tags):
if tags:
if tag in tags:
return True
return False
def tag_valid(tag):
if tag['Key'].startswith('aws'):
return False
return True
def copy_tags_to_volumes(instance_id):
ec2 = boto3.resource('ec2')
instance = ec2.Instance(instance_id)
instance_tags = instance.tags
volumes = instance.volumes.all()
for volume in volumes:
for instance_tag in instance_tags:
if tag_valid(instance_tag):
if not tag_key_exists(instance_tag,volume.tags):
logger.info('Adding tag: ' + str(instance_tag))
volume.create_tags(Tags=[instance_tag])
else:
logger.info('Tag key already exists: ' + str(instance_tag))
else:
logger.info('Tag invalid: ' + str(instance_tag))
if __name__ == '__main__':
copy_tags_to_volumes('i-051d774324ff797a9')