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

从AWS Secret Manager获取字符串转YAML时Go解析报错求助

解决YAML解析报错:yaml: line 11: could not find expected ':'

问题根源

你提供的YAML里有无效的转义双引号,直接导致解析器无法正确识别键值结构:

  • psql.auth 字段末尾的 \" 属于错误转义,解析器会把它当作字符串的一部分,打乱了YAML的格式规则
  • 其他字段的 \"\" 写法也不符合YAML规范,解析器无法识别这是空值

修正后的YAML

把多余的转义符去掉,空值直接用""表示即可:

psql:
  db: dev
  auth: postgres://localhost:5432
qldb:
  region: ""
  ledger: ""
cognito:
  token_endpoint: ""
  issuer: ""
  login_url: ""

如果你的连接字符串确实需要包含双引号(比如特殊场景),可以用单引号包裹,或者在双引号内部正确转义:

# 用单引号包裹,内部双引号无需转义
psql:
  auth: 'postgres://localhost:5432"'

# 或者用双引号内部转义双引号
psql:
  auth: "postgres://localhost:5432\""

代码修正建议

  1. 先确认从AWS Secret Manager拿到的c字符串是正确的未转义YAML——可以先打印c的内容,看看是不是Secret Manager存储时自动加了转义符,这是常见坑点
  2. 你的代码片段存在语法错误,Viper的读取逻辑要放在main函数内部,修正后:
func main() {
    c, err := Secretmanager.Getconfig()
    if err != nil {
        fmt.Println(err)
        return // 出错直接退出,避免后续无效执行
    }

    viper.SetConfigType("yaml")
    err = viper.ReadConfig(strings.NewReader(c))
    if err != nil {
        log.Panic("unable to load config", err)
    }

    // 这里写你使用配置的逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:23:33