terraform 0.15 と aws-provider と Sensitive

何が起きたか

terraform 0.15 が出たので 手元の 古いものをアップデートしていました。

同じアカウントで、共通リソースを作る terraform と、 共通リソースを使う terraform が存在し、

それぞれの terraform の管理者が違うので、remote state で情報の受け渡しができない。

という状況において AWS ssm parameter を情報の受け渡しに利用していました。

共通リソースを定義する側で、 指定された ssm parameter 名で、値を登録し、

共通リソースを使う側で、 指定された ssm parameter から値を取得する。 という方法です。

terraform 0.14 まではこの方法でうまくいっていましたが、 0.15 にアップデートした際に、 sensitive valueは for_each に使うことはできない。というエラーが出ました。

どう解決するか

terraform 0.15 においては、 Sensitive Resource Attributes というのがデフォルトで有効になっており、( 0.14でも experimentsで有効にすると使えます)

terraform-aws-provider において、 ssm parameter は Sensitive と位置づけられています。

そのため、 ssm parameter から取得してきた値のリストを for_each などでループさせて リソース名に利用することができなくなっています。

そんな時、どうすればいいかというと、 nonsensitive 関数の利用です。

nonsensitive( sensitive_value ) と この関数を通すと、 Sensitive 属性が消えてくれます。 これで for_each でも問題なく使えるようになります。

めでたしめでたし。