AWS
GCS
gcp
NiFi

AWS S3 にデータを蓄積しながら、Google Cloud Storage にもデータを蓄積しよう

前回は、Apache NiFi を使って、GCP GCS にデータを蓄積する方法を紹介しました。

今回は、「異なる環境でデータフローを管理したい」「データ基盤環境を徐々に移行したい」という要望があるときに、Apache NiFi の "Site to Site" という機能が、とっても便利なので紹介します。ここでは、AWS S3 にデータを書き込みながら、同じデータを Google Cloud Storage (GCS) に書き込むようなデータフローを試してみたいと思います。

nifi_aws-gcp.png
(図には、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 をドラッグ・アンド・ドロップし、作成
     2018-03-26 23.14.55.png

  • Input port processor と PutGCSObject Processor を接続
     2018-03-26 23.35.04.png

  • すべての Processor を実行し、正しく動作しているか確認

AWS 側の設定

  • Apache NiFi と Google Cloud Storage の連携 を参考に NiFi をインストール

  • AWS のセキュリティグループの設定で、NiFi にアクセスするポートをオープン(ここでは デフォルト: 8080 を使用)

  • GenerateFlowFile を作成
    GenerateFlowFile Processor をドラッグ・アンド・ドロップし、作成

  • Remote Process Group を作成
    Remote Process Group Processor をドラッグ・アンド・ドロップし、URLs を設定
    URLs は相手側のインスタンスです。
     2018-03-26 23.46.46.png

  • PutS3Object Processor を作成
    PutS3Object Processor をドラッグ・アンド・ドロップし、BucketAccess KeySecret Key を設定
     2018-03-26 23.37.07.png

  • GenerateFlowFile Processor と PutS3Object Processor を接続
     2018-03-26 10.57.22.png

  • Remote Process Group を右クリックし、Enable transmission をクリックして、Remote Process Group Processor を有効に
     2018-03-26 23.22.53.png

  • すべての Processor を実行し、AWS S3 と GCS にデータが正しく書き込まれているか確認

少し、はしょって書いているので、不明な点があれば、 @kkitase まで。

以上