docker - 使用 Golang 从 Docker 连接到 Snowflake 数据库时出现错误 "x509: certificate signed by unknown authority"

标签 docker go snowflake-cloud-data-platform

我正在尝试使用 Golang 连接到 Snowflake DB。我在网上找到了示例代码,当我在我的机器上运行时它工作正常。 当我将示例代码放入 docker 容器并尝试运行它时,出现以下错误。 我不确定是否需要联系 Snowflake DB 管理员来获取任何证书。有人遇到过类似的问题吗?

https://XXXX.us-east-1.snowflakecomputing.com:443/session/v1/login-request?databaseName=XXXX&requestId=XXXXX&request_guid=XXXX": x509: certificate signed by unknown authority

下面是示例代码。

package main 

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/snowflakedb/gosnowflake"
)

func main() {
    user:="XXXX"
    password:="XXX"
    host:="XXXX.us-east-1.snowflakecomputing.com"

    database:="XXX"
    warehouse :="XXX"
    schema :="XXX"
    port :="443"


    dsn := fmt.Sprintf("%v:%v@%v:%v/%v",user,password,host,port,database)
    
    fmt.Println("DSN",dsn)
    db, err := sql.Open("snowflake", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    query :=`SELECT * FROM INFORMATION_SCHEMA.APPLICABLE_ROLES `
    rows, err := db.Query(query)
    if err !=nil{
        fmt.Println("error in query", err)
        return
    }

    cols, err := rows.Columns()
    if err !=nil{
        fmt.Println("error in reading columns ", err)
        return
    }
    fmt.Printf("\n\n %+v \n", cols)
}

最佳答案

那是因为您没有形成此 ssl 连接所需的证书。我猜您使用了 scratch docker 镜像来对您的应用程序进行 dockerize,就像大多数指南所做的那样。

因此,您可以使用类似以下内容从构建器镜像复制所需的 CA 证书:

COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

关于docker - 使用 Golang 从 Docker 连接到 Snowflake 数据库时出现错误 "x509: certificate signed by unknown authority",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67825629/

相关文章:

java - kubernetes 上的 Spark 作业失败,没有特定错误

rest - 如何在 golang 中处理未设置值的补丁请求

unit-testing - Gomega 的 Equal() 可以处理多个值吗?

join - Snowflake Join不返回空值条件匹配来自2个表的记录

snowflake-cloud-data-platform - 在 Snowflake 中创建 UDAF(不是 UDTF)

docker - 如何保留用于在 Docker 中运行图像的选项的副本?

docker - 在Linux/Windows集群上部署服务时Kubernetes “Failed create pod sandbox”错误

Docker 与 Kubernetes

golang与fastcgi如何读取REMOTE_USER

amazon-web-services - 将 Snowflake 中的数据作为 XLSX 文件保存到 S3 存储桶