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