You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整JSON输出格式以在Terraform中使用外部Googlebot IP列表

解决Terraform External数据源解析Googlebot IP列表的JSON格式问题

Terraform的external数据源要求外部程序返回单个顶层JSON对象,你当前的jq命令输出的是多个独立的JSON对象(每个IP前缀对应一个),这就触发了"顶层值后存在无效字符'{' "的错误。

修正步骤:

  1. 修改shell脚本的jq命令,将所有IP前缀整理成数组并包装为单个JSON对象:
    替换get-googlebot-bot-ips.sh中的内容为:

    curl https://developers.google.com/static/search/apis/ipranges/googlebot.json \
        | jq '{
            ipv4Prefix: [.prefixes[] | .ipv4Prefix | select(. != null)],
            ipv6Prefix: [.prefixes[] | .ipv6Prefix | select(. != null)]
          }'
    

    这个命令会把所有有效的IPv4/IPv6前缀分别收集成数组,最终输出一个包含两个数组的合法JSON对象。

  2. 调整Terraform配置(确保脚本路径匹配):
    修正main.tf中脚本的引用路径(如果文件名不一致),并优化输出:

    data "external" "get_googlebot_ips_using_shell" {
      program = ["bash", "./get-googlebot-bot-ips.sh"] # 与实际脚本文件名保持一致
    }
    
    output "googlebot_ipv4_prefixes" {
      value = data.external.get_googlebot_ips_using_shell.result.ipv4Prefix
    }
    
    output "googlebot_ipv6_prefixes" {
      value = data.external.get_googlebot_ips_using_shell.result.ipv6Prefix
    }
    

验证输出格式

运行脚本后会得到类似如下的JSON,完全符合Terraform的要求:

{
  "ipv4Prefix": [
    "66.249.64.0/19",
    "64.233.160.0/19"
  ],
  "ipv6Prefix": [
    "2001:4860:4000::/36",
    "2a00:1450:4000::/36"
  ]
}

内容的提问来源于stack exchange,提问作者Bcunning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:05:42