2015-03-08 4 views
2

Я хочу использовать lambda для получения базы данных от dynamodb и генерировать вычислительные данные в файл cvs.Как записать файл в память или файл в Lambda aws?

Затем прикрепите этот файл электронной почтой к клиенту.

Шаг

  1. Получить данные dynamodb. (Я знаю, как это сделать.)

  2. Пишите в файл .CSV (нужна помощь).

Поскольку лямбда не содержит данных. Как написать в файл

  1. Прикрепите .CSV для отправки и отправки по электронной почте. (нужна помощь)

ответ

3

У вас есть существующая установка для отправки электронной почты? Вам не обязательно сохранять файл для создания прикрепленного файла при отправке электронной почты.

просто проигнорировать заявление fs.readFile в ответ ниже

Sending mails with attachment via NodeJS

2

Если вы пишете CSV, вы, вероятно, необходимо, чтобы поток данных S3. Lambda имеет довольно хороший пример here для потоковой передачи данных изображения из буфера. Очевидно, вы не используете изображение, но концепция примерно такая же.

  1. получить данные из БД
  2. формат его, как вам это нужно. Я бы рекомендовал смотреть в потоки с чем-то вроде csv-write-stream.
  3. данные потока в s3 с чем-то вроде s3-streaming-upload или aws-sdk.
  4. как часть ответа SDK, вы получите местоположение своего файла.
  5. Я бы использовал мандрилл (https://mandrillapp.com/api/docs/messages.html), потому что он бесплатный , легкий и удивительный. вы можете установить содержимое вложения как base64. Ваш может выглядеть примерно так:

    "attachments": [ 
        { 
        "type": "text/csv", 
        "name": "myfile.csv", 
        "content": new Buffer(myCsvContent).toString('base64') 
        } 
    ] 
    

Я не проверял это, но сделал что-то подобное в последнее время и этот общий подход должен работать для вас.

+0

Я уже думал об этом и понял, что вы явно не сказали, что вам нужно сохранить CSV. Если вы этого не сделаете, то обязательно проигнорируйте шаги s3, поскольку это просто усложняет то, что вы пытаетесь сделать. Вы можете просто передать буфер, а затем закодировать base64 и прикрепить его к электронной почте. – imjared

Смежные вопросы