terraform 1.5以降ではimportリソースによって既存のリソースからtfを生成できるようになりました。
importを利用してBigQueryのテーブルをimportすると、Schemaが整形されていないJSONで出力されて可読性が悪いので、一筆書いた。
# 下記のようなimportをを行うと、schemaが自動で作成されるが見ずらいので、
# 自動で整形したい。
# import {
# id = "<project>/<dataset>/<table>"
# to = google_bigquery_table.<imported_table>
# }
# 使用方法: cat generated.tf | ruby bigquery_schema_formater.rb | pbcopy
# read stdin and split by line
require 'json'
$stdin.read.split("\n").each do |line|
unless line =~ /\sschema\s+=/
puts line
next
end
re = Regexp.new('=\s"(.+)"$')
schema = re.match line
puts 'schema = <<SCHEMA'
puts JSON.pretty_generate(JSON.parse(schema[1].gsub(/\\"/, '"')))
puts 'SCHEMA'
end
もちょい複雑になるようならtfをparseしたほうがいいと思うのだが、ピッっとやる分にはこれくらいで事足りるので、これでやった。