【问题标题】:nodejs: how to download a zip file from AWS S3 bucket, save as local file in EC2 instance and unzip it?nodejs:如何从 AWS S3 存储桶下载 zip 文件,在 EC2 实例中保存为本地文件并解压缩?
【发布时间】:2022-02-10 21:43:54
【问题描述】:

我的 EC2 实例正在运行 nodejs 服务。 我想将 S3 存储桶中的 zip 文件下载/保存到 EC2 实例的本地位置。

关于从 s3 存储桶下载文件有很多答案,但都是关于如何实现 nodejs api 端点,以便您可以将文件从 s3 存储桶下载到本地机器:

s3.getObject(bucketParams).createReadStream().pipe(res);

这将为文件创建一个流,您只需将流通过管道传输到res,它就会开始下载到您的计算机。

这不是我需要做的。

我需要在EC2中将文件保存在本地,做一些解压等操作,然后http响应没有返回文件。一切都在 EC2 方面。

我该怎么办?这似乎很基本,但我找不到太多文档/资源。

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 amazon-ec2


    【解决方案1】:

    为对象创建一个读取流,为本地文件创建一个写入流,并将读取流通过管道传输到写入流,如下所示:

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

    【讨论】:

    • 谢谢!我也来过这个实现:)
    • 不客气。我认为 AWS Node.js 开发工具包与其他开发工具包有点不同,因为节点流的重要性。大多数其他 SDK 确实包含某种“下载到本地文件系统”方法。
    猜你喜欢
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2014-04-04
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多