通过Google Cloud Function(Python)连接和查询BigQuery数据库

lc8prwob  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(107)

我有过
1.一个谷歌云函数(main.py + requirements.txt)

  1. 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>

iqxoj9l9

iqxoj9l91#

1.创建服务帐户并授予必要的角色。

gcloud iam service-accounts create connect-to-bigquery
gcloud projects add-iam-policy-binding your-project --member="serviceAccount:connect-to-bigquery@your-project.iam.gserviceaccount.com" --role="roles/owner"

字符串
1.使用刚刚创建为标识x1c 0d1x的服务帐户创建云函数
1.编辑main.py和requirements.txt
第一节第一节第二节
1.部署并测试函数

x 1c 4d 1x

成功!

jq6vz3qz

jq6vz3qz2#

如上所述,您需要创建一个具有正确权限的Service Account来连接BigQuery,但如果您无法授予Owner角色(这是shouldn't be used in production的基本角色),则您的SA或任何用户查询BigQuery所需的基本权限是:

  • BigQuery数据查看器
  • BigQuery用户

您可以在GCP documentation中阅读有关基本角色的更多信息,其中他们说
注意:基本角色包括所有Google Cloud服务中的数千个权限。在生产环境中,除非别无选择,否则不要授予基本角色。而应授予满足您需要的最有限的预定义角色或自定义角色。

相关问题