It’s oddly not that clear, but here’s how I did a cross-account transfer without any traffic going through my client machine (just a Linux VM on my home computer):
1. Install AWS ClI on some linux VM: http://docs.aws.amazon.com/cli/latest/userguide/installing.html ( I did it via pip )
2. “aws configure” and paste in the creds for your destination account
3. In the source account and bucket paste in the following in Properties > Permissions > Edit bucket policy (get the account’s ARN from the account overview):
4. Create the destination bucket if it’s not already made.
5. In aws cli, use the following command:
aws s3 sync s3://
This step seems like it should be fine if you just put in the bucket names (with the “/” at the end). It didn’t seem to work for me unless I put in at least one subfolder. I could be going nuts here — it’s late — so experiment with the “/” at the end, with or without subfolder names, check if there are no files in the first subfolder, etc. I’m not sure, but this whole process was anything but straightforward.
Note, you may see tons of the following error (aws cli throws this if the file is in glacier…. you need to restore it from glacier first):
<.....path-to-file-on-s3....> A client error (InvalidObjectState) occurred when calling the CopyObject operation: Operation is not valid for the source object’s storage class.
A few links to threads I found useful:
https://github.com/aws/aws-cli/issues/748 (about aws cli not working well with glacier files)
http://stackoverflow.com/questions/5194552/is-it-possible-to-copy-all-files-from-one-s3-bucket-to-another-with-s3cmd (from one bucket to another)
http://serverfault.com/questions/543632/how-to-copy-all-s3-buckets-to-another-aws-account (you have to copy bucket contents)
http://www.alfielapeter.com/posts/8-transferring-s3-bucket-contents-between-accounts-with-s3cmd (someone else finding a similar solution)
BucketExplorer and Cloudberry products didn’t kick off a direct S3-to-S3 transfer. Rather, they used the client machine as a sort of proxy for the transfer, meaning all files went out from S3, through the client, then in to S3. Bandwidth charges apply in that case. Just do it the aws clie or s3cmd ways.