Cloud Service
AWS Data Pipeline
定期的なデータの移動・変換を、依存関係とリトライ込みでスケジュール実行できるワークフロー管理サービス。S3・RDS・DynamoDB・EMR 間のバッチ処理を自動化する従来型の AWS Data Pipeline。
- 1.データの移動と変換を、スケジュールと依存関係つきのパイプラインとして定義し自動実行する。
- 2.前提条件・リトライ・失敗通知を備え、定期バッチや EMR 連携のワークフローに向く。
- 3.新規採用は推奨されず、現在は Glue や Step Functions など後継サービスへの移行が基本。
解決する課題
データを定期的にある場所から別の場所へ移し、途中で変換する「バッチ処理のワークフロー」を自前で組むと、スケジュール実行、ジョブ間の依存関係、失敗時のリトライ、計算リソースの確保といった作業を個別に作り込む必要があります。AWS Data Pipeline はこれらを1つのパイプライン定義に集約します。
- データの移動・変換の処理をスケジュールに従って定期実行する
- 処理どうしの依存関係を定義し、前段が完了してから後段を走らせる
- 失敗時のリトライや通知を組み込み、一時的な障害を吸収する
- 処理に必要な EC2 や EMR クラスタを自動で起動・終了し、計算リソースを用意する
S3・RDS・DynamoDB・Redshift・EMR の間で定期的にデータを動かすバッチ、ログの集計、DynamoDB のバックアップといった用途で使われてきました。なお現在は新規採用が推奨されず、後継サービスへの移行が基本である点に注意が必要です。
AWS Data Pipeline は新機能の追加が止まったメンテナンス段階のサービスです。新規構築では Glue・Step Functions・MWAA(Managed Workflows for Apache Airflow)などの後継を検討し、既存パイプラインは移行を計画するのが基本方針です。
主要概念と用語
- パイプライン(Pipeline): データ処理ワークフロー全体を表す入れ物。複数のアクティビティと依存関係をまとめて定義する
- パイプライン定義(Definition): パイプラインの構成を JSON 形式で記述したもの。各構成要素とその関係を宣言的に書く
- アクティビティ(Activity): 実際の処理単位。データのコピー、SQL の実行、EMR ジョブ、シェルコマンド実行などの種類がある
- データノード(DataNode): 入力元・出力先のデータの場所。S3、DynamoDB テーブル、RDS/Redshift のデータベースなどを指す
- 前提条件(Precondition): アクティビティを始める前に満たすべき条件。対象データの存在確認などで、満たされるまで待機・再評価する
- リソース(Resource): アクティビティを実行する計算基盤。EC2 インスタンスや EMR クラスタを必要なときに自動で起動・終了する
- スケジュール(Schedule): パイプラインの実行間隔や開始・終了時刻を定義する
- Task Runner: リソース上で動き、割り当てられたタスクを取得して実行するエージェント。自前のオンプレ機にも導入できる
仕様・制限・クォータ
- パイプラインは JSON のパイプライン定義で表現し、コンソール・CLI・SDK から作成・有効化する
- 入出力には S3、DynamoDB、RDS、Redshift などのデータノードを使い、オンプレミスのデータソースも Task Runner 経由で扱える
- 処理に使う EC2 / EMR リソースをマネージドに起動・終了でき、必要時だけ計算資源を確保する
- アカウントあたりのパイプライン数や、1パイプラインのオブジェクト数などにサービスクォータがあり、必要に応じて引き上げを申請する
- リージョンによっては提供されない場合があり、新規パイプライン作成が制限される環境もある
- 具体的な上限値・単価は変動するため、利用時に公式の最新情報を確認する
内部の仕組み
Data Pipeline は「スケジューラ」と「実行エージェント」を分離した構成で動きます。
- ユーザーが有効化したパイプライン定義をマネージドなサービスが解釈し、スケジュールと依存関係に従って実行すべきタスクを生成する
- 各アクティビティは前提条件が満たされたかを評価し、満たされて初めて実行対象になる
- 実行は Task Runner が担う。Data Pipeline がマネージドに起動した EC2/EMR 上で動くほか、ユーザーが自前のサーバーに Task Runner を導入して実行させることもできる
- タスクが失敗すると、定義したリトライ回数まで再実行し、最終的に失敗すれば設定に応じて SNS 通知などを発火する
- 計算リソースはアクティビティのために起動され、処理が終わると自動的に終了するため、待機中のインスタンス費用を抑えられる
入力データがまだ揃っていない時間に処理を走らせても無駄になります。前提条件(対象データの存在確認など)を設定すると、条件が満たされるまで待ってから実行でき、空振りや不完全な処理を避けられます。
設計パターン / ベストプラクティス
- 依存関係を明示する: アクティビティ間の前後関係をパイプライン定義に書き、順序の取り違えや競合を防ぐ
- 前提条件を活用する: 入力データの存在を確認してから処理を開始し、空振りや不完全な入力での実行を避ける
- リトライと通知を設定する: 一時障害はリトライで吸収し、最終的な失敗は SNS で運用者へ通知する
- オンデマンドにリソースを使う: 処理に必要なときだけ EC2/EMR を起動・終了させ、待機コストを抑える
- 冪等な処理にする: リトライや再実行で同じデータを二重処理しても結果が壊れないよう、出力を上書きや分割で設計する
- 後継への移行を見据える: 新規ワークフローは Glue・Step Functions・MWAA で組み、既存パイプラインも段階的に移す
運用・監視
- パイプラインの実行状況・各アクティビティの成否はコンソールや API でステータスとして確認する
- 失敗時は SNS で通知を飛ばし、運用者が早期に検知できるようにする
- リトライ回数やタイムアウトを設定し、一時障害を吸収しつつ無限の再試行を防ぐ
- Task Runner やリソース上の処理ログを残し、失敗時の原因調査に使う
- API 操作の監査は CloudTrail で行う
- メンテナンス段階のサービスのため、長期運用では後継サービスへの移行計画を運用タスクに含める
コスト
- 課金は主にパイプライン中のアクティビティ実行頻度(実行が低頻度か高頻度か)に基づく従量制で、有効でも非アクティブなパイプラインには別の料金区分がある
- パイプラインが起動する EC2 や EMR の利用料は、それぞれのサービス料金として別途発生する
- 処理を必要なときだけ動かし、リソースを使い終わったら終了させるほど、無駄なインスタンス費用を抑えられる
- 変動する具体的な単価は公式の料金ページで確認する
Data Pipeline 自体の料金に加え、起動した EC2/EMR の費用が別途かかります。クラスタを起動したまま放置すると想定外の課金につながるため、処理後に確実に終了させる設定が重要です。
セキュリティ
- アクセス制御は IAM で行い、パイプラインの操作権限と、リソースが処理対象にアクセスするためのロールを最小権限で分けて付与する
- データノードへのアクセスは、対象サービス(S3・DynamoDB・RDS など)側の暗号化と権限設定に従う
- 通信は TLS で保護し、VPC 内のリソースへはネットワーク設定で到達経路を絞る
- データベース接続などの認証情報は直書きせず、安全な方法で受け渡す
- API 操作は CloudTrail で記録し、誰がいつパイプラインを変更したかを追跡する
パイプライン定義やスクリプトにデータベースのパスワードやアクセスキーを直書きするのは避けてください。IAM ロールで権限を渡し、認証情報の漏洩リスクを抑えます。
関連サービス・比較
サーバーレスな ETL とデータ統合を担う AWS Glue とよく比較されます。新規のデータ変換ワークフローでは、運用負荷の低い Glue やワークフロー制御に優れた Step Functions が推奨され、Data Pipeline は既存資産の維持・移行対象という位置づけです。
| 観点 | Data Pipeline | Glue |
|---|---|---|
| 位置づけ | メンテナンス段階の旧来サービス | 現行のデータ統合サービス |
| 実行基盤 | EC2/EMRを起動して実行 | サーバーレス(管理不要) |
| 主な役割 | 定期バッチの移動・変換と依存制御 | ETLとデータカタログ化 |
| 新規採用 | 非推奨(後継へ移行) | 推奨される選択肢 |
ハンズオン / CLI例
# 空のパイプラインを作成し、パイプラインIDを取得
aws datapipeline create-pipeline \
--name my-batch-pipeline \
--unique-id my-batch-pipeline-token
# JSONで書いたパイプライン定義を登録(定義の構文を検証)
aws datapipeline put-pipeline-definition \
--pipeline-id df-EXAMPLE1234567890 \
--pipeline-definition file://pipeline-def.json
# パイプラインを有効化してスケジュール実行を開始
aws datapipeline activate-pipeline \
--pipeline-id df-EXAMPLE1234567890
# 実行状況(各オブジェクトのステータス)を確認
aws datapipeline list-pipelines
AWS Service
AWS Data Pipelineを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
分析
比較で見る軸
クラウド: AWS / カテゴリ: 分析 / 難易度: intermediate
導入後に効く点
前提条件・リトライ・失敗通知を備え、定期バッチや EMR 連携のワークフローに向く。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- 分析
- 難易度
- intermediate
- 関連資格
- DEA-C01 / SAP-C02
- 設計柱
- operational / reliability
判断チェックリスト
- 自社の用途が「分析 / operational」に近いか確認する。
- 強みである「データの移動と変換を、スケジュールと依存関係つきのパイプラインとして定義し自動実行する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。