"""AWS S3 functions.""" import os from boto3.session import Session as boto3_session region = os.environ.get('AWS_REGION', 'us-east-1') def list_directory(bucket, prefix, s3=None, request_pays=False): """AWS s3 list directory.""" if not s3: session = boto3_session(region_name=region) s3 = session.client('s3') pag = s3.get_paginator('list_objects_v2') params = { 'Bucket': bucket, 'Prefix': prefix, 'Delimiter': '/'} if request_pays: params['RequestPayer'] = 'requester' directories = [] for subset in pag.paginate(**params): if 'CommonPrefixes' in subset.keys(): directories.extend(subset.get('CommonPrefixes')) return [r['Prefix'] for r in directories] def get_object(bucket, key, s3=None, request_pays=False): """AWS s3 get object content.""" if not s3: session = boto3_session(region_name=region) s3 = session.client('s3') params = { 'Bucket': bucket, 'Key': key} if request_pays: params['RequestPayer'] = 'requester' response = s3.get_object(**params) return response['Body'].read()