gpt4 book ai didi

google-bigquery - Serviceaccount 没有 bigquery.jobs.create 权限

转载 作者:行者123 更新时间:2023-12-04 07:48:30 31 4
gpt4 key购买 nike

授予服务帐户的权限是“所有者”和“bigquery 管理员”。

$bigQuery = new BigQueryClient([
'projectId' => 'project-xxx',
]);

$query = "SELECT * FROM `project-xxxx.analytics_xxx.events_xxx` where event_name='first_open' LIMIT 100";

$jobConfig = $bigQuery->query($query);
$queryResults = $bigQuery->runQuery($jobConfig);
print_r($queryResults);

当我尝试执行上面的代码时,它显示以下错误:
{ "error": 
{ "errors": [ { "domain": "global", "reason": "accessDenied",
"message": "Access Denied: Project project-xxxx: The user
projectbigquery@project-xxxx.iam.gserviceaccount.com does not have
bigquery.jobs.create permission in project project-xxxx." } ],
}}

最佳答案

您需要将服务帐户的凭据指定为 BigQueryClient constructor 的参数。 .

您可以通过 keyFilePath 来实现范围:

$bigQuery = new BigQueryClient([
'projectId' => 'project-xxx',
'keyFilePath' => '/path/to/file.json'
]);

此外,请使用以下命令检查您是否授予了服务帐户的权限:
gcloud projects get-iam-policy yourProjectID
编辑:

让我们采用不同的方法来创建服务帐户并从头开始为其授予权限。
  • 创建新的服务帐户:
    gcloud iam service-accounts create [NAME]
  • 授予权限:
  • gcloud projects add-iam-policy-binding [PROJECT_ID] --member "serviceAccount:[NAME]@[PROJECT_ID].iam.gserviceaccount.com" --role "roles/bigquery.admin"
  • 创建凭证文件:
  • gcloud iam service-accounts keys create [FILE_NAME].json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
  • 将此文件的路径添加到BigQueryClient构造函数并运行您的代码。
  • 关于google-bigquery - Serviceaccount 没有 bigquery.jobs.create 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54983342/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com