AWS Data Pipelineを利用したAmazon DynamoDBのエクスポートについて
はじめに
本記事では、まずAWS Data Pipelineと Amazon DynamoDBの概要と利点について紹介し、その後、AWS Data PipelineとAmazon DynamoDBの統合ついて紹介します。
AWS Data Pipelineとは
AWS Data Pipelineは、AWSのコンピューティングサービスやストレージサービス、オンプレミス間で信頼性の高いデータ処理やデータ移動を自動化するウェブサービスです。以下では、6つの利点を紹介します。
1.信頼性
(設計上の対策)
AWS Data Pipelineは、高可用性を備えた分散型インフラストラクチャ上に構築されています。これにより、アクティビティ実行における高い耐障害性が得られます。
(障害発生時の対策)
アクティビティロジックやデータソースに障害が発生した場合は、AWS Data Pipelineが自動的にアクティビティを再試行します。失敗が続くと、AWS Data Pipelineは失敗通知をAmazon SNS経由で送信します。また、Amazon SNSでは失敗だけでなく、正常実行や計画したアクティビティの遅延についても通知が行われるように設定することができます。
2.ユーザビリティ
AWS Data Pipelineでは、使いやいように以下の工夫がされています。
- ドラッグアンドドロップで操作できるコンソールによって、簡単にパイプラインの作成が可能
- パイプラインテンプレートのライブラリを提供
まず1つ目については、よく使用される前提条件がサービスに組み込まれているため、前提条件を使用するための追加のロジックの記入が不要です。つまり、Amazon S3バケットの名前とチェックするファイルのパスを入力するだけでAmazon S3のファイルの有無を確認でき、残りの作業はAWS Data Pipelineが行います。
2つ目については、このテンプレートを使用することで、以下のような複雑なユースケースのパイプラインも簡単に作成できます。
規則的なログファイルの処理、Amazon S3へのデータのアーカイブ、SQLクエリの定期的な実行
3.フレキシビリティ
AWS Data Pipelineでは、以下のことができます。
- スケジュールの設定、依存関係の追跡、エラー処理などの機能の利用
- AWSが提供しているアクティビティあ前提条件の使用
- ユーザー独自のカスタムアクティビティやカスタム前提条件の記述
これにより、AWS Data Pipelineを設定することで以下のアクションをとらせることができます。
- Amazon EMRのジョブの実行
- データベースに対するSQLクエリの直接実行
- Amazon EC2やユーザーのデータセンターで稼働するカスタムアプリケーションの実行
AWS Data Pipelineでは、アプリケーションロジックを確実にスケジュール設定して実行するための複雑な作業が不要で、高機能なカスタムパイプラインを作成して、データの分析や処理を行うことができるようになります。
4.スケーラブル
フレキシブルな設計がされているAWS Data Pipelineでは、大量のファイルの処理を1つの処理と同じように簡単に行うことができます。つまり、以下に示す、どの場合についても簡単に送信作業で行うことができます。
- 1台のマシンへの送信、多数のマシンへの送信
- シリアル送信、パラレル送信
5.コスト
AWS Data Pipelineは、使用コストが安価な上に、新規利用者を対象に以下の無料利用枠が提供されています。
- AWSで実行する低頻度の前提条件3つ
- AWSで実行する低頻度のアクティビティ5つ
ここで、低頻度とは実行スケジュールが1回/日以下のものを指します。
6.透過性
ユーザーは、ビジネスロジックを実行するコンピューティングリソースのコントロール権を所有しています。そのため、容易にロジックの拡張とデバッグを行うことができます。
また、実行ログ全体が自動的にAmazon S3に送信されるため、パイプラインで起きたことについて永続的で詳細なレコードを取得できます。
Amazon DynamoDBとは
Amazon DynamoDBは、規模に関係なく数ミリ秒台のパフォーマンスを実現する、高速でフレキシブルなNoSQLデータベースサービスです。以下では、3つの利点を紹介します。
1.スケールに応じたパフォーマンス
Amazon DynamoDBは、前述のように、規模に関係なく一貫した数ミリ秒台の応答時間を実現しています。また、レイテンシーがマイクロ秒の高速なアクセスを必要とするユースケースのために、DynamoDB Acceleratorでは、フルマネージド型のインメモリキャッシュを提供しています。
DynamoDB グローバルテーブルでは、グローバルに分散しているアプリケーションのデータへローカルかつ高速にアクセスできるように、複数のAWSリージョン間でデータをレプリケートしています。
2.サーバーレス
Amazon DynamoDBは、サーバーレスのため、サーバー管理が不要です。Amazon DynamoDBには、可用性とフォールトトレランス機能が組み込まれているため、自動的に、テーブルをスケールアップ/ダウンして容量を調整し、パフォーマンスを維持してくれます。
またコストについて、Amazon DynamoDBでは、プロビジョニング済みとオンデマンドのキャパシティモードがいずれも使用できます。そのため、ワークロードごとに容量を指定する、もしくは使用するリソース分のみを支払うことでコストを最適化できます
3.エンタープライズ対応
Amazon DynamoDBは、ACIDトランザクションをサポートしています。これにより、ビジネスクリティカルなアプリケーションを大規模に構築することができます。Amazon DynamoDBは、デフォルトで全てのデータを暗号化しており、全てのテーブルに対してきめ細かいIDとアクセスコントロールを提供しています。
数百TBのデータを完全にバックアップして、直前の35日間の任意の時点に復元できます。これ関わるパフォーマンスへの影響やダウンタイムはありません。また、Amazon DynamoDBは、可用性を保証するためのサービスレベルアグリーメントでもサポートされています。
AWS Data PipelineとAmazon DynamoDBの統合
AWS Data Pipelineを使用すると、DynamoDBテーブルのエクスポート/インポートが可能になります。これにより、Amazon DynamoDBのデータをAmazon S3へバックアップすることができます。ここで、DynamoDBテーブルのエクスポート/インポートで利用するAWSサービスと役割を整理します。
・AWS Data Pipeline
エクスポート/インポートのワークフローの管理
・Amazon S3
Amazon DynamoDBに対してエクスポート/インポートするデータを格納
・Amazon EMR
Amazon S3とAmazon DynamoDBの間で読み込みと書き込みを実行
したがって、AWS Data Pipelineを使用したDynamoDBテーブルのエクスポート/インポートには、上記のサービスを利用するための追加料金が発生します。
以下でエクスポートを行うまでの手順を紹介します。
事前準備
・AWS Data PipelineのAmazon IAMロールの作成
次の2つを作成します。
1.DataPipelineDefaultRole ー パイプラインによって自動的に実行されるアクション
ロールの作成時に自動的にアタッチされるポリシー:AWSDataPipelineRole
2.DataPipelineDefaultResourceRole ー パイプラインによって自動的にプロビジョニングされるAWSリソース
ロールの作成時に自動的にアタッチされるポリシー:AmazonEC2RoleForDataPipelineRole
・Amazon S3バケットの作成
Amazon DynamoDBからAmazon S3へのエクスポート
エクスポートの方法として、Amazon DynamoDBのコンソールからテーブルを選択し、[アクション]→[エクスポート]と選択して進める方法もありますが、本記事では、AWS Data Pipelineコンソールから進める方法を紹介します。
1.AWS Data Pipelineコンソールを開きます。
2.パイプラインの有無によって次を選択します。
- すでに現在のAWSリージョンにパイプラインが無い場合:[今すぐ始める]を選択
- 1つ以上のパイプラインがある場合:[Create new pipeline]を選択
3.パイプラインの作成ページで各種設定を行います。
- [Name]フィールドでパイプラインの名前設定
- [Source]パラメータで、[Build using a template]と[Export DynamoDB table to S3]を選択
- [Source DynamoDB table name]フィールドに、エクスポートするDynamoDBテーブルの名前を入力
- [Output S3 Folder]テキストボックスに、エクスポートファイルが書き込まれるAmazon S3のURLを入力
- [S3 location for logs]テキストボックスに、エキスポート用のログファイルが書き込まれるAmazon S3のURLを入力
ここでの注意点は、[S3 Log Folder]のURLは、4つ目の[Output S3 Folder]と同じである点と、ログファイルをAmazon S3バケットの最上位に書き込むことができない点です。
4.全ての設定が完了し、確認した後、[Active]をクリックします。
これにより、パイプラインが作成・実行されます。エクスポートによって出力されたファイル名は、拡張子なしの識別子の値です。
インポートについては、前述のエクスポートのステップ3における[Source]パラメータの選択を[Import DynamoDB backup data from S3]にするといったように、エクスポートの手順と大きな違いはありません。
まとめ
本記事では、まずAWS Data Pipelineと Amazon DynamoDBの概要と利点について紹介し、その後、AWS Data PipelineとAmazon DynamoDBの統合について、データのエクスポートを中心に紹介しました。AWS Data PipelineとAmazon DynamoDBの統合することで、バッグ発生時のデータの復元や、マルチリージョンアプリケーションをサポートするためのAmazon DynamoDBのデータ連携などにも活用できます。