直接从一个S3帐户移动文件到另一个?

很基本的问题,但我一直无法find答案。 使用Transit我可以将文件从一个AWS账户上的一个S3存储桶“移动”到另一个AWS账户上的另一个S3存储桶,但实际上是从第一个AWS账户下载文件,然后将其上传到第二个账户。

有没有办法将文件直接从一个S3帐户移动到另一个没有下载之间?

如果您只是寻找一个现成的解决scheme,那么有一些解决scheme可以做到这一点。 Bucket Explorer可以在Mac和Windows上运行,并且可以像Cloudberry S3 Explorer和S3 Browser一样跨账户复制,但是它们只是Windows,所以可能不适合您。

我怀疑AWS控制台也可以通过适当的权限设置来完成,但是我没有testing过。

您还可以使用AWS API执行此操作,只要您已经为使用目标存储桶的写入权限提供了AWS账户。

是的,有一种方法。 它非常简单,但很难find它。 8)

例如,假设您的第一个帐户用户名是acc1@gmail.com,第二个是acc2@gmail.com。

按照acc1打开AWSpipe理控制台 。 获取Amazon S3存储桶属性,然后在“权限”选项卡中单击“添加更多权限”。 然后为“已validation的用户”添加列表和查看权限。

接下来,在acc2中的AWS IAM(可从控制台选项卡中访问)创build一个可以完全访问S3存储桶的用户(为了更安全,您可以设置确切的权限,但我更愿意为转移创build一个临时用户然后删除它)。

然后,您可以使用s3cmd (使用acc2中新创build的用户的凭据)执行如下操作:

s3cmd cp s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive 

所有的转让都将在亚马逊的一方完成。

使用aws cli (我用ubuntu 14 ec2实例),只需运行以下命令:

 aws s3 sync s3://bucket1 s3://bucket2 

您将需要指定一个帐户的详细信息,并具有公共写入权限或公共读取权限。

这将同步两个桶。 您稍后可以再次使用相同的命令来快速同步。 最好的部分是它似乎不需要任何带宽(例如文件不通过本地计算机)。

博托效果很好。 看到这个线程 。 使用boto,你可以将对象从一个桶直接复制到另一个桶中,而不是把它们下载到本地机器上并把它们上传到另一个桶中。

在Mac OS X上,使用了Panic的Transmit应用程序。 我为每个S3账户打开了一个窗口(使用API​​密钥和秘密)。 然后,我可以从一个窗口中的一个桶拖到另一个窗口中的另一个桶。 无需先在本地下载文件

安德鲁是正确的,传输在本地下载文件,然后上传文件。

你可以用户Cyber​​duck(开源)

CrossFTP可以将S3文件直接从一个存储桶复制到另一个存储而不需要下载。 它是一个在Windows,Mac和Linux上运行的GUI S3客户端。

对于新创build的文件(不包括现有对象),您可以利用AWS的新function。 它是交叉区域复制(在S3桶的“版本控制”下)。 您可以创build一个策略,允许您将新对象复制到另一个帐户中的存储桶。

对于现有对象,您仍然需要使用其他方法来复制对象 – 除非AWS将来会为此引入本机function。