您将需要创建一个
AWS.S3.listObjects()列表以列出具有特定前缀的对象。但是您是正确的,因为您需要对要从一个存储桶/前缀复制到相同或另一个存储桶/前缀的每个对象进行一次调用。
您还可以使用异步工具之类的实用程序库来管理您的请求。
var AWS = require('aws-sdk');var async = require('async');var bucketName = 'foo';var oldPrefix = 'abc/';var newPrefix = 'xyz/';var s3 = new AWS.S3({params: {Bucket: bucketName}, region: 'us-west-2'});var done = function(err, data) { if (err) console.log(err); else console.log(data);};s3.listObjects({Prefix: oldPrefix}, function(err, data) { if (data.Contents.length) { async.each(data.Contents, function(file, cb) { var params = { Bucket: bucketName, CopySource: bucketName + '/' + file.Key, Key: file.Key.replace(oldPrefix, newPrefix) }; s3.copyObject(params, function(copyErr, copyData){ if (copyErr) { console.log(copyErr); } else { console.log('Copied: ', params.Key); cb(); } }); }, done); }});希望这可以帮助!



