amazon-kinesis - 如何在 Javascript SDK 中解码来自 kinesis.getRecords 的数据?
问题描述
我正在尝试从 Kinesis 数据流中获取数据:
function getRecord(shard_iterator) {
var getRecParams = {
ShardIterator: shard_iterator
};
kinesis.getRecords(getRecParams, function(err, result) {
// Loop through all the packages
for (var record in result.Records) {
console.log(JSON.stringify(result.Records[record].Data));
break; // just to see the first one
}
//if (result.NextShardIterator) getRecord(result.NextShardIterator);
});
}
我看到的结果:
{"type":"Buffer","data":[123,34,73,110,112,117....,125]}
我知道表单 AWS CLIdata
应该是 base64 编码的,但这里有些不同。那么如何从data
我看到的数组中获取信息呢?
请注意,它不是 NodeJS,而是浏览器中的 Javascript。
解决方案
解决方案,将它放在文档中会很高兴:
var decoder = new TextDecoder("utf-8");
function getRecord(shard_iterator) {
var getRecParams = {
ShardIterator: shard_iterator
};
kinesis.getRecords(getRecParams, function(err, result) {
if (err) {
console.log("Error in getRecords() from the Kinesis stream.");
console.log(err);
} else {
try {
// Loop through all the packages
for (var record in result.Records) {
data = result.Records[record].Data
decoded = JSON.parse(decoder.decode(data));
console.log(decoded);
}
} catch(err) {
console.log("Error parsing the package.");
console.log(err);
}
if (result.NextShardIterator) getRecord(result.NextShardIterator);
}
});
}
推荐阅读
- javascript - React Compound Timer 中是否有允许双零的设置
- swift - Swift 和 SwiftUI 之间的 viewContext 是否不同
- python - 如何避免由于库导致 App Engine 空间不足?
- php - Nginx 反向代理为 PHP 返回 404
- postgresql - KNEX 中的别名与 Postgres db
- javascript - 如何在服务器上记录一些字符串并使用 Next.js 将其作为道具返回给组件?
- node.js - 使用 Create React App 和 Plotly.js 时出现内存不足错误
- python-3.x - 窗口没有出现在 Tkinter
- java - 在 docker 容器上运行的 Fabric 客户端应用程序无法连接到 orderer 容器
- jwt - 授权之间的区别:承载
和授权:智威汤逊 ?