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

3

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

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

步骤

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

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

因为lambda没有持久化数据,所以如何写入文件?

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

3

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

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

通过NodeJS发送带附件的邮件


2

如果您正在编写CSV文件,可能需要将数据流式传输到S3。Lambda在这里提供了一个非常好的示例,用于从缓冲区流式传输图像数据。显然,您不会使用图像,但概念大致相同。

  1. get your data from db
  2. format it how you need it. I'd recommend looking into streams with something like csv-write-stream.
  3. stream data to s3 with something like s3-streaming-upload or the aws-sdk.
  4. as part of the response from the SDK, you'd get the location of your file.
  5. i'd use mandrill (https://mandrillapp.com/api/docs/messages.html) because it's free, easy, and awesome. you can set the attachment content as base64. Yours might look something like this:

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

我没有测试过这个,但最近做了类似的事情,这种一般的方法应该适用于你。


我再想了一下,意识到你没有明确说明需要保存CSV文件。如果不需要保存,那么肯定可以忽略s3步骤,因为它只会让你的操作变得更加复杂。你可以直接流式传输到缓冲区,然后对其进行base64编码,并将其附加到电子邮件中。 - imjared

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接