【问题标题】:How do I create and send csv using aws lambda and nodejs?如何使用 aws lambda 和 nodejs 创建和发送 csv?
【发布时间】:2021-09-21 13:49:55
【问题描述】:

我正在编写一个 lambda 函数,它从 DynamoDB 中获取数据并将其存储在一个数组中。现在我想从这个数组创建一个 CSV 文件并返回它。 (最好直接来自 lambda 函数,而不是上传到 s3 再分享链接)。任何想法,如何做到这一点?

到目前为止我的代码 -

import AWS from "aws-sdk";
import createError from "http-errors";
import commonMiddleware from "../lib/commonMiddleware";

const dynamodb = new AWS.DynamoDB.DocumentClient();

async function getFile(event, context) {
  const { id: someId } = event.pathParameters;
  let data;


  const params = {
    TableName: process.env.TABLE_NAME,
    IndexName: "GSIsomeId",
    KeyConditionExpression: "someId = :someId",
    ExpressionAttributeValues: {
      ":someId": someId,
    },
  };

  try {
    const result = await dynamodb.query(params).promise();
    data = result.Items;
  } catch (error) {
    console.error(error);
    throw new createError.InternalServerError(error);
  }
  
  
  // data is array of objects which I can change to 2d array using Object.values()
  // I want to create and return a CSV from this array 

  return {
    statusCode: 200,
    body: JSON.stringify(data),
  };
}

export const handler = commonMiddleware(getFile);

【问题讨论】:

  • 我相信这就是你所需要的。 stackoverflow.com/a/38245177/6520807
  • 这能回答你的问题吗? How to convert JSON array to CSV using Node.js?
  • @ksaraiya 是的,这将创建一个 CSV 文件。但是如何使用 AWS Lambda 发送此文件作为响应?
  • @ErwinSmithAOT 生成 csv 数据,上传到 S3 存储桶(在上传函数的参数中使用 filename.csv 传递 csv 数据)并返回 S3 链接作为响应如果您想直接下载文件而不将其存储到 S3 bucket 然后更改响应标头并在响应中返回 csv 数据

标签: javascript node.js amazon-web-services aws-lambda


【解决方案1】:

使用此处提到的任何方法生成 csv 后 Convert JSON array to CSV in Node

我猜你可以尝试发回文件的字节数组。

【讨论】:

猜你喜欢
  • 2020-07-16
  • 1970-01-01
  • 2020-11-14
  • 2019-12-12
  • 2022-09-27
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
相关资源
最近更新 更多