Google cloud platform BigTable Emulator cbt在创建表时出错;传输:身份验证握手失败:tls:第一条记录看起来不像tls握手;

Google cloud platform BigTable Emulator cbt在创建表时出错;传输:身份验证握手失败:tls:第一条记录看起来不像tls握手;,google-cloud-platform,google-cloud-bigtable,Google Cloud Platform,Google Cloud Bigtable,我正在使用“cbt”云BigTable CLI工具。 在.cbtrc文件中设置变量后:附加图像 BigTable emulator正在运行: btemulator.exe--host=localhost--port=8086 [bigtable]在127.0.0.1:8086上运行的云bigtable模拟器 当我运行命令时: cbt创建表格我的表格 我得到一个错误: 创建表:rpc错误:code=Unavailable desc=连接错误:desc=“传输:身份验证握手失败:tls:第一条记录

我正在使用“cbt”云BigTable CLI工具。 在.cbtrc文件中设置变量后:附加图像

BigTable emulator正在运行: btemulator.exe--host=localhost--port=8086 [bigtable]在127.0.0.1:8086上运行的云bigtable模拟器

当我运行命令时: cbt创建表格我的表格

我得到一个错误:
创建表:rpc错误:code=Unavailable desc=连接错误:desc=“传输:身份验证握手失败:tls:第一条记录看起来不像tls握手”

。rc文件是UNIX系统的标准文件,但对于Windows则不是

在这种情况下,我们可以检查
cbt
命令的代码,以检查它如何找到.cbtrc文件,它是:

//Filename返回标准配置所参考的文件名。
func Filename()字符串{
//TODO(dsymonds):可能需要调整Windows。
返回filepath.Join(os.Getenv(“HOME”),“.cbtrc”)
}
代码获取
HOME
env变量,但这在windows中不可用(中的一些详细信息)。这是
%HOMEPATH%
。为了使其在windows中更好地工作,代码上甚至还有一个任务要做

这意味着cbt命令没有找到配置文件,因此没有应用它

您可以在计算机中设置
HOME
env变量,也可以直接在命令上传递命令标志:

cbt -project fake-project -instance fake-instance -admin-endpoint localhost:8086 -data-endpoint localhost:8086 -creds C:\path\to\your\creds -auth-token <TOKEN> createtable my-table
cbt
代码中,我们还可以看到,如果设置了环境变量,则会使调用不安全,但如果未设置,则会尝试使调用安全,因此会出现TLS错误(本地仿真器未设置安全内点)

这可以从以下几个方面看出:

//DefaultClientOptions返回用于
//客户端的gRPC连接。
func DefaultClientOptions(端点、作用域、用户代理字符串)([]option.ClientOption,错误){
var o[]option.ClientOption
//检查bigtable emulator的环境变量。
//直接拨号,不要传递任何凭证。
如果addr:=os.Getenv(“BIGTABLE\u EMULATOR\u HOST”);addr!=“”{
conn,err:=grpc.Dial(地址,grpc.WithUnsecure())
如果错误!=零{
返回nil,fmt.Errorf(“仿真器grpc.Dial:%v”,err)
}
o=[]选项.ClientOption{option.WithGRPCConn(conn)}
}否则{
o=[]选项。客户端选项{
选项。WithEndpoint(端点),
选项。使用示波器(范围),
选项。WithUserAgent(userAgent),
}
}
归零
}


总而言之:确保为
cbt
设置了正确的环境变量。对于您看到的特定错误,可能是缺少
BIGTABLE\u EMULATOR\u HOST
变量。

您好,从这个错误文档[1],问题似乎是暂时的。你能检查一下你是否还有错误吗?[1]
$ cbt -project test -instance test -admin-endpoint localhost:8086 -data-endpoint localhost:8086 createtable test
2020/10/13 08:23:13 Creating table: rpc error: code = Unavailable desc = connection error: desc = "transport: authentication handshake failed: tls: first record does not look like a TLS handshake"

$ $(gcloud beta emulators bigtable env-init)

$ cbt -project test -instance test -admin-endpoint localhost:8086 -data-endpoint localhost:8086 createtable test

$ cbt -project test -instance test -admin-endpoint localhost:8086 -data-endpoint localhost:8086 ls
test