如何在内存中写入文件或在Lambda aws中写入文件?

如何在内存中写入文件或在Lambda aws中写入文件?

问题描述:

我想使用lambdadynamodb获取数据库并生成计算数据到cvs文件。如何在内存中写入文件或在Lambda aws中写入文件?

然后附上此文件与电子邮件发送给客户。

步骤

  1. 从dynamodb获取数据。 (我知道该怎么做。)

  2. 写入文件.CSV(需要帮助)。

由于lambda没有持久数据。如何写入文件

  1. 将.CSV附加到电子邮件并发送给客户。 (需要帮助)

您是否有发送电子邮件的现有设置?发送电子邮件时,您不一定需要保存文件以创建文件附件。

简单地忽略响应以下

Sending mails with attachment via NodeJS

的fs.readFile声明如果你正在写一个CSV,你可能需要将数据流式传输到S3。 Lambda有一个很好的例子here用于从缓冲区流式传输图像数据。显然你没有使用图像,但概念大致相同。

  1. 从数据库
  2. 格式它你需要让你的数据。我建议用类似csv-write-stream的东西来查看流。
  3. 通过类似s3-streaming-uploadaws-sdk的数据流将数据传输到s3。
  4. 作为SDK响应的一部分,您将获得文件的位置。
  5. 我会使用mandrill(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 2015-03-09 14:48:35