3

我想用来lambda从中获取数据库dynamodb并将计算数据生成到cvs文件中。

然后将此文件与电子邮件一起发送给客户。

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

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

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

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

2 回答 2

3

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

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

通过 NodeJS 发送带有附件的邮件

于 2015-03-08T22:27:43.013 回答
2

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

  1. 从 db 获取数据
  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')
       }
    ]
    

我没有对此进行测试,但最近做了类似的事情,这种通用方法应该适合你。

于 2015-03-08T22:38:21.627 回答