""" script for ticket https://data-analytics.atlassian.net/browse/DBKL-3 To run: 1. python3.7 -m venv venv && . venv/bin/activate && pip install boto3 2. python move_files.py dev/qa/stage/prod ( python move_files.py dev ) """ import logging import sys import boto3 def run(): logging.basicConfig(format='[COPY_FILES] %(levelname)s:%(message)s', level=logging.INFO) logging.info("Start script execution") env = sys.argv[1] if env == "prod": dest_bucket = "sme-data-archive" else: dest_bucket = f"{env}-sme-data-archive" bucket_source = "provider-api-export-sony" logging.info(f"Copy files to {dest_bucket}") s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') paginator = s3_client.get_paginator('list_objects_v2') params = { "Bucket": bucket_source, "Prefix": "sonybmgmusicentertainmentv2/streams" } page_iterator = paginator.paginate(**params) for page in page_iterator: keys = page.get('Contents', []) for key in keys: k = key['Key'] logging.info(f"Processing key {k}") *_, year, month, day, fname = k.split('/') new_key = f"spotify/streams/v2/report_date={year}-{month}-{day}/report_licensor=sme/{fname}" logging.info(f"Copy {k} to {new_key}") s3_resource.meta.client.copy( {'Bucket': bucket_source, 'Key': k}, dest_bucket, new_key ) logging.info("Finish script execution") if __name__ == '__main__': run()