在Terraform中获取Snowflake资源完整限定名的方法
解决方案
优先用Snowflake Provider自带的qualified_name属性
Snowflake的Terraform Provider给大多数核心资源(比如snowflake_table、snowflake_view、snowflake_stage这些)都内置了qualified_name属性,它直接返回database.schema.name格式的完整限定名,刚好匹配你的需求。
用起来很简单:
statement = "select * from ${snowflake_table.some_resource_with_a_very_long_name.qualified_name}"
无内置属性时的简化写法
要是碰到少数没有qualified_name的资源,用Terraform的format函数能减少重复的资源引用,比原来的写法清爽不少:
statement = format("select * from %s.%s.%s", snowflake_table.some_resource_with_a_very_long_name.database, snowflake_table.some_resource_with_a_very_long_name.schema, snowflake_table.some_resource_with_a_very_long_name.name)
另外也可以用join函数拼接属性数组,不过可读性不如format:
statement = "select * from ${join(".", [snowflake_table.some_resource_with_a_very_long_name.database, snowflake_table.some_resource_with_a_very_long_name.schema, snowflake_table.some_resource_with_a_very_long_name.name])}"
内容的提问来源于stack exchange,提问作者Dommondke
相关产品推荐
相关产品推荐

