Amazon Q を使って、 DynamoDB テーブルの検索クエリを作ってみる
DynamoDB はスキーマを持たない NoSQL なデータベースです。そのため、利用状況の調査のような単発のデータ探索系タスクを依頼された時、どのようなクエリを作るべきかの調査に難航することがあります。
今回は AWS マネージメントコンソールにある Amazon Q と CloudShell を活用して、テーブルの情報を調査する方法を試してみましたので紹介します。
Amazon Q がコマンドを提案してくれる
DynamoDB のコンソールページを開いた状態で Amazon Q に質問すると、現在のコンテキストを理解して最適なコマンドを提案してくれます。今回のケースでは、クエリを実行したいテーブルのページにいる状態で、「How can I get this table schema and indexes by AWS CLI?」と質問してみました。
すると Amazon Q は現在表示されているテーブル情報を読み取って、以下のようなコマンドを提案してくれました。
aws dynamodb describe-table --table-name Site --region us-east-1
AWS マネージメントコンソールの Amazon Q チャットをあまり使ったことがなかったのですが、このように今見ているページの情報を参照した会話ができるのは便利そうです。
CloudShell でその場で実行
AWS マネジメントコンソールには CloudShell が統合されているため、提案されたコマンドをその場ですぐに実行できます。
$ aws dynamodb describe-table --table-name Site --region us-east-1 | jq .
{
"Table": {
"AttributeDefinitions": [
{
"AttributeName": "ID",
"AttributeType": "S"
},
{
"AttributeName": "create_time",
"AttributeType": "S"
}
],
...
}
}
結果をコピペしたい場合や、データを絞り込みたい場合は、 jq
コマンドと併用しましょう。デフォルトの表示では長いレスポンスをスクロールして確認する必要がありますが、jq を使うとコンパクトに全体を把握できて助かります。
Claude との連携で更なる効率化
これだけでも調査はかなり捗ったのですが、さらに取得したテーブルスキーマ情報を Claude に渡すことで、用途に応じた最適なクエリ作成まで提案を受けることができました。
# Claude が提案するクエリ例
aws dynamodb query \
--table-name Site \
--key-condition-expression "ID = :id" \
--expression-attribute-values '{":id":{"S":"example-id"}}'
デジタルキューブでは Backlog 上にてタスクの依頼や進捗の報告などを行うため、AWS マネージメントコンソールにて Amazon Q と CloudShell にて収集したデータに加えて、Backlog MCP を経由してタスクの詳細なども Claude に渡すようにしました。タスクの詳細と DynamoDB のスキーマ情報を元に生成 AI がクエリを提案してくれますので、アイテムを 1 つ 1 つチェックしたり、過去のコードなどを調べる必要もなく、複雑なクエリを作成できます。
まとめ
今回の作業をまとめると、次のような流れです。
- DynamoDB コンソールでテーブルを選択
- Amazon Q にスキーマ取得方法を質問
- 提案されたコマンドを CloudShell で実行
- 結果を Claude に渡してクエリを作成依頼
- 必要に応じて Backlog の課題情報も連携
Amazon Q を使った DynamoDB データ検索は、コンテキストを理解した提案により作業効率を大幅に改善してくれます。CloudShell との組み合わせにより、コンソール上で完結できるのも魅力的です。
さらに Claude や Backlog MCP などと連携することで、単純なデータ取得から複雑な調査業務まで一連の流れを自動化できます。DynamoDB を頻繁に操作する方は、ぜひ試してみてください。
Discussion