#!/bin/python import boto3 from pprint import pprint, pformat import json import sys import argparse import logging def check_missing_tags(tags, mandatory_tag_keys=['platform','environment','project','service','plat_env_project_service']): mandatory_tag_keys_set = set(mandatory_tag_keys) tag_keys_set = set(tags.keys()) missing_tags = mandatory_tag_keys_set - tag_keys_set if missing_tags: return list(missing_tags) else: return [] def convert_tags_to_aws_format(tags): aws_tags = [] for key, value in tags.items(): aws_tags.append( { 'Key': key, 'Value': value } ) return aws_tags def convert_tags_from_aws_format(aws_tags): tags = {} for tag in aws_tags: tags[tag['Key']] = tag['Value'] return tags def filter_only_missing_tags(tags, missing_tag_keys): return { key: tags[key] for key in missing_tag_keys } # Paginator is for weak def get_aws_objects(api_operation,objects_identifier, next_token='NextToken'): response = api_operation() objects = response[objects_identifier] while next_token in response: response = api_operation(NextToken=response[next_token]) objects += response[objects_identifier] return objects