首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Lambda将ndjson写入S3存储桶

使用Lambda将ndjson写入S3存储桶
EN

Stack Overflow用户
提问于 2020-09-12 01:53:21
回答 1查看 123关注 0票数 0

我需要将ndjson数据上传到S3存储桶。但我很难把它传递给S3.putObject()

以下是我的JSON数据:

代码语言:javascript
复制
const responseData = uploadData.data.map((upData) => ({
 date: upData.date,
 time: upData.time,
 url: upData.url,
 test1: test1.id,
 test2: test2,
}));

我正在将上面的JSON转换为ndjson

代码语言:javascript
复制
const transformStream = ndjson.stringify();
const outputStream = transformStream.pipe(
 fileSystem.createWriteStream(__dirname + '/data.ndjson')
);
responseData.forEach(function iterator(record) {
 transformStream.write(record);
});
transformStream.end();

现在,我如何将这些数据上传到我的S3存储桶中,请协助,谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-09-15 23:09:11

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

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

代码语言:javascript
复制
[
  {
    "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中(如下所示):

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63852032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档