hero_picture
Cover Image for DynamoDBにCSVファイルからテストデータをインポートする その2

DynamoDBにCSVファイルからテストデータをインポートする その2

こんにちは。クラウドソリューション事業部の石垣です。

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.html

MySQL WorkbenchのようなRDBMSのGUIクライアントツールのDynamoDB版という感じのGUIツールとなっています。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/workbench.html
NoSQL 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ファイルインポート用途だけでなく、データ確認・データ修正等でも使用できそうですね(できるだけデータ修正は運用としてやりたくない作業ですが)。