s3复制对象将一个文件夹的内容复制到另一个

时间:2019-03-18 20:23:14

标签: amazon-s3 copy

大家好,我试图使用nodejs和aws sdk将一个s3文件夹的内容复制到另一个s3文件夹。但是我真的对如何做到这一点感到困惑。 每当我进行基本复制时,都会说访问被拒绝。但是更大的问题是我的文件夹包含许多子文件夹,我想复制其所有内容并将其放在新的密钥下。我该怎么办?

1 个答案:

答案 0 :(得分:0)

此功能可以完美完成

async function copyDirectoryS3(bucketName, oldPrefix, oldS3Id, newS3Id) {
  const params = {
    Bucket: bucketName,
    // "templates/"+oldS3Id+"/"
    Prefix: oldPrefix
  };
  const listObjectsResult = await s3.listObjectsV2(params).promise();
  listObjectsResult.Contents.forEach(async ({ Key }) => {
    let currentKey = bucketName + "/" + Key;
    let oldId = new RegExp(oldS3Id, "g");
    let finalKey = currentKey.replace(oldId, newS3Id);
    finalKey = finalKey.replace(bucketName + "/", "");

    let copyParmas = {
      Bucket: bucketName,
      CopySource: currentKey,
      Key: finalKey
    };
    await s3.copyObject(copyParmas).promise();
  });
  return newS3Id;
}