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);