当我测试我的aws lambda时,我得到了一个TypeError:无法读取未定义的属性'0‘。代码是
'use strict';
const snsPublisher = require('./snsPublisher');
exports.handler = (event, context, callback) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
const message = event.Records[0].Sns.Message;
console.log('From SNS:', message);
callback(null, message);
};
module.exports.snsLamdbaTriggered = (event, context, callback) => {
var topic = event.Records[0].Sns.TopicArn;
var message = event.Records[0].Sns.Message;
console.log(topic + ' ' + message);
callback(null, { message: 'SNS lamdba was triggered from the topic ' + topic + ' with message ' + message , event });
};当我改变括号内的值时,我仍然得到相同的错误。有人知道问题出在哪里吗?
发布于 2018-02-16 04:12:17
使用SNS调用lambda函数时,该函数需要一个具有特定属性的事件对象。因此,“测试”您的lambda函数将失败,除非您配置您的lambda测试事件看起来与SNS event完全相同,例如:
{
"Records": [
{
"EventVersion": "1.0",
"EventSubscriptionArn": eventsubscriptionarn,
"EventSource": "aws:sns",
"Sns": {
"SignatureVersion": "1",
"Timestamp": "1970-01-01T00:00:00.000Z",
"Signature": "EXAMPLE",
"SigningCertUrl": "EXAMPLE",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"Message": "Hello from SNS!",
"MessageAttributes": {
"Test": {
"Type": "String",
"Value": "TestString"
},
"TestBinary": {
"Type": "Binary",
"Value": "TestBinary"
}
},
"Type": "Notification",
"UnsubscribeUrl": "EXAMPLE",
"TopicArn": topicarn,
"Subject": "TestInvoke"
}
}
]
}https://stackoverflow.com/questions/48814144
复制相似问题