awscli2

AWS CLIを使用してDynamoDBのテーブルから特定の条件に基づいてデータを取得するには、aws dynamodb query または aws dynamodb scan コマンドを使用します。今回は、targetDataTypeが”1″のレコードをスキャンし、その中でupdateDtの最新の日付を取得するシナリオを想定しています。

以下にその手順を示します。

  1. スキャンを使用して targetDataType が”1″のレコードを取得する:
   aws dynamodb scan \
       --table-name Aテーブル \
       --filter-expression "targetDataType = :targetDataTypeValue" \
       --expression-attribute-values '{":targetDataTypeValue":{"S":"1"}}' \
       --projection-expression "targetDataType, updateDt"
  1. 取得した結果をソートして最新の日付を確認する:
    DynamoDBのスキャン結果はJSON形式で返されるため、これを処理して最新の日付を取得する必要があります。以下は、jq コマンドを使用して最新の日付を取得する例です。
   aws dynamodb scan \
       --table-name Aテーブル \
       --filter-expression "targetDataType = :targetDataTypeValue" \
       --expression-attribute-values '{":targetDataTypeValue":{"S":"1"}}' \
       --projection-expression "targetDataType, updateDt" \
       --output json | jq -r '.Items | sort_by(.updateDt.S) | last | .updateDt.S'

このコマンドは以下のことを行います:

  • aws dynamodb scan コマンドで targetDataType が”1″のレコードをスキャンします。
  • --filter-expression オプションで targetDataType が”1″のものをフィルタリングします。
  • --expression-attribute-values でフィルタ式に必要な値を指定します。
  • --projection-expression オプションで必要な属性(targetDataTypeupdateDt)のみを取得します。
  • jq コマンドを使用して、取得した結果を updateDt でソートし、最新の日付を取得します。

注意点として、updateDt が文字列として格納されている場合、適切な日付形式(例:ISO 8601形式)であることを確認してください。そうでない場合、文字列としてのソートが期待通りに動作しない可能性があります。

コメント

タイトルとURLをコピーしました