我有一个NodeJS Lambda 函数,它从 Kinesis 流中读取数据,进行一些处理并将其写入另一个 Kinesis 流。写作部分导致 lambda 出现错误。我们使用 aws-sdk npm 模块来写入数据。当我们调用 putRecord 时,不会触发回调并且 lambda 会超时。当作为笔记本电脑上的节点应用程序在本地运行时,此编写代码运行良好。
本地配置: - 具有 Kinesis 完全访问权限策略的编程用户的凭据存储在凭据文件中,并且 putRecord 运行成功,返回 shardId、序列号等。
Lambda 函数: - putRecord 的代码不返回并且挂起。也不会抛出任何错误。Lambda 具有 Kinesis 完全访问策略的角色。
代码:
var AWS = require('aws-sdk');
var kinesis = new AWS.Kinesis({
region: 'us-east-1',
});
var randomNumber = Math.floor(Math.random() * 100000);
var data = 'data-' + randomNumber;
var partitionKey = 'pk-' + randomNumber;
var recordParams = {
Data: data,
PartitionKey: partitionKey,
StreamName: streamName
};
kinesis.putRecord(recordParams, function(err, data) {
console.log(data);
if (err) {
console.error(err);
}
});
任何想法可能导致问题。可能与 VPC 或安全组相关?提出了一些想法和建议。谢谢。