How to Transfer Files from AWS S3 to Azure Blob Storage
· 6 min read · Updated

AWS S3 and Azure Blob Storage are the two most popular object storage services in the world. Companies move data between them to switch primary cloud vendors, set up multi-cloud redundancy, meet compliance requirements, or take advantage of Azure's pricing for certain workloads.
The transfer itself is the hard part. Each provider has its own tools (AWS DataSync, Azure Data Box, AzCopy), built mainly around its own cloud. AzCopy can copy from S3 to Azure server to server, with the naming, metadata and authentication limits covered in AzCopy S3 to Azure: How It Works and the Limits to Check. Other cross-cloud routes usually mean intermediate steps, scripting, or a third-party managed service that charges per GB.
You can download from S3 using the AWS CLI and upload to Azure using AzCopy. This requires local disk space for the intermediate files, separate authentication for each tool, and scripting to coordinate the two.
Services like Flexify charge per GiB transferred, and for large migrations (10 TB+) the fees add up. Your data also routes through their infrastructure, which may not meet compliance requirements.
rclone supports both S3 and Azure Blob. It works, but you need to configure both remotes, handle multipart upload settings, and manage the transfer from the command line.
Blober connects to AWS S3 and Azure Blob Storage natively. You add each provider with its credentials, create a workflow, and run it. Files stream from S3 through your computer to Azure without being stored on your disk along the way.
Parallel uploads to Azure. Large files upload in several parts at the same time, which makes a noticeable difference on fast connections.
Azure tier selection. When you set up Azure as the destination, you choose the storage tier for new blobs: Hot, Cool, Cold, or Archive. You can migrate straight to the tier that matches your access pattern, with no second step to change tiers after upload.
Deduplication options. Blober can skip blobs that already exist at the destination, or overwrite them. Skipping helps with incremental migrations where you want to resume without re-transferring what is already there. The check compares names, not contents, so a changed object whose name already exists at the destination is skipped too; choose Overwrite the existing file if you need it copied again. Archived blobs are always skipped, because they cannot be rewritten.
- Connect AWS S3 with your Access Key ID and Secret Access Key. Blober lists your buckets.
- Connect Azure Blob Storage with your connection string. Blober verifies it and lists your containers.
- Create a workflow with S3 as the source and Azure Blob as the destination, then browse and select files or entire buckets.
- Pick the Storage Tier and the Deduplication policy in the Azure destination settings.
- Run the workflow and follow its progress. If you stop and run it again later, skip-existing avoids resending blobs that are already in Azure.
Most S3-to-Azure jobs move whole buckets or whole prefixes, and Blober is built for that:
- Browse your S3 bucket in Blober, select everything at the top level or drill into a prefix, and queue it all in one workflow. You don't list keys by hand or script a loop.
- With Deduplication set to Skip if a file with the same name exists, an interrupted multi-terabyte run, or one you stop and continue tomorrow, picks up only what has not transferred yet when you run the workflow again. You never have to start the whole job over.
- You pick the Azure tier once for the whole job, so a bulk archive migration writes straight to Cool, Cold, or Archive instead of going to Hot first and needing a second pass.
For a move of 5 TB across 200,000 objects from us-east-1 to westeurope, you point Blober at the bucket, choose the destination container and tier, keep skip-existing on, and let it run. Progress is tracked per file, and rerunning the workflow after an interruption skips blobs that already completed.
If your S3 bucket is in us-east-1 and your Azure storage account is in westeurope, Blober handles the cross-region transfer. S3's cross-region copy limitations, which affect native S3-to-S3 copies, do not apply here because the data flows through your machine.
That also means transfer speed depends on your internet connection. For very large migrations (50 TB+), this is usually slower than a datacenter-to-datacenter transfer. For gigabytes up to a few terabytes, running the move through Blober on a fast connection can be simpler than coordinating a managed migration service.
Price an S3-to-Azure move in three parts:
- On the AWS side: data transfer out, source reads, and any retrieval fees if the source objects are in an infrequent-access or archive class[1].
- On the Azure side: Blob Storage usually does not charge for inbound data transfer, while new writes, the storage tier, redundancy, and operations are all billed[2].
- Later Azure egress: if the data leaves Azure in future, outbound bandwidth is priced separately by route, zone, and volume[3].
Azure can be cheaper for some storage-heavy workloads, while S3 can be better when the surrounding AWS ecosystem matters. The right choice depends on access pattern, region, redundancy, tier, request volume, and where the data will go next.
How do I copy data from S3 to Azure Blob without AzCopy or scripts? Connect both providers in Blober, create a workflow with S3 as the source and Azure Blob as the destination, select your buckets, and run it. You don't write an AzCopy command or an AWS CLI loop, and nothing is saved to your disk on the way: files stream from S3 through your computer to Azure.
Can I migrate a whole bucket, or only individual files? Either. Select a single object, a prefix, or an entire bucket. Whole buckets are the common case.
Is the data stored on the tier I want? Yes. You choose the Azure access tier (Hot, Cool, Cold, or Archive) for the destination, and new blobs are written to that tier on arrival, so nothing needs re-tiering after the upload.
Who pays for the data transfer? AWS charges egress (data transfer out) when data leaves S3, billed per GB. Azure lists data transfer in as free, while outbound bandwidth is priced separately[4]. So the transfer cost usually sits on the AWS side, the same as it would with any tool that reads from S3. Blober adds no per-GB fee of its own.
How large a migration can this handle? Transfers run through your machine, so speed depends on your connection. For moderate migrations, Blober avoids managed-service setup and can be rerun with skip-existing if interrupted. For datacenter-scale moves of 50 TB and up, a provider appliance or assisted migration may finish sooner.
- Azure Blob Tiers vs AWS S3 Storage Classes for choosing the right destination tier
- How to Bulk Change Azure Blob Storage Access Tiers once your data is on Azure
- How to Move Azure Blob to Cloudflare R2 for moving off Azure later
- Provider setup: AWS S3 and Azure Blob