是否有可将JSON压缩为紧凑格式的函数以用于Terraform资源传递?
Terraform 传递压缩格式JSON的实现方法
你可以通过以下两种原生方案实现需求,无需依赖外部工具:
方案1:jsondecode+jsonencode组合(推荐)
利用Terraform内置的JSON编解码函数,先将读取的原始JSON文件解析为Terraform内部对象,再重新编码为紧凑无冗余的JSON字符串,会自动移除所有多余的换行、缩进、空白字符,且不会破坏JSON内的有效内容:
# 读取原始JSON文件并处理为紧凑格式 locals { # 替换为你的JSON文件实际路径 raw_json = file("${path.module}/config.json") compact_json = jsonencode(jsondecode(local.raw_json)) } # 传递到对应资源的示例,以AWS S3对象存储为例 resource "aws_s3_object" "config_file" { bucket = "your-bucket-name" key = "compact_config.json" content = local.compact_json }
方案2:正则替换(仅应急使用)
如果遇到特殊场景无法使用编解码方案,可以用正则替换清理冗余空白,仅适用于JSON键值对中不包含多余空格的场景:
locals { raw_json = file("${path.module}/config.json") # 依次移除换行符、多余空白、冒号/括号前后的空白 compact_json = replace(replace(replace(local.raw_json, "/[\\r\\n]/", ""), "/\\s+/", " "), "/\\s*([:,{}])\\s*/", "$1") }
注意事项
- 优先选择方案1,该方案会自动校验JSON语法合法性,若原始文件存在格式错误会在计划阶段直接抛出提示,避免生成无效JSON
- 方案2可能会误删JSON字符串内部的有效空格,非必要不建议使用
内容的提问来源于stack exchange,提问作者feroze
相关产品推荐
相关产品推荐

