Javascript 有没有一种方法可以压缩整个s3目录,并将压缩文件留在那里而不下载它?
我是aws新手,我想在aws中压缩一个目录,并在lambda中获得压缩后的S3URL。目前我正在使用S3ZIP模块来实现这一点。但是它直接下载zip文件。我其实不想下载。我想把它自己拉在桶里。有办法吗?我在下面分享了我的代码Javascript 有没有一种方法可以压缩整个s3目录,并将压缩文件留在那里而不下载它?,javascript,node.js,amazon-web-services,amazon-s3,aws-lambda,Javascript,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,我是aws新手,我想在aws中压缩一个目录,并在lambda中获得压缩后的S3URL。目前我正在使用S3ZIP模块来实现这一点。但是它直接下载zip文件。我其实不想下载。我想把它自己拉在桶里。有办法吗?我在下面分享了我的代码 const params = { Bucket: S3BucketConfig.bucket, Prefix: folder } const filesArray = [] const files = s3.listObjects(
const params = {
Bucket: S3BucketConfig.bucket,
Prefix: folder
}
const filesArray = []
const files = s3.listObjects(params).createReadStream()
const xml = new XmlStream(files)
xml.collect('Key')
xml.on('endElement: Key', function(item) {
filesArray.push(item['$text'].substr(folder.length))
})
xml
.on('end', function () {
zip(filesArray)
})
function zip(files) {
const output = fs.createWriteStream(join(__dirname, fileName))
s3Zip
.archive({ region: "eu-west-1", bucket: S3BucketConfig.bucket, preserveFolderStructure: true }, folder, files)
.pipe(output)
}
有人能帮我吗?提前谢谢
我想把它自己拉在桶里。有办法吗
可惜没有。S3不是文件系统,它是。这意味着您不能对bucket中的对象执行修改
zip操作需要下载所有要存档的对象,本地压缩它们(例如在ec2实例、lambda函数、本地工作站上),然后将zip上载到bucket
下载对象并将其打包到zip中。如果不先下载对象,这个模块或其他模块就无法在bucket中执行压缩操作。在压缩之前,对象不必物理存储在本地,因为它们可以从S3流式传输,但仍然不是“在”bucket中