Digdagのワークフロー定義で直接BigQueryを操作できるようになっていたので試してみた。
実行環境:GCP CloudShell
digdag version: 0.9.5
digdagのインストール手順は省略:
今回試したのはBigQueryのあるテーブルをAvroフォーマットでGCSに格納する例。
BigQueryやGCSにアクセスするためには個人のアカウントやサービスアカウントを利用するが、処理の自動化を行う際はサービスアカウントを作るのが妥当。
サービスアカウントを作成し、鍵をjson形式でファイル出力する。このファイルをjson.keyとしてCloudShell上に配置。
DigdagのワークフローからGCPにアクセスするためには、Secrets情報としてgcp.credentialを設定する必要がある。
Digdagは秘密情報(パスワードや鍵など)をセキュアに管理するための機能を備えている。 Secretsは通常のワークフローパラメータとは別に処理され、暗号化されて保管されている。Local secretsはユーザのホームディレクトリ上に保存される。
以下のコマンドを実行し、ローカル環境にsecretsとしてgcp.credentialを設定する。
$ cat json.key |digdag secrets --local --set gcp.credential=@json.key
2017-02-23 15:54:04 +0900: Digdag v0.9.5
Secret 'gcp.credential' set
以下のコマンドを実行し、gcp.credentialがセットされているこを確認
$ digdag secrets --local
2017-02-23 15:54:24 +0900: Digdag v0.9.5
gcp.credential
ワークフローには以下のように記述
$ cat aaa.dig
timezone: UTC
_export:
bq:
dataset: test_yotsu
+export:
bq_extract>: table01
destination: gs://{bucketName}/test01.avro
destination_format: AVRO
compression: NONE
あとはdigdag runをするとBQのデータをGCS上にexportされていることを確認。
BigQueryで解析した結果をある時刻にexportして、その解析データを別のクラウドや別サービスに使うといったことが簡単に実現可能。