import csv import io import boto3 from config import config client = boto3.client('s3') def get_file_list(bucket, prefix): result = client.list_objects(Bucket=bucket, Prefix=prefix, Delimiter='/') file_list = [] if not result or not result.get('Contents'): return file_list for file in result.get('Contents'): file_list.append(file['Key']) return file_list def get_file_content(bucket, key, log): try: data = client.get_object(Bucket=bucket, Key=key) contents = data['Body'].read().decode("utf-8") buffer = io.StringIO(contents) reader = csv.DictReader(buffer) rows = list(reader) return rows except Exception as err: # dont let a single file failure cause whole script to fail. log.error(f'Failed to read file: {key} due to {err}.') return []