久々にSnowflake Terraform でバグを引いたので、リカバリ手順メモ。
Actual Behavior
Error: sql: Scan error on column index 0, name "TAG": converting NULL to string is unsupported
Terraform で Tagまわりのリソースを再作成したら、突然うまくいかなくなった。
「なんもしてないのに壊れた」気分。
そうは言っても、タグベースのマスキングポリシーがないと困るので、この部分だけTerraformの管理から外して、SQLで再作成することにする。
1. Terraform管理下から関連リソースを削除する
リソース確認
terraform state list
この中から、タグに関係あるものを管理下から削除する
terraform state rm snowflake_tag.hogedb_piyoschema_tag_privacy_info
terraform state rm snowflake_masking_policy.hogedb_piyoschema_varchar_masking_policy
terraform state rm snowflake_tag_association.hogedb_piyoschema_varchar_table_association
2. テーブルのカラム再作成でエラーになるので、Snowflake本体からも削除する
-- タグついてる一覧確認
select *
from snowflake.account_usage.tag_references
order by tag_name,domain,object_id
;
-- カラムからタグを剥がす
alter table fugatable modify column_1 NAME unset tag RAW_TAG_PAYMENT_PRIVACY_INFO;
-- カラムからマスキングポリシーを剥がす(もしかしてやらなくてもいいかも)
alter table fugatable modify column column_1
unset masking policy;
-- マスキングポリシー削除
drop masking policy hogedb.piyoschema.varchar_masking_policy;
-- タグ削除
drop tag hogedb.piyoschema.tag_privacy_info;