我已经构建了一个AWS Lambda部署包(使用Node.js),该对象在PUT成为指定S3存储桶。现在,我配置了执行的代码,将10个随机生成的记录添加到Kinesis Firehose流中。Node.js中的代码AWS Lambda包不会调用putRecord()将数据添加到AWS Kinesis Firehose流
除了将记录添加到Kinesis流中外,Lambda函数还可以工作。我在AWS CloudWatch日志中看不到任何错误消息。使用console.log()打印语句,似乎putRecord()调用甚至没有执行,我找不到原因。其他人可以弄清楚这一点吗?
下面是我的lambda表达式部署包的分开代码:
console.log('Loading function');
var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });
var zlib = require('zlib');
function _writeToKinesis(kinesis) {
var currTime = new Date().getMilliseconds();
var sensor = 'sensor-' + Math.floor(Math.random() * 100000);
var reading = Math.floor(Math.random() * 1000000);
var record = JSON.stringify({
time : currTime,
sensor : sensor,
reading : reading
});
console.log("record: " + record);
var recordParams = {
Data : record,
PartitionKey : sensor,
StreamName : "my_firehose"
};
console.log("recordParams: " + recordParams);
kinesis.putRecord(recordParams, function(err, data) {
console.log("test");
if (err) {
console.log(err);
}
else {
console.log('Successfully sent data to Kinesis.');
}
});
}
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
var record = event.Records[0];
var bucket = record.s3.bucket.name;
var key = record.s3.object.key;
var params = {
Bucket: bucket,
Key: key
};
s3.getObject(params, function(err, data) {
if (err) {
console.log(err);
var message = "Error getting object " + key + " from bucket " + bucket +
". Make sure they exist and your bucket is in the same region as this function.";
console.log(message);
context.fail(message);
} else {
console.log('CONTENT TYPE:', data.ContentType);
var kinesis = new aws.Kinesis({ apiVersion: '2013-12-02', region : "us-east-1"});
var count = 0;
while (count < 10) {
setTimeout(_writeToKinesis(kinesis), 1000);
count++;
}
context.succeed("OK");
}
});
};
而这里的CloudWatch的日志输出:
START RequestId: c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 Version: $LATEST
2015-10-18T20:13:59.743Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 CONTENT TYPE: application/zip
2015-10-18T20:13:59.861Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":860,"sensor":"sensor-12149","reading":146264}
2015-10-18T20:13:59.861Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:13:59.980Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":924,"sensor":"sensor-86345","reading":956735}
2015-10-18T20:13:59.980Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:13:59.982Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":982,"sensor":"sensor-4925","reading":822265}
2015-10-18T20:13:59.982Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.060Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":60,"sensor":"sensor-40822","reading":796150}
2015-10-18T20:14:00.060Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.061Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":61,"sensor":"sensor-92861","reading":855213}
2015-10-18T20:14:00.061Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.063Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":63,"sensor":"sensor-84324","reading":155159}
2015-10-18T20:14:00.063Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.121Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":121,"sensor":"sensor-54930","reading":365471}
2015-10-18T20:14:00.121Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.122Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":122,"sensor":"sensor-1330","reading":981637}
2015-10-18T20:14:00.122Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.123Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":123,"sensor":"sensor-92245","reading":634723}
2015-10-18T20:14:00.123Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
2015-10-18T20:14:00.161Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 record: {"time":161,"sensor":"sensor-29594","reading":227706}
2015-10-18T20:14:00.161Z c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 recordParams: [object Object]
END RequestId: c3f9e9d3-75d4-11e5-a597-f7dcab9cd666
REPORT RequestId: c3f9e9d3-75d4-11e5-a597-f7dcab9cd666 Duration: 1258.07 ms Billed Duration: 1300 ms Memory Size: 128 MB Max Memory Used: 15 MB
"OK"
附:我有一个与Lambda函数关联的IAM角色,该角色配置了策略以从S3读取以及写入Kinesis。
我注意到每一对执行(不是所有的执行),日志输出是不同的,并且包含以下错误: [ResourceNotFoundException:在帐户8下流my_firehose ********** *未找到。] 我不确定为什么 - 流已创建且处于活动状态... – littleK