前回は、Apache NiFi を使って、GCP GCS にデータを蓄積する方法を紹介しました。
今回は、「異なる環境でデータフローを管理したい」「データ基盤環境を徐々に移行したい」という要望があるときに、Apache NiFi の "Site to Site" という機能が、とっても便利なので紹介します。ここでは、AWS S3 にデータを書き込みながら、同じデータを Google Cloud Storage (GCS) に書き込むようなデータフローを試してみたいと思います。
(図には、RedshiftとBigQuery のアイコンがありますが、ここでは試しません。)
GCP 側の設定
-
Apache NiFi と Google Cloud Storage の連携 を参考に NiFi をインストール
-
GCP のファイアウォールで、NiFi の Site to Site で利用するポート(任意のポート)をオープン(ここでは9990 を使用)
-
GCP のファイアウォールで、NiFi にアクセスするポートをオープン(ここでは デフォルト: 8080 を使用)
-
NiFi インスタンスの、nifi.properties 下記のように設定
nifi.remote.input.host=<データを受信する側のホスト>(今回 GCP側)
nifi.remote.input.secure=false
nifi.remote.input.socket.port=9990 (site to site で使用する任意のポート)
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec
-
PutGCSObject Processor をドラッグ・アンド・ドロップし、Apache NiFi と Google Cloud Storage の連携 を参考に設定
-
Input port をドラッグ・アンド・ドロップし、作成

- Input port processor と PutGCSObject Processor を接続

- すべての Processor を実行し、正しく動作しているか確認
AWS 側の設定
-
Apache NiFi と Google Cloud Storage の連携 を参考に NiFi をインストール
-
AWS のセキュリティグループの設定で、NiFi にアクセスするポートをオープン(ここでは デフォルト: 8080 を使用)
-
GenerateFlowFile を作成
GenerateFlowFile Processor をドラッグ・アンド・ドロップし、作成 -
Remote Process Group を作成
Remote Process Group Processor をドラッグ・アンド・ドロップし、URLs
を設定
URLs
は相手側のインスタンスです。

- PutS3Object Processor を作成
PutS3Object Processor をドラッグ・アンド・ドロップし、Bucket
とAccess Key
、Secret Key
を設定

- GenerateFlowFile Processor と PutS3Object Processor を接続

- Remote Process Group を右クリックし、
Enable transmission
をクリックして、Remote Process Group Processor を有効に

- すべての Processor を実行し、AWS S3 と GCS にデータが正しく書き込まれているか確認
少し、はしょって書いているので、不明な点があれば、 @kkitase まで。
以上