Skip to content

AzCopy S3 to Azure: How It Works and the Limits to Check

· 3 min read · Updated

How AzCopy copies AWS S3 data to Azure and where its limits are

AzCopy copies S3 data server to server

AzCopy's documented AWS S3 transfer uses Azure's Put Block From URL operation. AWS S3 and Azure Storage exchange the object data without using your computer's network bandwidth.[1]

For teams comfortable with a command line, that makes AzCopy a strong option. It can copy one object, a directory, a bucket, or wider groups of AWS buckets.

Server-to-server copying settles the data route. You still have to plan names, metadata, authentication, and the destination tier.

Authentication is different on each side

The Azure side can use Microsoft Entra ID or a SAS token. The documented AWS flow uses an AWS access key and secret access key supplied through environment variables.

Keep those credentials out of shell history, scripts, logs, and CI output, and use the narrowest permissions that cover the source and destination.

Bucket names may change

AWS S3 bucket names and Azure container names allow different characters. AzCopy rewrites names that Azure cannot accept.

Periods can become hyphens, and consecutive hyphens can be rewritten too. Two different S3 bucket names can therefore map to the same Azure container name, which forces another rename.

Before a large migration, write down which bucket goes to which container. Otherwise you find out the naming plan from the destination after the copy has finished.

Invalid metadata needs an explicit choice

S3 and Azure also allow different characters in metadata keys. AzCopy's --s2s-handle-invalid-metadata flag has three behaviors:

  • ExcludeIfInvalid omits incompatible metadata and logs a warning.
  • FailIfInvalid fails that object.
  • RenameIfInvalid changes the metadata key.

With the default exclusion behavior, an object can copy successfully and arrive without some of its metadata. If metadata drives retention, compliance, processing, or ownership, review this flag before running the job.

Other S3-compatible services need testing

Microsoft's documented S3 flow uses AWS S3 URL formats. Don't assume the same command accepts every Wasabi, Cloudflare R2, MinIO, DigitalOcean Spaces, or private S3-compatible endpoint.

Test the exact provider and endpoint. For non-AWS sources, a tool that accepts generic S3 endpoint URLs may be a better fit.

When a desktop workflow fits better

Use AzCopy when the team wants server-to-server speed, scripting, automation, and repeatable command lines.

Use a desktop tool when the person running the move needs visual file selection, browsing, previews, and fewer command flags. Blober connects AWS S3, Azure Blob Storage, and generic S3-compatible endpoints in one app on your computer, and lets you pick the Azure tier the copies land on. Its data path differs from AzCopy's: Blober downloads each object from the source and uploads it to Azure over your own connection. Choose by network, security, and operational needs; neither design is better in every case.

AzCopy also supports job resume and restart. Its source code and current release details are published on GitHub.[2]

Frequently asked questions

Does AzCopy use my bandwidth when copying from S3 to Azure? No. It uses Azure's Put Block From URL operation, so S3 and Azure exchange the data without passing it through your computer[3].

What happens to S3 metadata that Azure doesn't accept? By default AzCopy leaves it out and logs a warning. Set --s2s-handle-invalid-metadata to FailIfInvalid to fail those objects instead, or to RenameIfInvalid to rename the keys.

Can AzCopy copy from Wasabi or Cloudflare R2? Microsoft documents the S3 flow with AWS S3 URL formats. Test your exact provider and endpoint before you rely on it.

Can an interrupted AzCopy job be resumed? Yes. AzCopy supports resuming and restarting jobs[4].