DynamoDBのデータをData Pipelineを利用してエクスポート、インポートする方法を確認します。
利用するAWSリソース
- Data Pipeline
- ワークフローを管理
- S3
- Exportデータの格納先
- EMR
- 分散処理フレームワーク
- 1台の
マスターノード
がコアノード
タスクノード
にジョブを振り分ける Hadoop
Apache Spark
Presto
などの分散処理アプリケーションをサポート
前準備
IAM Roleの作成
下記2つのIAM Roleを作成しておきます。
DataPipelineDefaultRole
- 「Data Pipeline」および「Data Pipeline管理のEMRクラスター」を呼び出すことを許可
DataPipelineDefaultResourceRole
- 「Data Pipelineが起動するEC2インスタンス」に対して「S3」「DynamoDB」などのサービスへのアクセスを許可

DataPipelineDefaultRole
では1
を選択。
DataPipelineDefaultResourceRole
では2
を選択。
2つのIAMロールを作成しました。

S3バケットの作成
Export先のS3バケットを作成しておきます。
ここでは例として dynamodb-export-wakuwaku-sample
というバケットを作成しました。
Export
パイプラインの設定

Data Pipelineの管理画面を開き、Get started now
をクリックします。

Name
にパイプラインの名前を入力します。
Source
にExport DynamoDB table to S3
を指定します。
Source DynamoDB table name
にエクスポートしたいテーブル名を指定します。
Output S3 folder
にエクスポート先となるS3バケットを指定します。

Schedule
今回、スケジューリング設定はしませんが、ここで設定しておくことができます。
Pipeline Configuration
今回、ログ出力はしませんが、トラブル対応としてログ出力しておいたほうが安心です。
Security/Access
先ほど作成したIAMロールを選択しています。
設定が完了したらAcrivate
をクリックします。
パイプラインの生成完了 & 実行
パイプラインが生成されました。

Data PipelineのStatusについては下記ページにて確認できます。
パイプラインの実行完了
エクスポート処理が完了しました。今回、DynamoDBのデータ量は5項目しかなかったのですが、全体の処理に10分ほど時間がかかりました。

以下のようにS3にエクスポートされました。

Import
Import先のDynamoDBテーブル作成

Import先のDynamoDBテーブルを作っておく必要があります(キースキーマは同じにする)。
ここでは、users-import
というテーブルを作成しました。
パイプラインの設定

Name
にパイプラインの名前を入力します。
Source
にImport DynamoDB backup data from S3
を指定します。
Target DynamoDB table name
にインポート先のテーブル名を指定します。
Input S3 folder
にインポート元となるS3バケットのFolderを指定します。
その他はExportのときと同じ設定で、Acrivate
をクリックすると、users-import
にデータがimportされます。