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

How to write file in memory or to file in Lambda aws?

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

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

步骤

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

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

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

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

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

直接忽略下面回复中的fs.readFile语句

Sending mails with attachment via NodeJS

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

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

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

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