很基本的问题,但是我还没有找到答案。使用Transit,我可以将文件从一个AWS账户上的一个S3存储桶中“移动”到另一个AWS账户中的另一个S3存储桶中,但是实际上是从第一个文件中下载文件,然后将它们上传到第二个文件中。
有没有一种方法可以将文件直接从一个S3帐户移动到另一个帐户,而无需在两个帐户之间下载文件?
Answers:
如果您只是在寻找现成的解决方案,那么可以使用一些解决方案。Bucket Explorer在Mac和Windows上均可使用,可以像Cloudberry S3 Explorer 和S3 Browser一样跨帐户复制,但是它们仅适用于Windows,因此可能不适用于您。
我怀疑AWS控制台也可以通过适当的权限设置来做到这一点,但我尚未对此进行测试。
是的,有办法。它非常简单,尽管很难找到它。8)
例如,假设您的第一个帐户用户名是acc1@gmail.com,第二个用户名是acc2@gmail.com。
以acc1的身份打开AWS管理控制台。转到Amazon S3存储桶属性,然后在“权限”选项卡中单击“添加更多权限”。然后为“已认证的用户”添加列表和查看权限。
接下来,在acc2的AWS IAM中(可从控制台选项卡中访问),创建一个对S3存储桶具有完全访问权限的用户(为了更加安全,您可以设置确切的权限,但是我更喜欢为转移创建一个临时用户然后将其删除)。
然后,您可以使用s3cmd(使用acc2中新创建的用户的凭据)执行以下操作:
s3cmd cp s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive
所有转让都将在亚马逊方面进行。
rsync
您也可以使用同步整个存储桶s3cmd sync s3://acc1_bucket s3://acc2_bucket
。
s3cmd
也可以安装自制软件,
--acl-public
其他内容,所有文件都是私有的(至少当我执行命令时,这对我来说是私有的)。有这么多的私人文件,我不得不在桶中添加策略,以使它们都再次公开
使用aws cli(我使用的是ubuntu 14 ec2实例),只需运行以下命令:
aws s3 sync s3://bucket1 s3://bucket2
您将需要为其中一个指定帐户详细信息,并对另一个具有公共写访问权限或公共读访问权限。
这将同步两个存储桶。您可以稍后再次使用同一命令来快速同步。最好的部分是,它似乎不需要任何带宽(例如,文件没有通过本地计算机传递)。
aws s3 sync
它的运行速度似乎都比快s3cmd cp
。
--grants
选项。文档中的更多信息:docs.aws.amazon.com/cli/latest/reference/s3/sync.html
--grants
。复制大量数据后,我才学到了这一点,然后不得不将同步重做到新的存储桶。--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
为公共用户设置读取权限。
s3cmd
我快10倍,并且还能够同步更改文件,而不是在将来需要重新运行命令时重新复制所有内容-更好!
在Mac OS XI上,使用了Panic的Transmit应用程序。我为每个S3帐户打开了一个窗口(使用API密钥和机密)。然后,我可以从一个窗口中的一个存储桶拖动到另一窗口中的另一个存储桶。无需先在本地下载文件。
安德鲁是正确的,传输在本地下载文件,然后上传文件。
让我们考虑有两个帐户的源帐户和目标帐户。还有两个水桶source-bucket
和destination bucket
。我们要将所有文件从source-bucket
移到destination-bucket
。我们可以按照以下步骤进行操作:
aws configure
aws s3 ls s3://source-bucket/
aws s3 cp s3://source-bucket s3://destination-bucket --recursive
aws s3 mv s3://source-bucket s3://destination-bucket --recursive
或者,您可以使用sync命令- aws s3 sync s3://source-bucket s3://detination-bucket
为了更好的解释,请点击链接
CrossFTP可以直接将S3文件从一个存储桶复制到另一个存储桶,而无需下载它们。它是一个GUI S3客户端,可在Windows,Mac和Linux上运行。
对于新创建的文件(不存在对象),您可以利用AWS的新功能。这是跨区域复制(在S3存储桶的“版本”下)。您可以创建一个策略,将新对象复制到其他帐户中的存储桶。
对于现有对象,您仍然需要使用另一种方法来复制对象-除非AWS将来为此引入本机功能。