2017-08-09 7 views
1

com.google.cloud.bigtable.hbase1_2.BigtableConnectionクラスを使用してGoogle Bigtableに接続するアプリがあります。これは、既定のスコープにhttps://www.googleapis.com/auth/bigtable.dataスコープを加えた計算エンジンVM内で実行されています(Bigtableへの読み書きに必要です)。プロパティーgoogle.bigtable.auth.json.keyfileが適切な認証ファイルに設定されている場合、接続は正常に機能します。計算インスタンスからBigtableに接続するための認証

ただし、このプロパティの設定を避け、インスタンスに設定されたスコープを使用して、キーファイルをインスタンス上に保持する必要はありません。これはうまくいかないようです。エラーメッセージは

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 

です。これ以外の方法がありますか、設定が不明ですか?

答えて

1

したがって、アクセススコープと正しいIAMロールの両方がインスタンスに割り当てられている必要があることが分かりました。スコープは

https://www.googleapis.com/auth/bigtable.data 
https://www.googleapis.com/auth/bigtable.admin.table 

であり、IAMロールにはBigtable Userロールが含まれている必要があります。

+0

あなたの問題を解決したと聞いてうれしいです!この質問に「クローズ」と表示されるように[あなた自身の回答を受け入れてください](http://blog.stackoverflow.com/2009/01/accept-your-own-answers/)してください。ありがとう! –

関連する問題