RDSのデータをBigQueryへ転送した

  • #RDS
  • #BigQuery
  • #AWS
  • #GCP

こんにちは。CURUCURU エンジニアの兄山です。 RDS のデータを BigQuery へ転送する要件がありましたのでその構築手法をご紹介したいと思います。


要件

要件が以下です

  • 1 日 1 回のバックアップ
  • 特定のテーブルのみ

他にも転送技術としてGCP DataStreamという選択肢がありましたが、準リアルデータ連携やコスト面から選択肢として外しました(ただカラムのマスキングが簡単にできそうだから Glue 使用時はコストの比較検討する必要がある)。

手順

手順は以下です

  1. Lambda & EventBridge で定期的に S3 へスナップショットを送信
  2. BigQuery DataTransferService を用いて S3 から BigQuery へ転送

architecture

注意点は以下です

  • 転送時は BigQuery の Boolean を Integer、Datetime を TimeStamp にしないと取り込みエラーになる(MySQL)。
  • Lambda 定期実行時はスナップショットを S3 へ Export する権限と Encrypt(RDS から S3 へ Export する際に暗号化して保存するため)する権限が必要
  • GCP 側から S3 にアクセスする、Decrypt するための権限を持った IAMUser を作成(マルチクラウド対応)

Lambda は SAM で実装していますが、詳しい使い方はこちらに詳しく書いてあるのでご参考に!

まとめ

今回は簡単なデータパイプライン構築でしたが、もっと複雑な ELT 基盤になるとFivetrandbt等の技術もあるみたいです(最近の流行り?)。 調べていると興味が湧いてきたのでここらへんの技術を勉強してみようかな。 以上兄山でした。