import boto3 from boto3.s3.transfer import TransferConfig from smart_open import open client = boto3.client('s3') source = './spotify_2019-08-22_sony_v2.2_us_streams.ndjson' # dest = 's3://dev-sme-data-archive/spotify/streams/v2/report_date=2018-08-29/report_licensor=smejp/streams_20180829_JP.gz' dest = 's3://dev-sme-data-archive/spotify/streams_20180829_JP.gz' bucket, *tail = dest.strip("s3://").split('/', 1) key = tail[0] # chunk_size = 8388608 # 8*1024*1024 chunk_size = 80 * 1024 * 1024 config = TransferConfig(max_concurrency=1, use_threads=True) response = client.upload_file(source, bucket, key, Config=config)