我有过
1.一个谷歌云函数(main.py + requirements.txt)
- bigQuery数据库
1.工作查询
有人能帮我用一个链接/教程/代码来连接到这个bigquery数据库使用我的谷歌云函数在Python和简单地从数据库查询一些数据,并显示它。
我尝试了https://cloud.google.com/bigquery/docs/reference/libraries,但它与从正常部署连接到大查询有关,而不是Google Cloud Function。
这是我目前所知道的。它的部署没有错误,但在测试时,它给出了500的错误
main.py(公共查询示例
from google.cloud import bigquery
def query_stackoverflow(request):
client = bigquery.Client()
query_job = client.query(
"""
SELECT
CONCAT(
'https://stackoverflow.com/questions/',
CAST(id as STRING)) as url,
view_count
FROM `bigquery-public-data.stackoverflow.posts_questions`
WHERE tags like '%google-bigquery%'
ORDER BY view_count DESC
LIMIT 10"""
)
results = query_job.result() # Waits for job to complete.
return Response("{'message':'successfully connected'}", status=200, mimetype='application/json')
字符串
requirements.txt
google-cloud-bigquery
型
错误日志:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your
request. Either the server is overloaded or there is an error in the
application.</p>
型
2条答案
按热度按时间iqxoj9l91#
1.创建服务帐户并授予必要的角色。
字符串
1.使用刚刚创建为标识x1c 0d1x的服务帐户创建云函数
1.编辑main.py和requirements.txt
第一节第一节第二节
1.部署并测试函数
x 1c 4d 1x
成功!
jq6vz3qz2#
如上所述,您需要创建一个具有正确权限的Service Account来连接BigQuery,但如果您无法授予Owner角色(这是shouldn't be used in production的基本角色),则您的SA或任何用户查询BigQuery所需的基本权限是:
您可以在GCP documentation中阅读有关基本角色的更多信息,其中他们说
注意:基本角色包括所有Google Cloud服务中的数千个权限。在生产环境中,除非别无选择,否则不要授予基本角色。而应授予满足您需要的最有限的预定义角色或自定义角色。