【问题标题】:Request had insufficient authentication scopes [403] when creating a cluster with Google Cloud Dataproc使用 Google Cloud Dataproc 创建集群时,请求的身份验证范围不足 [403]
【发布时间】:2016-03-03 00:22:08
【问题描述】:

在 Google Cloud Platform 中启用了 DataProc API。我使用与访问 GCS 和大查询相同的密钥来为每个 this example 创建一个新集群。我在下一行收到 Request had insufficient authentication scopes 错误。

 Operation createOperation =
            service.Projects.Regions.Clusters.Create(newCluster, project, dataprocGlobalRegion).Execute();

我的完整代码:

public static class DataProcClient
  {
    public static void Test()
    {
      string project = ConfigurationManager.AppSettings["Google.ProjectName"]; ;
      string dataprocGlobalRegion = "global";
      string zone = "us-east1-b";
      string machineType = "n1-standard-4";
      string clusterName = "sample-cluster";
      int numWorkers = 2;

        String serviceAccountEmail= ConfigurationManager.AppSettings["Google.ServiceAccountEmail"];
        String certificateFile = ConfigurationManager.AppSettings["KeyDirectory"] + ConfigurationManager.AppSettings["Google.CertificateFile"];
        X509Certificate2 certificate = new X509Certificate2(certificateFile, "notasecret", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential credential = new ServiceAccountCredential(
                new ServiceAccountCredential.Initializer(serviceAccountEmail)
                {
                  Scopes = new[] { StorageService.Scope.DevstorageFullControl }
                }.FromCertificate(certificate));

        DataprocService service = new DataprocService(
            new BaseClientService.Initializer()
            {
              HttpClientInitializer = credential,
              ApplicationName = "Dataproc Sample",
            });

        // Create a new cluster:
        Cluster newCluster = new Cluster
        {
          ClusterName = clusterName,
          Config = new ClusterConfig
          {
            GceClusterConfig = new GceClusterConfig
            {
              ZoneUri = String.Format(
                  "https://www.googleapis.com/compute/v1/projects/{0}/zones/{1}",
                  project, zone),
            },
            MasterConfig = new InstanceGroupConfig
            {
              NumInstances = 1,
              MachineTypeUri = String.Format(
                  "https://www.googleapis.com/compute/v1/projects/{0}/zones/{1}/machineTypes/{2}",
                  project, zone, machineType),
            },
            WorkerConfig = new InstanceGroupConfig
            {
              NumInstances = numWorkers,
              MachineTypeUri = String.Format(
                  "https://www.googleapis.com/compute/v1/projects/{0}/zones/{1}/machineTypes/{2}",
                  project, zone, machineType),
            },
          },
        };

        Operation createOperation =
            service.Projects.Regions.Clusters.Create(newCluster, project, dataprocGlobalRegion).Execute();
        // Poll the operation:
        while (!IsDone(createOperation))
        {
          Console.WriteLine("Polling operation {0}", createOperation.Name);
          createOperation =
              service.Projects.Regions.Operations.Get(createOperation.Name).Execute();
          Thread.Sleep(1000);
        }
    }
    static bool IsDone(Operation op)
    {
      return op.Done ?? false;
    }
  }

【问题讨论】:

    标签: c# google-bigquery google-cloud-platform google-cloud-dataproc


    【解决方案1】:

    创建 ServiceAccountCredential 时,更改:

    new[] { StorageService.Scope.DevstorageFullControl }
    

    到:

    new[] { DataprocService.Scope.CloudPlatform }
    

    【讨论】:

    • 感谢您的回复,这是我的一个愚蠢的错误。我确实将代码更改为DataprocService.Scope.CloudPlatform,现在得到 Google.Apis.Requests.RequestError 未知错误。 [500] 错误[消息[未知错误。]位置[-]原因[backendError]域[全局]]
    • 看来我们有一些不匹配的验证逻辑(某些输入超出了我们将返回 400 级错误的位置,但稍后会导致前置条件检查失败,从而导致 500 级错误;我已经提交了一个错误)。同时,确保项目名称全部小写。
    • 所有项目名称都是小写的,我仍然得到同样的错误。感谢您填写错误
    • @TeslaCodes - 随时在 google.com 上给我发电子邮件(我的 SO 名称没有空格)。请提供您的项目 ID,我可以进一步调查。
    • @MichaelSheldon - CloudPlatform 应该暗示 DevstorageFullControl,但两者都明确不应该受到伤害。
    猜你喜欢
    • 2021-01-04
    • 2016-04-28
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多