我有一个使用com.google.cloud.bigtable.hbase1_2.BigtableConnection
课程连接到Google Bigtable的应用。这是在计算引擎VM中运行的,该VM具有默认范围设置加上https://www.googleapis.com/auth/bigtable.data
范围(读取/写入Bigtable所需)。当属性google.bigtable.auth.json.keyfile
设置为适当的auth文件时,连接正常。
但是,我想避免设置此属性,只使用为实例设置的作用域,以便不必在实例上保留密钥文件。这似乎不起作用。错误消息是
Caused by: com.google.bigtable.repackaged.io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had insufficient authentication scopes.
at com.google.bigtable.repackaged.io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:230)
at com.google.bigtable.repackaged.io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:211)
at com.google.bigtable.repackaged.io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:144)
at com.google.bigtable.admin.v2.BigtableTableAdminGrpc$BigtableTableAdminBlockingStub.listTables(BigtableTableAdminGrpc.java:371)
at com.google.cloud.bigtable.grpc.BigtableTableAdminGrpcClient.listTables(BigtableTableAdminGrpcClient.java:52)
at org.apache.hadoop.hbase.client.AbstractBigtableAdmin.requestTableList(AbstractBigtableAdmin.java:258)
... 8 more
还有其他方法可以做到这一点,还是我缺少配置属性?
答案 0 :(得分:1)
因此,我发现它需要将访问范围以及正确的IAM角色分配给实例,然后才能工作。范围是
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/bigtable.admin.table
,IAM角色应包含Bigtable User
角色。