nodejs:如何从 AWS S3 存储桶下载一个 zip 文件,在 EC2 实例中另存为本地文件并解压缩?
nodejs: how to download a zip file from AWS S3 bucket, save as local file in EC2 instance and unzip it?
我的 EC2 实例是 运行 一个 nodejs 服务。
我想将 S3 存储桶中的 zip 文件下载/保存到 EC2 实例中的本地位置。
有很多关于从 s3 存储桶下载文件的答案,但它们都是关于如何实现 nodejs api 端点,以便您可以将文件从 s3 存储桶下载到本地计算机:
s3.getObject(bucketParams).createReadStream().pipe(res);
这将为文件创建一个流,您只需将流传输到 res
,它就会开始下载到您的计算机。
这不是我需要做的。
我需要将文件保存在EC2的本地,做一些解压等操作,然后http响应没有return文件。一切都在EC2这边。
我该怎么办?这似乎很基础,但我找不到太多文档/资源。
为对象创建一个读取流,为本地文件创建一个写入流,并将读取流通过管道传输到写入流,如下所示:
const AWS = require('aws-sdk');
const path = require('path');
const fs = require('fs');
const s3 = new AWS.S3();
const params = {
Bucket: 'mybucket',
Key: 'cats/siberian.png'
};
const rs = s3.getObject(params).createReadStream();
const ws = fs.createWriteStream(path.join('myfolder', 'siberian.png'));
rs.pipe(ws);
我的 EC2 实例是 运行 一个 nodejs 服务。 我想将 S3 存储桶中的 zip 文件下载/保存到 EC2 实例中的本地位置。
有很多关于从 s3 存储桶下载文件的答案,但它们都是关于如何实现 nodejs api 端点,以便您可以将文件从 s3 存储桶下载到本地计算机:
s3.getObject(bucketParams).createReadStream().pipe(res);
这将为文件创建一个流,您只需将流传输到 res
,它就会开始下载到您的计算机。
这不是我需要做的。
我需要将文件保存在EC2的本地,做一些解压等操作,然后http响应没有return文件。一切都在EC2这边。
我该怎么办?这似乎很基础,但我找不到太多文档/资源。
为对象创建一个读取流,为本地文件创建一个写入流,并将读取流通过管道传输到写入流,如下所示:
const AWS = require('aws-sdk');
const path = require('path');
const fs = require('fs');
const s3 = new AWS.S3();
const params = {
Bucket: 'mybucket',
Key: 'cats/siberian.png'
};
const rs = s3.getObject(params).createReadStream();
const ws = fs.createWriteStream(path.join('myfolder', 'siberian.png'));
rs.pipe(ws);