如何在内存中写入文件或在Lambda aws中写入文件?
问题描述:
我想使用lambda
从dynamodb
获取数据库并生成计算数据到cvs
文件。如何在内存中写入文件或在Lambda aws中写入文件?
然后附上此文件与电子邮件发送给客户。
步骤
从dynamodb获取数据。 (我知道该怎么做。)
写入文件.CSV(需要帮助)。
由于lambda没有持久数据。如何写入文件
- 将.CSV附加到电子邮件并发送给客户。 (需要帮助)
答
的fs.readFile声明如果你正在写一个CSV,你可能需要将数据流式传输到S3。 Lambda有一个很好的例子here用于从缓冲区流式传输图像数据。显然你没有使用图像,但概念大致相同。
- 从数据库
- 格式它你需要让你的数据。我建议用类似csv-write-stream的东西来查看流。
- 通过类似s3-streaming-upload或aws-sdk的数据流将数据传输到s3。
- 作为SDK响应的一部分,您将获得文件的位置。
-
我会使用mandrill(https://mandrillapp.com/api/docs/messages.html),因为它的
免费,简单,真棒。您可以将附件内容设置为base64。你的可能是这个样子:"attachments": [ { "type": "text/csv", "name": "myfile.csv", "content": new Buffer(myCsvContent).toString('base64') } ]
我没有测试过这一点,但没有类似的东西最近这一般方法应该为你工作。
我在想这些,并且意识到你没有明确说你需要保存CSV。如果你不这样做,那么肯定会忽略S3步骤,因为它会让你想要做的事情变得复杂。你可以流到一个缓冲区,然后base64编码并附加到电子邮件。 – imjared 2015-03-09 14:48:35