in Lambda/TagOnRestore/src/TagOnRestore.py [0:0]
def get_resource_tags(self,resource_type,resource_id,resource_arn):
"""
Helper function to get Tags for a given resource detail
"""
logger.info(f"Getting resoruce tags for type : {resource_type} with Id : {resource_id} under ARN : {resource_arn}")
if resource_type == 'dynamodb':
dynamo = boto3.client('dynamodb')
# bot3 API /services/dynamodb.html#DynamoDB.Client.list_tags_of_resource
resource_tag_list = dynamo.list_tags_of_resource(ResourceArn=resource_arn)
logger.info(f'dynamodb resource_tag_list : {resource_tag_list}')
elif resource_type in ('ec2', 'ebs'):
# Extract resource tag from the resource Arn
# bot3 API services/ec2.html#EC2.Client.describe_tags
ec2 = boto3.client('ec2')
resource_tag_list = ec2.describe_tags(
Filters=[
{
'Name': 'resource-id',
'Values': [
resource_id
]
},
],
)
logger.info(f'ec2 resource_tag_list : {resource_tag_list}')
elif resource_type in ('rds', 'aurora'):
rds = boto3.client('rds')
# bot3 API services/rds.html#RDS.Client.list_tags_for_resource
resource_tag_list = rds.list_tags_for_resource(ResourceName=resource_id)
# Return is different from other resources. Unify the section
resource_tag_list['Tags'] = resource_tag_list.pop('TagList')
elif resource_type == 'fsx':
fsx = boto3.client('fsx')
# boto3 API /services/fsx.html#FSx.Client.list_tags_for_resource
resource_tag_list = fsx.list_tags_for_resource(ResourceARN=resource_arn)
logger.info(f'fsx resource_tag_list : {resource_tag_list}')
elif resource_type == 'storagegateway':
storagegateway = boto3.client('storagegateway')
# boto3 API /services/storagegateway.html#StorageGateway.Client.list_tags_for_resource
resource_tag_list = storagegateway.list_tags_for_resource(ResourceARN=resource_arn)
elif resource_type in ('elasticfilesystem', 'efs'):
efs_client = boto3.client('efs')
resource_tag_list = efs_client.list_tags_for_resource(ResourceId=resource_id)
else:
logger.info(f"{resource_type} Not Supported Yet, Fetchable from backup")
return resource_tag_list