Bigtable from_service_account_json() 不工作

Posted

技术标签:

【中文标题】Bigtable from_service_account_json() 不工作【英文标题】:Bigtable from_service_account_json() not working 【发布时间】:2020-12-28 09:58:54 【问题描述】:

我正在尝试使用我在 IAM 上创建的特定服务帐户连接到 Bigtable,并将 JSON 下载到包含我的 python 代码的文件夹中。我已授予服务帐号 Bigtable 管理员权限。

client = bigtable.Client(project='tunnel-insight-2-0-dev-291100', admin=True)

这行得通。

client = bigtable.Client(project='tunnel-insight-2-0-dev-291100', admin=True).from_service_account_json("tunnel-insight-2-0-dev-291100-4494b00c4389.json")

这不起作用。我收到“ValueError:客户端不是管理员客户端。”

有人知道为什么 from_service_account_json 不像其他 Google Client Sdks 那样工作吗?

【问题讨论】:

【参考方案1】:

我复制了您的用例,并且在 Python 3.7.3 上一切正常。


pip3 install --upgrade google-cloud-bigtable


from google.cloud import bigtable

client = bigtable.Client(project='my-project', admin=True)
client
# <google.cloud.bigtable.client.Client at 0x7f1a2f3687f0>

client = bigtable.Client(project='my-project', admin=True).from_service_account_json("key.json")
client
#<google.cloud.bigtable.client.Client at 0x7f1a2f28ffd0>

#编辑

此代码对您有用吗?

import os
from google.cloud import bigtable

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] =  '/home/key.json'
client = bigtable.Client(project='my-project', admin=True)

print client._admin
print client.credentials.service_account_email


这似乎是客户端库的问题。

或者你可以试试:

from google.oauth2 import service_account

from google.cloud import bigtable

key_path = "key.json"

credentials = service_account.Credentials.from_service_account_file(
     key_path, scopes=["https://www.googleapis.com/auth/cloud-platform"])

client = bigtable.Client(credentials=credentials, project=credentials.project_id,admin=True)

print (client._admin)

Authenticating with a service account key file

【讨论】:

我用的是 Python 3.6.3,我也试过 3.8。我也按照上面的方法升级了sdk,还是不行。我还通过 IAM 页面为服务帐户分配了 Bigtable 管理员权限。仍然收到“ValueError:客户端不是管理员客户端。” 在 3.7.3 上试过同样的问题。在 AI Platform notebook 上尝试过,效果不佳。同样的错误

以上是关于Bigtable from_service_account_json() 不工作的主要内容,如果未能解决你的问题,请参考以下文章

BigTable Design - BigTable单元格大小的上限

从 BigTable 中删除与 BigTable 中的正则表达式匹配的行

gcp bigtable 中的列族是啥,数据如何存储在 bigtable 中?

bigtable论文阅读笔记

Cloud Bigtable:区域或区域服务

google bigtable 上的多行