首页 > 解决方案 > AWS Lambda - NodeJS CSV 数据到 S3 文件

问题描述

专家们,

我有一个 JSON 对象,我需要将它作为 CSV 文件保存到 S3 存储桶中。这是我到目前为止所管理的,但不幸的是,该文件没有在 S3 上创建,也没有报告错误。

const AWS = require('aws-sdk');
const converter = require('json-2-csv');

const s3 = new AWS.S3({
    accessKeyId: "Key",
    secretAccessKey: "Secret"
});

exports.handler = async(event, context, callback) => {
    context.callbackWaitsForEmptyEventLoop = false;
    const s3Bucket = "bucketname";
    const objectName = event.operation + new Date().getTime() + "_" + event.userId + ".";
    const objectData = (event.rawData);
    const objectType = "text/csv";

    converter.json2csv(objectData, async(err, csv) => {
        if (err) {
            console.log(" Error ", err)
            throw err;
        }
        console.log(csv);
        try {
            const params = {
                Bucket: s3Bucket,
                Key: objectName,
                Body: (csv),
                ContentType: objectType,
                ContentDisposition: 'attachment',
            };
            console.log('Writing to s3 bucket..');
            const result = await s3.putObject(params).promise();
            console.log('Finished Writing to s3 bucket..', objectName);
            return sendRes(200, `File uploaded successfully at https:/` + s3Bucket + `.s3.amazonaws.com/` + objectName);
        }
        catch (error) {
            console.log(error)
            return sendRes(404, error);
        }
    });
};
const sendRes = (status, body) => {
    var response = {
        statusCode: status,
        headers: {
            "Content-Type": "application/json",
            "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
            "Access-Control-Allow-Methods": "OPTIONS,POST,PUT",
            "Access-Control-Allow-Credentials": true,
            "Access-Control-Allow-Origin": "*",
            "X-Requested-With": "*"
        },
        body: body
    };
    return response;
};

如果我删除 JSON 到 CSV 转换器并尝试将 JSON 数据保存为 JSON 文件,那么它具有魅力 - 通过将 objectType 更改为“application/json”。

转换为 CSV 时我在这里做错了什么?

PS:JSON 到 CSV 转换工作正常,这是最后打印的日志。

写入 s3 存储桶..

标签: node.jsamazon-s3aws-lambda

解决方案


推荐阅读