DataPipelineでTaskRunnerを利用したい場合の忘備録
はじめに
AWSのDataPipelineでTaskRunnerを利用したい場合に必要なセットアップについて自分用メモ。
TaskRunnerを実行するインスタンスはOSがubuntuだったので今回はubuntuで設定した内容です。
ubuntu環境へのTaskRunnerの設定
- Javaのインストール
sudo apt install default-jre
- インストールされたjavaのバージョン確認(open jdk が1.6以降か確認)
java -version
- taskrunnerをダウンロードする
wget https://s3.amazonaws.com/datapipeline-us-east-1/us-east-1/software/latest/TaskRunner/TaskRunner-1.0.jar
- mysql-connerctor-java-bin.jarをダウンロードする
wget https://s3.amazonaws.com/datapipeline-prod-us-east-1/software/latest/TaskRunner/mysql-connector-java-bin.jar
- taskrunnerを実行するインスタンスに対してIAMロールを付与する
- IAMロールに着けるポリシーは下記のAWSが用意しているものを付与
AmazonEC2RoleforDataPipelineRole
- 他に必要なものは適宜付与
- IAMロールに着けるポリシーは下記のAWSが用意しているものを付与
- datapipeline側の設定変更
- Activityの設定で、runsOnの設定ではなくworkerGroupを設定する。runsOnの設定がある場合、workerGroupの設定があっても無視される
- workerGroupの値はstringであれば rds-to-s3やwg-123dafasfdの形式で問題ない
- DataNodeの設定でも同様にworkerGroupを設定する
- 設定完了後はアクティベートせずに先に下記を実施する
- taskrunnerを起動する
java -jar TaskRunner-1.0.jar --workerGroup=先に指定したworkerGroup名 --region=実行するタスクをプルする対象のサービスリージョン(基本的に日本だと思うのでap-northeast-1) --logUri=s3://taskrunnerの実行ログを置くpath &
- 行末につけた
&
はあってもなくても大丈夫。ただバックグラウンドで起動しておきたかったのでつけただけ
- taskrunnerを起動する
- 最後にdatapipelineをアクティベートして動作していることを確認した
注意点
今回はホームディレクトリに直接両方ともダウンロードして試したが問題なく実行できた。 ただし公式のドキュメントの環境設定手順をみるとディレクトリを作成して、ファイルをダウンロードする必要があるらしい。
バックグラウンドでTaskRunnerを起動しておいて、1時間に1回実行するDataPipelineの検証していると3回目の実行時点でTaskRunnerのプロセスがいなくなっていたので、ここら辺はプロセスのデーモン化やプロセスの監視など何かしら対策が必要そう。
おわりに
基本的はこちらの公式ドキュメントを参考に実施しました。
ただし必要なファイルのダウンロード元のリンクについては変更されていた模様。
公式ドキュメントのリンク先飛んでもリダイレクトされて目的のページにたどり着けなかった。。。 DataPipelineを使うケースは今後ほとんどないかもですが、念のための忘備録でした。