AWS CLIを使用してDynamoDBのテーブルから特定の条件に基づいてデータを取得するには、aws dynamodb query または aws dynamodb scan コマンドを使用します。今回は、targetDataTypeが”1″のレコードをスキャンし、その中でupdateDtの最新の日付を取得するシナリオを想定しています。
以下にその手順を示します。
- スキャンを使用して
targetDataTypeが”1″のレコードを取得する:
aws dynamodb scan \
--table-name Aテーブル \
--filter-expression "targetDataType = :targetDataTypeValue" \
--expression-attribute-values '{":targetDataTypeValue":{"S":"1"}}' \
--projection-expression "targetDataType, updateDt"
- 取得した結果をソートして最新の日付を確認する:
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オプションで必要な属性(targetDataTypeとupdateDt)のみを取得します。jqコマンドを使用して、取得した結果をupdateDtでソートし、最新の日付を取得します。
注意点として、updateDt が文字列として格納されている場合、適切な日付形式(例:ISO 8601形式)であることを確認してください。そうでない場合、文字列としてのソートが期待通りに動作しない可能性があります。

コメント