#node.js #amazon-web-services #amazon-s3
#node.js #amazon-веб-сервисы #amazon-s3
Вопрос:
Мне нужно загрузить 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, пожалуйста, помогите, спасибо
Комментарии:
1. Для этого необходимо использовать AWS SDK, вы можете найти примеры здесь .
Ответ №1:
Я смог найти аккуратное решение без использования 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