AWS S3使用不同的凭据将对象从一个bucket复制到另一个bucket



有没有一种方法可以使用php将对象从一个bucket复制到另一个具有不同凭据的bucket?因为源bucket的凭据与目标bucket不同。我可以做的一件事是getObject((并保存它,然后putObject((。有什么简单的方法吗?

原则上,您可以创建两个具有不同凭据的S3客户端,然后使用其中一个下载对象,另一个上传数据。这样做的缺点是,所有数据都会被下载到你的机器上,然后再次上传,这可能会占用大量带宽。此外,如果处理大型对象,将数据存储在内存中可能会成为一个问题。

如果您可以控制目标存储桶和帐户中的角色/用户,则有更好的选择。在这种情况下,您可以在目标bucket上设置bucket策略,以允许源帐户中的用户在bucket上使用PutObject+CopyObject。然后,您还需要将这些权限添加到源帐户中的用户。之后,您可以使用CopyObject API-call将对象从源存储桶直接复制到目标存储桶,而无需首先下载它们。我建议在CopyObject调用中包含ACLBucketOwnerFullControl,否则您可能无法访问目标帐户中的对象。

最新更新