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

时间:2015-03-08 20:13:06

标签: javascript node.js csv aws-lambda

我想使用lambdadynamodb获取数据库,并将计算数据生成到cvs文件。

然后将此文件附加电子邮件发送给客户。

步骤

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

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

  3. 因为lambda没有持久数据。如何写入文件

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

2 个答案:

答案 0 :(得分:3)

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

只需忽略下面的响应中的fs.readFile语句

Sending mails with attachment via NodeJS

答案 1 :(得分:2)

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

  1. 从db
  2. 获取数据
  3. 根据您的需要格式化。我建议使用类似csv-write-stream的内容查看流。
  4. 使用s3-streaming-uploadaws-sdk
  5. 等方式将数据流式传输到s3
  6. 作为SDK响应的一部分,您将获得文件的位置。
  7. 我使用mandrill(https://mandrillapp.com/api/docs/messages.html),因为它是 free ,简单而且棒极了。您可以将附件内容设置为base64。你的看起来可能是这样的:

    "attachments": [
      {
        "type": "text/csv",
        "name": "myfile.csv",
        "content": new Buffer( myCsvContent ).toString('base64')
       }
    ]
    
  8. 我没有对此进行测试,但最近做了类似的事情,这种一般方法应该适合你。