[英]JavaScript TypeError
我在測試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 });
};
當我更改方括號內的值時,我仍然繼續遇到相同的錯誤。 有人知道問題可能在哪里嗎?
使用SNS調用lambda函數時,該函數需要具有特定屬性的事件對象 。 因此,除非將lambda測試事件配置為與SNS事件完全相同,否則“測試”您的lambda函數將失敗,例如:
{
"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"
}
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.