はじめに
ELツールであるFivetranを試す機会があり、terraformも使えるということでどこまで使えるのか試してみました
構成
データの転送は CloudSQL(GCP) -> Fivetran -> BigQuery
という経路で行うことにしました。
CloudSQLの準備
CloudSQLはコンソール上から適当に作成しています。 その上でデータは面倒だったのでこの手順で用意し、その上で以下のようにしてユーザを作成します。
CREATE USER 'fivetran'@'%' IDENTIFIED BY 'ぱすわーど'
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'fivetran'@'%'
Terraform
- provider.tf
- api_key, api_secretはWebUI上から発行しておいてください
1terraform {
2 required_providers {
3 fivetran = {
4 source = "fivetran/fivetran"
5 version = "0.6.3"
6 }
7 }
8}
9
10
11provider "fivetran" {
12 api_key = "APIKEY"
13 api_secret = "APISECRET"
14}
- main.tf
1resource "fivetran_group" "group" {
2 name = "Terraform"
3}
4
5resource "fivetran_connector" "mysql" {
6 group_id = fivetran_group.group.id
7 service = "google_cloud_mysql"
8 sync_frequency = 60
9 paused = false
10 pause_after_trial = false
11
12 destination_schema {
13 prefix = "test2_"
14 name = "test2"
15 }
16
17 config {
18 host = "ホスト名 or Global IP"
19 port = 3306
20 database = "guestbook"
21 user = "fivetran"
22 password = "パスワード"
23 }
24}
25
26resource "fivetran_destination" "dest" {
27 group_id = fivetran_group.group.id
28 service = "big_query"
29 time_zone_offset = "+9"
30 region = "GCP_US_EAST4"
31 trust_certificates = "true"
32 trust_fingerprints = "true"
33 run_setup_tests = "true"
34
35 config {
36 project_id = "GCPのプロジェクトID"
37 data_set_location = "US"
38 }
39}
これをapplyすればリソースは作れるはずです
apply後のUI操作
このままでは転送は開始されないので、一旦UIに戻って以下2つの作業をする必要があります
- BigQuery用のサービスアカウントの紐付け
今回はfivetranが提供してくれるSAを自GCPプロジェクトのIAMに紐付けました。 WebUIの左側にあるDestinationsから以下の様に確認が可能です。
BigQueryユーザをつければOKです。
- CloudSQLの証明書の確認
WebUIにログインすると、CloudSQL周りの接続がおかしいという警告が出ているので再度コネクション編集画面に入り、SAVE&TESTを押下すると以下のような画面が出ますのでCONFIRMする必要があります。
これであとは転送がかってに始まります! 簡単で良いですね!!