Загрузите файл из AWS-S3 в локальную компьютерную файловую систему - PullRequest
1 голос
/ 04 апреля 2019

Я написал микросервис, используя api-gateway, aws-lambda и s3 bucket.В настоящее время я могу прочитать все содержимое файла в лямбда-функции.Но я хочу скачать файл из s3 в локальную файловую систему.Я попытался использовать pipe (localfilepath), но выдает ошибку о пути (не найдено).

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

Как я могу загрузить файл в файловую систему пользователя?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Если вы хотите разрешить пользователям загружать файл, но хотите сделать перед какой-либо операцией в lambda или генерировать содержимое объекта S3, тогда вы можете использовать getSignedUrl .

Он создает временный URL, который вы можете вернуть своим клиентам, и они могли бы его скачать. В этом случае не нужно запускать http-сервер на S3. Как плюс он поддерживает ssl и возобновляет загрузку.

0 голосов
/ 04 апреля 2019

Если под пользователем вы подразумеваете клиентов, которые достигают вашего шлюза API, то вы не можете.Представьте, что я создал бы функцию Lambda, которая начинала бы загружать тонны данных на ваш компьютер, как только вы посетите мой веб-сайт.В этом случае сделайте объект в S3 загружаемым и разрешите пользователям решать, хотят ли они его загружать или нет, предоставляя им ссылку на этот объект.

Если под локальной файловой системой вы подразумеваете локальную файловую систему лямбды, тогда выиметь доступ к папке /tmp внутри контейнера, в котором выполняется лямбда, но его размер ограничен 500 МБ и он исчезает после уничтожения контейнера, так что это, вероятно, тоже не то, что вы ищете.Это полезно в тех случаях, когда используемому модулю требуется доступ к файловой системе во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...