首页 > 解决方案 > 从 AWS-S3 下载文件到本地计算机文件系统

问题描述

我使用 api-gateway、aws-lambda 和 s3 存储桶编写了微服务。我目前能够读取 lambda 函数中的所有文件内容。但我想将文件从 s3 下载到本地文件系统。我尝试使用管道(本地文件路径),但它会引发有关路径的错误(未找到)。

const AWS = require('aws-sdk'); 
var s3 = new AWS.S3();
exports.handler = function(event, context, callback) {
    var params = {
      "Bucket": "bucketname",
      "Key": "hello"
        };

    var readstream = s3.getObject(params).createReadStream();
    readstream.on('data',(data) => {
    console.log(data)
    })
    .on('end', () => {
      return callback(null, "file read done")
    })
    .on('error',(e) => {
      console.log("Error occured",e)
    })
};

如何将文件下载到用户文件系统?

标签: amazon-web-servicesamazon-s3aws-lambdaaws-sdk

解决方案


如果您想允许用户下载文件但想在 lambda 中进行某些操作之前执行或生成 S3 对象的内容,那么您可以使用getSignedUrl

它会创建临时 url,您可以将其返回给您的客户,他们可以下载它。在这种情况下,不需要在 S3 上运行 http 服务器。此外,它还支持 ssl 和恢复下载。


推荐阅读