"""Utils for AWS services.""" from urllib.parse import urlsplit def parse_arn(arn): """Parse ARN string and return dict with its components.""" # http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html elements = arn.split(':', 5) result = { 'arn': elements[0], 'partition': elements[1], 'service': elements[2], 'region': elements[3], 'account': elements[4], 'resource': elements[5], 'resource_type': None } if '/' in result['resource']: split_by = '/' elif ':' in result['resource']: split_by = ':' else: split_by = None if split_by: result['resource_type'], result['resource'] = ( result['resource'].split(split_by, 1)) return result def split_s3_path(s3_path): """ Split s3 path into bucket and key. :param s3_path: :return: tuple (bucket, key) """ components = urlsplit(s3_path) bucket = components.netloc key = components.path.lstrip('/') return bucket, key