私は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
ログを確認しましたか? AWSコンソールでラムダ機能をクリックしてから、[監視]タブをクリックし、[View in Cloudwatch]をクリックします。一番上の項目が最新の実行ログになります。 – Stu
また、ハンドラはどのように設定されていますか? – Stu
あなたのハンドラ関数はオプションでコールバックを引数として取ることができますが、あなたはイベントとコンテキストを取らなければならないと思います。このような '関数(イベント、コンテキスト、コールバック)' – Stu