亚马逊网络服务-AWS CLI同步S3存储桶与多个凭据



我可以只读访问源S3存储桶。我不能更改此源帐户和bucket的权限或任何类似的内容。我没有这个账户。

我想将所有文件从源存储桶同步到我的目标存储桶。我拥有包含目标存储桶的帐户。

我有一组独立的凭据,用于我不拥有的源存储桶和我拥有的目标存储桶。

有没有一种方法可以使用AWS CLI使用两组凭据在存储桶之间进行同步?

aws s3 sync s3://source-bucket/ --profile source-profile s3://destination-bucket --profile default

如果没有,我如何在自己拥有的目标存储桶上设置权限,以便与CLI同步?

内置的S3复制机制,在API级别,要求将请求提交目标存储桶,识别请求中的源存储桶和对象,并使用单个凭据集,该凭据集具有从源读取和向目标写入的授权。

这是唯一支持的无需下载和上传文件即可从一个存储桶复制到另一个存储库的方法。

标准溶液位于http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html.

你可以授予他们的用户写你的bucket的访问权限,也可以授予你的用户写bucket的权限。。。但是,如果没有两个帐户所有者共同建立具有两种权限的单个证书集,则在不下载和重新上传文件的情况下从一个存储桶复制到另一个存储库是不可能的。

为此使用rclone。它很方便,但它确实下载和上传了我认为的文件,这使得它在大数据量时速度较慢。

rclone --config=creds.cfg copy source:bucket-name1/path/ target:bucket-name2/path/

creds.cfg:

[source]
type = s3
provider = AWS
access_key_id = AAA
secret_access_key = bbb
[target]
type = s3
provider = AWS
access_key_id = CCC
secret_access_key = ddd

对于这个用例,我会考虑跨区域复制,其中源和目标Bucket由不同的AWS帐户所有

您在源上设置了跨区域复制一个帐户拥有的bucket,用于在目标中复制对象另一个帐户拥有的bucket。

当两个bucket都由同一个帐户所有,只是你有一个额外步骤--目标bucket所有者必须创建bucket策略向源存储桶所有者授予复制操作的权限。

最新更新