DynamoDBでデータのexport/importを行う

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Dynamoデータのimportとexport

最近はデータストアとしてDynamoDBを使用する機会が増えました。
高い拡張性を持っており、スループットを動的に変更することもできます。
また、データへのアクセスも速いので、大規模なシステムへの使用にも向いています。

今回はDynamoにテーブルをつくり、大量の初期データを用意する必要があったため、
DynamoDBのexportやimport機能を使用しました。
その方法について紹介します。

テーブルのセットアップ

まずはDynamoDBでテーブルを作成しましょう。
下記のように、my_testという名前で、idをHASHキーとしてテーブルを作成します。
dynamo-export1

インデックス等はデフォルトのままでいいので、テーブルを作成しましょう。

S3バケットの用意

Dynamoデータをexport/importする際、データの置き場所としてS3を使用します。
適当なバケットを作成しておきましょう。

データのexport

AWSコンソールでmy_testテーブルに対し、適当なテストデータをいくつか登録しておきます。

id name
1 taro
2 hanako
3 mike

テーブル一覧から「エクスポート/インポート」を選択します。 dynamo-export3

テーブル(my_test)にチェックをつけ、DynamoDBからエクスポートを選択します。
dynamo-export3

データのエクスポート/インポートは、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

参考サイトなど