1

最初は、簡略化されたコールバックメソッドが正常に動作します。今、私はAWSのdynamoDBに問い合わせるために約束を使用したいと思います。 thisを参照してください。PromiseでAWS SDKを使用する方法

ただし、常に500内部サーバーエラー。 私はlambdaとnode.jsを使います。私は何かが恋しいですか?

Handler.js your referenceからコピー

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

CloudWatchログにエラーメッセージはありませんか? –

答えて

1

:デフォルトでは

は、JavaScript用AWS SDKは、グローバルに定義された約束の機能をチェックします。見つかった場合は、AWS.Requestオブジェクトにpromise()メソッドを追加します。 Internet Explorerや以前のバージョンのNode.jsなどの環境では、約束をネイティブにサポートしていません。 AWS.config.setPromisesDependency()メソッドを使用してPromiseコンストラクタを指定できます。

Node.js 4.3環境を使用しているので、既に約束をサポートしているので、setPromiseDependecy()関数を呼び出す必要はありません。私が疑うのは、null引数を指定して関数を呼び出すので、AWS SDKは新しいプロミスを作成しようとするとNPEを投げてしまい、結果として500のエラーが発生するということです。私のアドバイスは、単にこの関数呼び出しを削除することです。

+0

ありがとう、問題は解決しました! – Jim

関連する問題