直接从一个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密钥和秘密)。 然后,我可以从一个窗口中的一个桶拖到另一个窗口中的另一个桶。 无需先在本地下载文件 。
安德鲁是正确的,传输在本地下载文件,然后上传文件。
你可以用户Cyberduck(开源)
CrossFTP可以将S3文件直接从一个存储桶复制到另一个存储而不需要下载。 它是一个在Windows,Mac和Linux上运行的GUI S3客户端。
对于新创build的文件(不包括现有对象),您可以利用AWS的新function。 它是交叉区域复制(在S3桶的“版本控制”下)。 您可以创build一个策略,允许您将新对象复制到另一个帐户中的存储桶。
对于现有对象,您仍然需要使用其他方法来复制对象 – 除非AWS将来会为此引入本机function。