Google bigquery Serviceaccount没有bigquery.jobs.create权限

Google bigquery Serviceaccount没有bigquery.jobs.create权限,google-bigquery,Google Bigquery,授予服务帐户的权限为“所有者”和“bigquery管理员” 当我尝试执行上述代码时,其错误如下所示: { "error": { "errors": [ { "domain": "global", "reason": "accessDenied", "message": "Access Denied: Project project-xxxx: The user projectbigquery@project-xxxx.iam.gserviceaccount.com does not

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

当我尝试执行上述代码时,其错误如下所示:

{ "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." } ],
}}

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

您可以使用
keyFilePath
参数执行此操作:

$bigQuery = new BigQueryClient([
            'projectId' => 'project-xxx',
            'keyFilePath' => '/path/to/file.json'   
        ]);
此外,使用此命令检查您是否已授予服务帐户权限:

gcloud项目获取iam策略项目ID

编辑:

让我们采用另一种方法创建服务帐户,并从头开始向其授予权限

  • 创建新服务帐户:

    gcloud iam服务帐户创建[名称]

  • 授予权限:

  • 创建凭据文件:
  • 将此文件的路径添加到
    BigQueryClient
    构造函数并运行代码

  • 在创建与以前的帐户具有相同权限的新服务帐户后,其工作。我不知道以前的帐户有什么问题。服务帐户可能存在一些问题。

    在google cloud shell上,我需要在何处启动此命令?您是否正在创建构造函数,为凭据json文件指定
    keyFilePath
    参数?在
    IAM&admin>Service Accounts
    Google Cloud Console选项卡中,还要检查这些凭据是否是最新的。@Krunal我已经用完全详细的步骤编辑了我的答案。如果服务帐户被删除并用相同的名称重新创建,可能会导致意外行为。这就是为什么创建一个新的服务帐户解决了这个问题。检查这个,再次阅读答案,我已经提到我已经给予了同样的许可,我没有提到任何关于名字的事情。
    $bigQuery = new BigQueryClient([
                'projectId' => 'project-xxx',
                'keyFilePath' => '/path/to/file.json'   
            ]);
    
    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