【DataPipelineを触ってみる】DynamoDBからS3へのエクスポートをやってみた

こんにちは、大前です。

DataPipeline を全く触ったことがなかったので、以下の公式チュートリアルに沿って DynamoDB のデータを S3 にエクスポートしてみましたので記事を書いていきます。

AWS Data Pipeline を使用して DynamoDB データをエクスポートおよびインポートする

やってみる

事前準備

Data Pipeline を使う前に何点か事前準備をしておきます。

ロールの作成

Data Pipeline を使用するには、以下の2つのロールが必要です。

  • DataPipelineDefaultRole — パイプラインによって自動的に実行されるアクション。
  • DataPipelineDefaultResourceRole — パイプラインによって自動的にプロビジョニングされる AWS リソース。DynamoDB データのエクスポートとインポートの場合、これらのリソースには Amazon EMR クラスターと、そのクラスターに関連付けられている Amazon EC2 インスタンスが含まれます。

 

IAM のコンソール画面より、ロールを2つ作成しました。

 

DynamoDB テーブルの準備

エクスポートする対象の DynamoDB  テーブルを作成し、以下の様に適当な項目を追加しました。

S3 バケットの準備

DynamoDB データのエクスポート先となる S3 バケットを以下の様に作成しました。

パイプラインを作成

Data Pipeline のコンソール画面より、Create new pipeline を押下しパイプラインの作成画面に遷移します。

今回は以下パラメータを設定し、Activate を押下します。

  • Name ... MyDynamoDBExportPipeline
  • Source ... Build using a template を選択した状態で Export DynamoDB table to S3 を選択
  • Source DynamoDB table name ... エクスポート対象の DynamoDB テーブル名(SampleTable)
  • Output S3 folder ... 出力先の S3 バケット(datapipeline-export)
  • Logging ... ログを出力する S3 バケット(datapipeline-export/logs)

 

Activate を押下してしばらくするとステータスが FINISHED になりました。

 

S3 バケットを見にいってみると日時でフォルダが追加されており、その配下にエクスポートファイルが作成されています。

 

エクスポートファイルの中身を任意のテキストエディタで確認してみたところ、問題なくデータがエクスポートできている様です。


{"Id":{"s":"2"},"text":{"s":"bbb"}}
{"Id":{"s":"1"},"text":{"s":"aaa"}}

パイプラインの中身を見てみる

テンプレートを指定して Data Pipeline を作成しただけでエクスポートが出来てしまいました。

作成されたパイプラインについて少し中身を見てみます。

 

コンソールより、Edit Pipeline を押下します。

 

すると、以下の様な画面が表示されますのでいくつかのノードについて見ていこうと思います。

 

DynamoDBDataNode と S3DataNode は入出力のソース情報を示すノードです。

テーブル名などはパイプライン作成時に指定された値が使用されていることがわかります。

データノード

 

EmrCluster はエクスポート処理を実行するためにプロビジョニングするリソースを定義するノードです。

今回は m3.xlarge が立ち上がって処理を実行している様です。

リソース

 

EmrActivity はエクスポート作業を定義しているノードになります。

EmrActivity という EMR クラスターを実行する定義が選択されています。

アクティビティ

 

 

使用するテンプレートに合わせて上記の様にコンポーネント群を定義してくれる事がわかりました。

まとめ

Data Pipeline を使って DynamoDB から S3 へのエクスポートを試したのち、作成されたパイプラインの中身をみてみました。

 

触る前は Data Pipeline に対して「よくわからん」「難しそう」といったイメージしか持っていませんでしたが、テンプレートがいくつか用意されているので、それらを活用することによって簡単にデータのエクスポート等が実現できそうだと感じました。

また、パイプラインのエディタも見易く、自力でパイプライン定義を作成することになった場合にも大きな抵抗なくキャッチアップ出来そうな感触を持つ事が出来ました。

とりあえず一回触ってみるのは本当に大事だなとしみじみ感じている今日この頃であります。

 

この記事がどなたかのお役にたてば幸いです。

以上、AWS 事業本部の大前でした!