1

Zuerst verwende ich die vereinfachte Callback-Methode. Jetzt möchte ich Versprechen verwenden, um AWS dynamoDB abzufragen. Ich beziehe mich this.So verwenden Sie AWS SDK mit Promise

Aber immer 500 Interner Server Fehler. Ich benutze Lambda und node.js 4.3. Vermisse ich etwas?

handler.js

let AWS = require('aws-sdk'); 
AWS.config.setPromisesDependency(null); 
docClient = new AWS.DynamoDB.DocumentClient(); 

module.exports.handler = (event, context, callback) => { 

    const listObjectPromise = docClient.query(params).promise(); 
    listObjectPromise.then((data) => { 
     return callback(null, data); 
    }).catch((err) => { 
     return callback(err, null); 
    }); 
}; 
+0

Gibt es keine Fehlermeldungen in den CloudWatch-Protokollen? –

Antwort

1

von your reference Kopierte:

standardmäßig für eine global definierte Versprechen Funktion das AWS SDK für JavaScript überprüfen. Falls gefunden, wird die Methode promise() für AWS.Request-Objekte hinzugefügt. Einige Umgebungen, z. B. Internet Explorer oder frühere Versionen von Node.js, unterstützen nativ keine Versprechen. Sie können die AWS.config.setPromisesDependency() -Methode verwenden, um einen Promise-Konstruktor bereitzustellen.

Da Sie eine Node.js 4.3-Umgebung verwenden Sie bereits versprechen Unterstützung haben, das heißt Sie müssen, um die setPromiseDependecy() Funktion nicht aufrufen. Mein Verdacht ist, dass das AWS-SDK eine NPE auslöst, wenn Sie die Funktion mit einem null-Argument aufrufen, wenn es versucht, ein neues Versprechen zu erstellen, das zu dem Fehler 500 führt. Mein Rat ist, diesen Funktionsaufruf einfach zu löschen.

+0

Danke, Problem gelöst! – Jim