繁体   English   中英

使用 Lambda 将 ndjson 写入 S3 存储桶

[英]Writing ndjson to S3 Bucket using Lambda

我需要将ndjson数据上传到 S3 存储桶。 但我正在努力将它传递给S3.putObject()

以下是我的 JSON 数据:

const responseData = uploadData.data.map((upData) => ({
 date: upData.date,
 time: upData.time,
 url: upData.url,
 test1: test1.id,
 test2: test2,
}));

我正在将上述JSON转换为ndjson

const transformStream = ndjson.stringify();
const outputStream = transformStream.pipe(
 fileSystem.createWriteStream(__dirname + '/data.ndjson')
);
responseData.forEach(function iterator(record) {
 transformStream.write(record);
});
transformStream.end();

现在,我如何将该数据上传到我的 S3 存储桶中,请提供帮助,谢谢

我能够在不需要ndjson库的情况下找到一个简洁的解决方案

下面的代码会将您的JSON数据转换为ndjson格式(如果数据属于以下类型):

[
  {
    "f1": "somedata",
    "f2": "somedata",
    "f3": "somedata"
  },
  {
    "f1": "somedata",
    "f2": "somedata",
    "f3": "somedata"
  }
]

const transformData = (jsonData) => {
 let res = ''
 for (let i = 0; i < jsonData.length; i++) {
   res += `${JSON.stringify(jsonData[i])}\n`
 }
 return res
}

然后你可以简单地调用AWS.S3 - PutObject函数将ndjson数据放入S3 (如下):

const result = transformData(Data)

const params = {
  Bucket: bucketName,
  Key: keyName,
  Body: result
}

s3.putObject(params, function () {})
// If you need to get the version ID of the Object (only if versioning is Enabled)
// const verID = (await s3.putObject(params, function () {}).promise()).VersionId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM