2017-12-04 10 views
0

私はDynamoDBデータベースからアイテムを取得しようとしています。私のコードが現在書かれているように、私はDynamoDBからデータを取得できません。私はテストからわかる限り、私のコールバックは呼び出されていないので、何か間違っていなければなりません。AWS LambdaのDynamoDBオブジェクトでgetItem()を呼び出すと、コールバックが実行されないのはなぜですか?

私は今朝この1日を過ごしました。私は今朝起きて以来、私はこれをうまくやっていませんでした。

私がここで間違っていることについて誰でも洞察を与えることができれば、とても感謝しています。みんなに感謝します!

最終ノート:ラムダ関数自体のタイムアウトは5分に設定されています。だから私はラムダ関数がdbクエリが戻ることができる前にタイムアウトしているとは思わない。私がこの機能を実行すると、ただちに終了します。

const AWS = require('aws-sdk'); 

const dynamodb = new AWS.DynamoDB(); 
var response = null; 
var test = false; 

function getFromDB(callback) { 
    const params = { 
    TableName: process.env['DB_TABLE_NAME'] // evaluates to 'test-table', 
    Key: { 
     "id": { 
     S: postId // evaluates to a big string, pulling it in from an SNS message. Verified it with console.log(). It stores the expected value. 
     } 
    } 
    }; 
    dynamodb.getItem(params, function(err, data) { 
    if (err) callback(data, true);   // an error occurred 
    else  callback(data, true);   // successful response 
    }); 
} 

getFromDB((data, isCalled) => { 
    response = data; 
    test = isCalled; 
}); 

console.log(data); // evaluates to null 
console.log(test); // evaluates to false 
+0

ログを確認しましたか? AWSコンソールでラムダ機能をクリックしてから、[監視]タブをクリックし、[View in Cloudwatch]をクリックします。一番上の項目が最新の実行ログになります。 – Stu

+0

また、ハンドラはどのように設定されていますか? – Stu

+0

あなたのハンドラ関数はオプションでコールバックを引数として取ることができますが、あなたはイベントとコンテキストを取らなければならないと思います。このような '関数(イベント、コンテキスト、コールバック)' – Stu

答えて

1

SDKをロードしましたか?私は何が起こっているのだと思い含ま地域

+0

はい、SDKが読み込まれました。それを反映させるためにオリジナルの投稿を編集します。 –

+0

私は 'AWS.config.update({region: 'REGION'});'文を含めませんでした。それが私の問題を引き起こしていると思いますか? –

+0

可能です。 Dynamoにはリージョンが必要ですが、デフォルトにはならないとは思いません。しかし、スタックトレースがなければ、あなたの問題が何であるかを知ることは困難です。地域に関する詳細情報が必要な場合はお知らせください。 – Stu

1

ラムダは、関数を呼び出しているが、コールバックを待つつもりはないので、それは考えている:私はEDITはあなたのコードスニペットに

// Load the AWS SDK for Node.js 
var AWS = require('aws-sdk'); 
// Set the region 
AWS.config.update({region: 'REGION'}); 

をそれを見ることができませんそれが完了し、終了します。

私はBluebirdとasync/awaitを使用して同様の問題を抱えて解決したと思います。

必要に応じてコードからスニペットを入力できます

関連する問題