我在源S3存储桶中有大量对象,并且我有选择地希望将对象的子集复制到目标存储桶中。根据doc,这里似乎可以使用TransferManager.copy(from_bucket, from_key, to_bucket, to_key)
,但是我一次需要做一次。
有人知道其他方法吗,最好以批量方式复制而不是为每个对象调用copy()?
如果您想复制整个目录,则可以使用AWS Command-Line Interface (CLI):
aws s3 cp --recursive s3://source-bucket/folder/* s3://destination-bucket/folder/
但是,由于您希望选择性地复制文件,所以没有简单的方法来指示要复制的文件(除非它们都具有相同的前缀)。
坦率地说,当我需要复制选择性文件时,我实际上是创建Excel文件,其中包含文件名列表。然后,我创建一个像这样的公式:
="aws s3 cp s3://source-bucket/"&A1&" s3://destination-bucket/"
然后只需使用Fill Down复制公式。最后,复制命令并将其粘贴到“终端”窗口中。
如果您问是否有一种方法使用一个API调用以编程方式在存储桶之间复制倍数,则答案为否,这不可能。每个API调用只会复制一个对象。但是,您可以并行发出多个复制命令,以加快处理速度。