APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

入門Fivetran(3) - FivetranとDatabricksを連携させ、AWS RDSのデータを取りこむ

1.はじめに

GLB事業部Lakehouse部の松崎です。今回も、FivetranをDatabricksと連携させたELT設定の作成について解説していきます。 本記事では、MySQL RDSコネクタを使った、Amazon RDS(MySQL)からの連携設定の作成を進めていきます。

※過去の記事はこちら。

目次

2. 参考資料

3. 前提条件

  • Databricksのワークスペースが利用可能であることが前提条件となります。ワークスペースの作成方法については、弊社阿部が以下の記事で解説しておりますので、よろしければ合わせてご覧下さい。

  • Fivetranのアカウント作成 & Databricksとの連携が実施済みであることが前提条件となります。Fivetranのアカウントを未作成の方は前回の記事を参照ください。

4. 事前作業 : 検証用RDSインスタンスの用意

4-1. RDSインスタンスの作成

まず、検証用のAmazon RDSインスタンスをAmazonのコンソールにて作成します。

  • DBエンジンのタイプは MariaDB を選択します。
  • DBインスタンスサイズは 開発/テスト を選択します。

4-2. TLS設定の作成

RDSインスタンスの作成&起動が完了しましたら、AWS管理コンソールにて パブリックアクセス可能 を有効にすることでTLS設定を有効化します。*1

設定変更が完了しましたら、mysql-clientにてRDSに接続し、TLS設定が有効化されたことを確認します。

mysql> show global variables like '%ssl%'

+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name       | Value                                                                                                                                                                                                                                                                                   |
+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| have_openssl        | YES                                                                                                                                                                                                                                                                                     |
| have_ssl            | YES                                                                                                                                                                                                                                                                                     |
| ssl_ca              | /rdsdbdata/rds-metadata/ca-cert.pem                                                                                                                                                                                                                                                     |
| ssl_capath          |                                                                                                                                                                                                                                                                                         |
| ssl_cert            | /rdsdbdata/rds-metadata/server-cert.pem                                                                                                                                                                                                                                                 |
| ssl_cipher          | ECDHE-RSA-xxx
| ssl_crl             |                                                                                                                                                                                                                                                                                         |
| ssl_crlpath         |                                                                                                                                                                                                                                                                                         |
| ssl_key             | /rdsdbdata/rds-metadata/server-key.pem                                                                                                                                                                                                                                                  |
| version_ssl_library | OpenSSL 1.1.1q  5 Jul 2022                                                                                                                                                                                                                                                              |
+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10 rows in set (0.19 sec)        
mysql> status
--------------
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
SSL session reused:     true
--------------

4-3. サンプルデータの準備

最後に、Fivetranにインポートさせるテスト用データを準備します。 今回の検証に際しては、以下の手順に従いMySQL公式のworld databaseを利用しましたが、ここでは特にデータの内容は問いません。

5. ELT設定の作成

5-1. ELT設定の作成&設定値の入力

Fivetranの管理画面より、 Connectors に進み、画面右上の Add connector をクリックします。

コネクタの選択画面に変わるので、 MySQL RDS コネクタを選択します。

ELTに際しての設定値の入力画面に遷移しますので、各種の設定値を入力/選択します。

以下に設定値の意味合いをまとめています。

  • Destination schema : RDSからDatabricksに、Schema(Database)をコピーする際にSchema名に付与する接頭辞を指定するフィールドです。ここでは初期値の mysql_rds を採用します。
  • Host : MySQL ServerのFQDNを指定するフィールドです。AWSの管理コンソールで取得のRDSのFQDNを入力します。
  • Port : MySQL Serverの接続ポートを指定するフィールドです。MySQLのデフォルトの接続ポートである 3306 を指定します。
  • User : MySQL Serverへ接続時のユーザーを指定するフィールドです。ここでは、RDSの管理者アカウントである admin を指定します。*2
  • password : MySQL Serverへ接続時のパスワードを指定するフィールドです。AWS管理コンソール上でRDSインスタンスを作成時の取得のパスワードを指定します。
  • Connection Method : FivetranからAWS RDSに接続する際の接続方式を選択するフィールドです。詳細は公式マニュアルを参照下さい。本記事では、設定の容易さを重視して Connect directly (TLS required) を選択します。
  • Update Method : Fivetranの初期インポートが完了後に、RDS上のデータに変更が加えられた際に、Fivetranがその変更を検知する方法を指定するフィールドです。詳細は公式マニュアルを参照ください。ここでは、 Detect Change via Fivetran Teleport Sync を選択します。

5-2. TLS証明書のトラスト

全ての設定値を入力後、Save & Test をクリックしますと、Fivetran⇒RDSへの接続性のテスト画面に遷移します。 このタイミングで、RDSが使用のTLS証明書のトラストチェーンの検証に失敗し、以下のように手動でトラストするかどうかを確認されるので、 トラストを実施します。

※RDSが提供のTLS証明書のトラストチェーン検証に失敗する原因については、別途調査予定です。

手動での信頼(trust)が完了すると、接続性チェックが再試行され、最終的に All connection tests passed! と表示されます。 Continue をクリックします。

5-3. Initial Syncとポートされたデータの確認

コネクターの管理画面に遷移にしますので、 Start initial Sync をクリックします。

データの初期インポートが開始したことを確認します。

初期インポートが完了すると、以下のような表示に変わります。

Databricksの Data Explorer 画面を確認すると、指定したスキーマ及びテーブルが作成されていることが確認できます。

本記事は以上となります。いかがでしたでしょか? 前回(Google Sheets)と同様に、Fivetranを使うことで、ELT設定が簡単に作成できる点が伝わりますと幸いです。

私たちはDatabricksを用いたデータ分析基盤の導入から内製化支援まで幅広く支援をしております。
もしご興味がある方は、お問い合わせ頂ければ幸いです。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
APCにご興味がある方の連絡をお待ちしております。

www.ap-com.co.jp

*1:Fivetran ⇒ Amazon RDS(mySQL) への接続方法には、複数の選択肢がありますが、今回は FivetranがRDSのExportしているSQlエンドポイントに直接接続する方式を選択します。この方式に際しては、MySQL Server(RDS)側にてTLSが有効化されている必要があります。

*2:Fivetranの使用アカウントには、最小の権限のみが付与されることがベストプラクティスであるため、管理者アカウントを使うのは望ましい設定ではありません。今回は手順の簡素化のために管理者アカウントを指定しましたが、商用用途で作成の際は、Fivetran専用のアカウントを作成し、必要な権限のみを付与してください。