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 中的正则表达式匹配的行