aws lambda DynamoDBから最新のレコードを指定した件数取得する

まず、lambda関数でdynamoDB内のレコードを取得する場合には、取得される順番が取得ごとに異なってしまうため、DynamoDBでソートキーを決め、順番が固定にされる必要があります。

もし、ソートキーを設定できていない方は、こちらの記事を参考にしてください。

 

最新のレコードを取得するには、ソートキーを降順に取得します。

そこから、取得する件数を指定すれば、「最新のレコードを指定した件数取得」することが可能です。

では、サンプルを見ていきましょう。

 

const AWS = require('aws-sdk');
const dynamo = new AWS.DynamoDB.DocumentClient();

exports.handler = (event, context, callback) => {
  var table = テーブル名;
  var limit  = 取得レコード数;
  const params = {
    TableName: table,
    Limit : limit, 
    ScanIndexForward:false,
  };
  dynamo.query(params, function(err, data) {
    data.Items.sort(function(a, b) {
      if (a.id > b.id) {
          return 1;
      } else {
          return -1;
      }
    })
    if (err) {
      context.fail(err); // エラー時
    } else {
      context.succeed(data); // 正常時
    }
  });
};

 

params変数に

Limitを指定することで、取得数の上限を決めます。

ScanIndexForwardにfalseを指定し、降順でデータを取得することができます。

 

関連書籍

 

コメントを残す

CAPTCHA