Tuning the AWS CLI
Parquet files reach 256 MB, and a large table’s partition passes 500 MB. The CLI default of 10 concurrent requests leaves bandwidth on the table.~/.aws/config
We measured this by downloading a single 74 MB Parquet file from a
us-east-1 bucket to a machine outside AWS, varying only concurrency:
In other words: roughly a 50% gain from tripling concurrency, in a scenario bound by AWS egress latency. Inside AWS, in the same region, the curve climbs further. Measure in your own environment — the number that matters is yours.
If you run on a high-network EC2 instance, the CRT client might be worth testing:
~/.aws/config
TransferConfig, covered in Download with boto3.
And the reminder everyone needs exactly once: run the download in the same region as the bucket (us-east-1). Cross-region transfer is slower, and a job in sa-east-1 pulling from us-east-1 explains a lot of mysterious slowness.
Best practices
Three habits that make your life easier and your integration more predictable:- Filter by partition instead of syncing the entire bucket on every run. An incremental
syncalready does this naturally;cp --recursivedoesn’t, and will re-download everything, every time. - Use
Bulkas your default restore tier, andExpeditedonly when there’s real urgency. - Contact your Cloud Humans account team before a large historical reprocessing — restoring months of data or downloading the entire bucket. This isn’t about asking permission, it’s so we can help: above a few hundred objects, the efficient path is S3 Batch Operations, and that runs on our side.