0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloud Data Fusion を触ってみた①環境準備編

Last updated at Posted at 2023-07-27

Cloud Data Fusion を触ってみた①環境準備編

はじめに

Google Cloud にはいくつかの ETL サービスが提供されています。

ETL サービスの中でも、Cloud Data Fusion はパイプラインを GUI で作成することができます。

今回は Cloud Data Fusion で Amazon RDS のデータを BigQuery に格納するパイプラインを作成します。
この記事は環境準備編です。

Cloud Data Fusion について

前述したとおり、Cloud Data Fusion は GUI でパイプラインを作成できる ETL サービスです。
パイプラインはバッチ・リアルタイム(おそらくストリームと同義)両方作成できます。
プラグインというパイプライン内のモジュールがあり、豊富な接続先・操作が用意されています。また独自プラグインを作成することもできるとのことです。

検証

ネットワーク周りの準備

事前調査

Data Fusion にはパブリックインスタンスとプライベートインスタンスがあります。

Data Fusion はパイプラインを設計する環境(Data Fusion インスタンス)と実行する環境(Dataproc)が分離しているのですが、
パブリックインスタンスは実行環境がデフォルト VPC ネットワークで生成され、事前準備なく使えるがセキュリティの懸念がある、
プライベートインスタンスは実行環境がユーザーが設定した VPC ネットワークで生成されるので、ファイアウォールのカスタマイズが可能な環境でパイプラインを動かすことができる、
という違いがあります。

わたしがはまった落とし穴が、接続先へ登録する IP アドレスを確認できない、という点です。
Amazon RDS に接続するには接続元のIPを AWS 側のインバウンドグループに登録する必要があります。
ですが、パブリックインスタンスだとパイプライン実行前に IP アドレスを確認できず、また毎回同じアドレスであることが保証されていません。
実際にパブリックインスタンスでパイプラインを実行すると、Dataproc のマスターとワーカーのインスタンスがエフェメラルの外部 IP を持っていることを確認できました。
public_gce一覧.PNG

プライベートインスタンスだと Dataproc クラスタに外部 IP が割り振られません。
Data Fusion のバージョン 6.4 以降だとプライベートインスタンスからインターネットサービスへ接続は可能とドキュメントに書いてありますが、そのときに使用する IP アドレスの詳細は見つけられませんでした。

なのでこの検証では実行環境で Amazon RDS と接続することを目指し、プライベートインスタンスを作成し、Cloud NAT を使ってインターネットサービスとやり取りするように環境を設定しました。

Cloud NAT の作成

公式ドキュメントの Cloud NAT 作成方法をもとに、Data Fusion 実行環境を動かしたい任意の VPC ネットワークに Cloud NAT と Cloud Router を作成しました。

IP アドレスの確認

Cloud NAT を使ってインターネットに出るときの IP アドレスを確認します。
Cloud NAT の IP アドレス割り当てを自動にしていると、Cloud NAT が必要な状態になっていないと IP アドレスが確認できません。
なので、 Compute Engine で外部 IP アドレスなしのインスタンスを作成し、「VPC ネットワーク」→「IP アドレス」から、Cloud NAT の IP アドレスを表示しました。(画像下から2番目)
CloudNAT_ip.PNG

Amazon RDS セキュリティグループの設定

一つ上で確認した IP アドレスを、Amazon RDS のセキュリティグループのインバウンドを追加します。
amazonrdsセキュリティグループ.PNG

ファイアウォールの設定

Data Fusion のパイプライン実行環境は Dataproc なので、Dtataproc の各インスタンスが相互通信できるように以下の条件で上りのファイアウォールを設定する必要があります。

TCP(全ポートの 0~65535)、UDP(全ポートの 0~65535)、および ICMP

インスタンス作成

パイプラインを作成・実行するインスタンスを作成します。

作成ページの「詳細オプション」の「プライベート IP を有効化」を有効化すると、環境を作成する VPC ネットワークを指定できます。
詳細オプション.PNG

パイプライン作成

インスタンスが作成されたら、「インスタンスを開く」リンクから Cloud Data Fusion UI を開きます。

今回は Data Fusion 実行環境と Amazon RDS の疎通確認をしたいので、PostgreSQL から Cloud Storage に書き出すだけのパイプラインを作成します。

前述の通り、Data Fusion の設定環境と実行環境は異なります。
なのでこの手順で進めると設定環境のパイプライン作成時は Amazon RDS に接続できない、という課題があり、ここはまだ解決できていません。
プラグインの各プロパティを入力していきますが、設定環境では接続テストはせず進めていきます。

パイプラインをデプロイ・実行し、Amazon RDS からデータを取得できた(接続できたこと)を確認できました。
deployあと.PNG

ちなみにパイプライン実行中に Dataproc, Compute Engine, IPアドレス一覧を見ると、実行環境の様子が確認できます。

Dataproc クラスタ詳細
詳細上部にクラスタに関する警告が表示されます。警告内容によってはプロビジョニング中状態から終わらないので、パイプラインの進行が進まない場合はここをチェックして原因を確認できます。
private_dataproc.PNG

Compute Engine VM インスタンス一覧
private_gce一覧.PNG

IP アドレス一覧(下3列)
private_ip.PNG

参考

以上です。だれかの参考になれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?