簡體   English   中英

JavaScript TypeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM