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」などのサービスへのアクセスを許可
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_role1.png)
DataPipelineDefaultRole
では1
を選択。
DataPipelineDefaultResourceRole
では2
を選択。
2つのIAMロールを作成しました。
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_role2.png)
S3バケットの作成
Export先のS3バケットを作成しておきます。
ここでは例として dynamodb-export-wakuwaku-sample
というバケットを作成しました。
Export
パイプラインの設定
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_export_1.png)
Data Pipelineの管理画面を開き、Get started now
をクリックします。
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_export_2.png)
Name
にパイプラインの名前を入力します。
Source
にExport DynamoDB table to S3
を指定します。
Source DynamoDB table name
にエクスポートしたいテーブル名を指定します。
Output S3 folder
にエクスポート先となるS3バケットを指定します。
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_export_3.png)
Schedule
今回、スケジューリング設定はしませんが、ここで設定しておくことができます。
Pipeline Configuration
今回、ログ出力はしませんが、トラブル対応としてログ出力しておいたほうが安心です。
Security/Access
先ほど作成したIAMロールを選択しています。
設定が完了したらAcrivate
をクリックします。
パイプラインの生成完了 & 実行
パイプラインが生成されました。
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_export_4-1024x159.png)
Data PipelineのStatusについては下記ページにて確認できます。
パイプラインの実行完了
エクスポート処理が完了しました。今回、DynamoDBのデータ量は5項目しかなかったのですが、全体の処理に10分ほど時間がかかりました。
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_export_5.png)
以下のようにS3にエクスポートされました。
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_export_6.png)
Import
Import先のDynamoDBテーブル作成
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_import_1.png)
Import先のDynamoDBテーブルを作っておく必要があります(キースキーマは同じにする)。
ここでは、users-import
というテーブルを作成しました。
パイプラインの設定
![](http://www.wakuwakubank.com/wp-content/uploads/694-aws-data-pipeline-dynamodb_import_2.png)
Name
にパイプラインの名前を入力します。
Source
にImport DynamoDB backup data from S3
を指定します。
Target DynamoDB table name
にインポート先のテーブル名を指定します。
Input S3 folder
にインポート元となるS3バケットのFolderを指定します。
その他はExportのときと同じ設定で、Acrivate
をクリックすると、users-import
にデータがimportされます。