在两个不同的AWS S3帐户之间复制

时间:2012-08-15 14:40:33

标签: c# amazon-s3 amazon-web-services

我正在使用AWS的C#库。 我们有一个场景,第三方授予我们对其S3存储桶的读取权限。是否可以将对象从S3存储桶复制到我们的存储桶而不进行往返(即GET和PUT)?

我在AWS文档中发现了这一点: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html

但这似乎只适用于他们的REST API,而不适用于我正在使用的C#库

感谢

3 个答案:

答案 0 :(得分:1)

尽管bwight似乎认为,它只是不起作用。在没有必要的往返的情况下使其工作的唯一方法是使用完全相同的凭证来访问BOTH桶。因此,使其工作的唯一方法是让源存储桶的所有者(在我的情况下是第三方)授予对您的某个用户帐户的访问权限,以便从其存储桶中列出/读取。他们只需修改他们的存储桶策略就可以包含以下内容:

"Principal": {
    "AWS": "arn:aws:iam::1234567890:user/someusername"
}

然后在策略中授予其所需的任何权限

答案 1 :(得分:0)

C#SDK可以使用相同的方法。我不确定您是否可以跨帐户复制到存储桶,但如果权限设置正确,我认为没有理由不这样做。如果这不起作用,我会说这是不可能的。

http://docs.amazonwebservices.com/sdkfornet/latest/apidocs/?topic=html/M_Amazon_S3_AmazonS3Client_CopyObject.htm

答案 2 :(得分:0)

重要的是要记住,您用于处理AWS服务的任何语言(如S3)都将与该服务的API进行通信。问题是SDK是否支持底层方法,在本例中是PUT-copy one。

如果您跨帐户执行此操作,则您使用的IAM用户/密钥对必须具有对源对象的READ访问权限和对目标存储桶的WRITE访问权限。