継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

S3 に保存したデータを BigQuery に読み込ませるための方法を検証した

タダです.

最近業務で BigQuery を触り始めたのですが,メインのシステムが AWS 上にありデータが S3 に保存されています.BigQuery で分析するためには S3 にあるデータを GCP 側に持っていく必要があり,その方法を検証したので備忘録としてこの記事でまとめていきます.

S3 から BigQuery にデータを投入する選択肢

S3 のデータを BigQuery にデータを投入する方法はいくつかあります.検証したのが Cloud Storage と BigQuery Data Transfer Service だったのですが,それぞれの検証所感を整理します.

  • Cloud Storage からデータの読み込み
  • ローカルからデータの読み込み
  • Google Drive からデータの読み込み
  • BigQuery Data Transfer Service で S3 のデータを投入する

Cloud Storage と BigQuery Data Transfer Service を使ってみての所感

Cloud Storage

まず,Cloud Storage ですが,対象のファイルをアップロードしておき BigQuery のテーブルデータに読み込ませる形式です.ワンショットの読み込みであればこのサービスを使って読み込みで良いと思いますが,例えば日次で更新が必要な場合仕組み化しないと運用が辛くなってくる印象でした.その点は次の BigQuery Data Transfer Service が特化していると言えると思います.

関連ドキュメント

cloud.google.com

BigQuery Data Transfer Service

次に BigQuery Data Transfer Service は S3 から BigQuery へのデータ読み込みをスケジューリングが可能です.この方式を使う際には前提として S3 のデータを読み取る権限(AmazonS3ReadOnlyAccess など)を有する IAM ユーザーとそのアクセスキー,シークレットアクセスキーが必要です.また,S3 の URI が必要で オブジェクトでもバケットレベルでも正規表現*も指定できます.

この機能を使うことで定期的な BigQuery のテーブル更新も簡単になるのはメリットである一方画像にあるようにベータ版の機能であるようです.IAM ユーザーの管理対象が増えます.また,転送が失敗した時の通知もメール通知がサポートされていますが,転送状況を監視できるようにしたいとなった場合には転送の仕組みは AWS で作り,Cloud Storage 経由で BigQuery にデータを読み込ませる、カヤックさんの開発されている bqinが選択肢になりうるのかなと思います.

f:id:sadayoshi_tada:20200915052656p:plain

関連ドキュメント

cloud.google.com

まとめ

簡単ではありますが,S3 から BigQuery にデータを投入する方法で検証した機能と所感を整理しました.自分たちが運用しやすい形で選択肢を検討していければと思います.