我正在构建将BigQuery数据传输到另一台服务器的应用程序。并尝试使用服务器服务器auth与服务帐户的genereted键。 但是收到了跟随错误。
import json
from httplib2 import Http
import argparse
from oauth2client.client import GoogleCredentials
from googleapiclient.errors import HttpError
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
scopes = ['https://www.googleapis.com/auth/sqlservice.admin']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'credentials_bq.json', scopes)
bigquery_service = build('bigquery', 'v1', credentials=credentials)
query_request = bigquery_service.jobs()
query_data = {
'query': (
'select count( distinct meta_id) from [..table.name] '
'where MSEC_TO_TIMESTAMP(meta_serverTs) >= \'2016-10-28 10:00:00 UTC\'')
}
query_response = query_request.query(
projectId='my_project_id',
body=query_data).execute()
返回错误:
Traceback (most recent call last):
File "test_connection_bq.py", line 35, in <module>
body=query_data).execute()
File "/usr/local/lib/python2.7/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/http.py", line 838, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/bigquery/v2/projects/my_project_id/queries?alt=json returned "Insufficient Permission">
答案 0 :(得分:1)
不确定您是否阅读了access control document?如果没有,请仔细检查并授予服务帐户相应的权限。由于您正在运行查询,因此应该授予bigquery.user。