はじめに

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つの作業をする必要があります

  1. BigQuery用のサービスアカウントの紐付け

今回はfivetranが提供してくれるSAを自GCPプロジェクトのIAMに紐付けました。 WebUIの左側にあるDestinationsから以下の様に確認が可能です。

bigquery

BigQueryユーザをつければOKです。

  1. CloudSQLの証明書の確認

WebUIにログインすると、CloudSQL周りの接続がおかしいという警告が出ているので再度コネクション編集画面に入り、SAVE&TESTを押下すると以下のような画面が出ますのでCONFIRMする必要があります。

cloudsql

これであとは転送がかってに始まります! 簡単で良いですね!!