目前我可以迭代桶中的所有文件并逐个下载, 使用node.js sdk。 我需要立即从S3存储桶下载所有文件。然后将其从桶中取出。
答案 0 :(得分:5)
此更高级别的Node S3库具有downloadDir
功能,可将远程S3存储桶与本地目录同步。
https://github.com/andrewrk/node-s3-client#clientdownloaddirparams
答案 1 :(得分:1)
您可以使用以下命令使用aws cli
:
aws s3 sync s3://yourbucket .
如果您必须使用node
,则可以使用exec
或spwan
。
const exec = require('child_process').exec;
exec('aws s3 sync s3://yourbucket .', (err, stdout, stderr) => {});
答案 2 :(得分:0)
假设您有一个函数listFiles
,它返回您要下载的存储桶中的一系列密钥,以及一个接受文件密钥(名称)和下载的函数downloadFile
然后删除它。
您想同时从downloadFile
返回的所有文件上调用listFiles
吗?使用async
库。
function listFiles(cb) {
s3.stuff(params, cb);
}
function downlaodFile(key, cb) {
s3.stuff(key, cb);
}
listFiles(function (err, fileKeys) {
if (err) {
throw err;//don't really but this is just an example
}
async.each(fileKeys, downloadFile, function done(err) {
if (err) {
throw err;
}
});
});