def get_resource_tags()

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