DynamoDBでデータのexport/importを行う
Dynamoデータのimportとexport
最近はデータストアとしてDynamoDBを使用する機会が増えました。
高い拡張性を持っており、スループットを動的に変更することもできます。
また、データへのアクセスも速いので、大規模なシステムへの使用にも向いています。
今回はDynamoにテーブルをつくり、大量の初期データを用意する必要があったため、
DynamoDBのexportやimport機能を使用しました。
その方法について紹介します。
テーブルのセットアップ
まずはDynamoDBでテーブルを作成しましょう。
下記のように、my_testという名前で、idをHASHキーとしてテーブルを作成します。
インデックス等はデフォルトのままでいいので、テーブルを作成しましょう。
S3バケットの用意
Dynamoデータをexport/importする際、データの置き場所としてS3を使用します。
適当なバケットを作成しておきましょう。
データのexport
AWSコンソールでmy_testテーブルに対し、適当なテストデータをいくつか登録しておきます。
id | name |
---|---|
1 | taro |
2 | hanako |
3 | mike |
テーブル一覧から「エクスポート/インポート」を選択します。
テーブル(my_test)にチェックをつけ、DynamoDBからエクスポートを選択します。
データのエクスポート/インポートは、AWS Data Pipelineを使用して行います。
最低限、S3出力フォルダーとS3ログフォルダーを指定すればエクスポート可能です。
さきほど作成したバケットのフォルダを指定します。
スケジュールが「ワンタイムエクスポート」になっているのを確認し、
「エクスポートするパイプラインの作成」を押して処理を実行します。
しばらくすると処理が開始します。(処理時間はデータ量に依存)
処理が終了したらS3のバケットを確認してみてください。データが出力されていると思います。
データのimport
「DynamoDBにインポート」ボタンを押せば、指定したテーブルにデータをimportすることができます。
一旦my_testのデータを削除し、エクスポートしたフォルダをS3入力フォルダーに指定して実行してみてください。
先ほどと同じく、AWS Data Pipelineが作成され、データが復元されます。
importするデータを作成する
Dynamoテーブルの初期データを自分であらかじめ作成しておきたいこともあります。
その場合、下記のようなフォーマットのファイルを使用すれば、データをimportすることができます。
※[STX]はテキスト開始制御コード(ASCII 02)、[ETX]はテキスト終結制御コード(ASCII 03)
[STX]id[ETX]{"s":"1"}[STX]name[ETX]{"s":"taro"} [STX]id[ETX]{"s":"2"}[STX]name[ETX]{"s":"hanako"} [STX]id[ETX]{"s":"3"}[STX]name[ETX]{"s":"mike"}
上記ファイルをS3にアップし、「DynamoDBにインポート」を押してアップしたフォルダを指定してみてください。
作成したデータがDynamoDBのテーブルにimportされます。
参考:Verify the Data Export File