💡

Terraform の templatefile で管理した BigQuery Scheduled Query を envsubst で展開

に公開

課題感

以下のように、Terraform の templatefile の形式でテンプレーティングされている、SQLファイルがあったとします(スケジュールクエリのために)。

foobar.sql

select
  *
from
  foobar_project_${env}.foobar_dataset_${id}.foobar_table
;

ただこのままでは、そのままクエリ発行することができません。プレースホルダに値をいれてあげる必要があります。

解決: envsubst を使おう

envsubst を使うと簡単に展開できます。

$ brew install envsubst

さっきの、foobar.sql に当てはめてみると...ちゃんとプレースホルダに値が入った状態で展開されますね

$ env=test id=123 envsubst < foobar.sql
select
  *
from
  foobar_project_test.foobar_dataset_123.foobar_table
;

これをパイプで繋いで、bq query してもよさそう。

Discussion