こんにちは。クラウドソリューション事業部の石垣です。
Amazon DynamoDB(以下、DynamoDBと表記します)にCSVファイルからテストデータをインポートしたい時に使えそうなツールを見つけましたのでご紹介します。第2弾です。
ちなみに前回のご紹介は以下です。
https://www.seeds-std.co.jp/blog/creators/2024-08-28-csv-to-dynamodb/
NoSQL Workbenchの紹介
今回使用したのはNoSQL Workbenchとなります。AWSの公式ドキュメントDynamoDB Developers GuideにおいてもCSVからのサンプルデータのインポートにNoSQL Workbenchを使用する記載があります。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/workbench.Visualizer.ImportCSV.htmlMySQL WorkbenchのようなRDBMSのGUIクライアントツールのDynamoDB版という感じのGUIツールとなっています。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/workbench.htmlNoSQL Workbench は、DynamoDB テーブルの設計、作成、クエリ、管理に役立つデータモデリング、データ可視化、クエリ開発といった特徴を提供する視覚的開発ツールです。
使ってみる
では、さっそく使っていきましょう。
ダウンロード・インストール
ダウンロード・インストールはそれぞれ公式ドキュメントにしたがって適宜実施します。
ダウンロード:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/workbench.settingup.html
インストール:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/workbench.settingup.html
ローカルでのテーブル作成
まずはデータモデルを作成します。(この時点ではまだローカルでの作業です)
Make model from scrachのほう選択。
情報を入力してCreate。
次にテーブルを作成します。
この時にこの後インポートするCSVファイルにあわせてother attributesにスキーマ情報を登録しておきます。(これが本来スキーマレスなDynamoDBにはない設定項目ですね)
空のテーブルができました。(まだローカルです)
CSVファイルインポート
次にCSVファイルのデータを入れていきます。
まずVisualizerにて先ほど作成したデータモデル>テーブルを選択して、Edit data。
データのEdit画面でImport CSV file選択。
データが入りました。
AWSアカウントへのデプロイ
次にローカルで作成したテーブルをAWSの環境にデプロイします。
事前に接続確認しておきます。
Operation builderのActive connectionsに~/.aws/credentialsに記載されているプロファイルがすでに並んでいるかと思います。
今回使用するプロファイルを選択して試しにOpenしてみます。(AWS IAM Identity Centerから取得できる一時キーを使用する場合はこの時点で取得してcredentialsを最新化しておきます)
接続したら、対象のAWSアカウント上のテーブルが参照等できることを確認します。(これはこれで便利ですね)
では、先ほど作成したテーブルをコミットします。
Visualizerのほうに戻って、対象のデータモデル>テーブルを選択してCommit to Amazon DyanamoDBから実施します。
先ほど接続確認済みのプロファイルを選択してCommitします。
先ほど作成したSampleImportDataテーブルが無事作成されています。
データのほうも問題なく入っています。
Item Type(スキーマ)も設定した通りですね。
注意点
AWSアカウントと接続して、データをスキャンしたりインポートする際には、読み込みや書き込みのCU(キャパシティユニット)を使用するのでそこだけ要注意です(ローカルからツール越しに触っていると意識しにくいところかと思います)。
一応NoSQL Workbenchの画面の下に消費したCUを表示してくれています。
感想など
前回使用したcsv-to-dynamodbのLambdaを使用したものより直感的に作業できそうな感じですね。行数(アイテム数)が多いと作業が複数回になって手間ですが、100行程度のテストデータには使っていけそうです。(CSVファイルのインポートは1回につき150行の制限あり)
CSVファイルインポート用途だけでなく、データ確認・データ修正等でも使用できそうですね(できるだけデータ修正は運用としてやりたくない作業ですが)。