【问题标题】:google cloud dataflow cross project access for big table谷歌云数据流跨项目访问大表
【发布时间】:2016-10-13 17:51:30
【问题描述】:

我想运行数据流作业以将数据从 google-project-1-table 迁移到 google-project-2-table。 (从一个读取并写入另一个)。这样做时我遇到了许可问题。我已将“GOOGLE_APPLICATION_CREDENTIALS”设置为指向我的项目 1 的凭据文件。下面的 project-2 是 project-1 的权限/角色。 1) service-account (role - Editor) 2) -compute@developer.gserviceaccount.com (role - Editor) 3) @cloudservices.gserviceaccount.com(role - Editor)。

我还需要做些什么来运行这项工作吗?

原因:com.google.bigtable.repackaged.com.google.cloud.grpc.io.IOExceptionWithStatus:响应流错误 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResultQueueEntry$ExceptionResultQueueEntry.getResponseOrThrow(ResultQueueEntry.java:66) 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResponseQueueReader.getNextMergedRow(ResponseQueueReader.java:55) 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamingBigtableResultScanner.next(StreamingBigtableResultScanner.java:42) 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamingBigtableResultScanner.next(StreamingBigtableResultScanner.java:27) 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResumingStreamingResultScanner.next(ResumingStreamingResultScanner.java:89) 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResumingStreamingResultScanner.next(ResumingStreamingResultScanner.java:45) 在 com.google.cloud.bigtable.dataflow.CloudBigtableIO$1.next(CloudBigtableIO.java:221) 在 com.google.cloud.bigtable.dataflow.CloudBigtableIO$1.next(CloudBigtableIO.java:216) 在 com.google.cloud.bigtable.dataflow.CloudBigtableIO$Reader.advance(CloudBigtableIO.java:775) 在 com.google.cloud.bigtable.dataflow.CloudBigtableIO$Reader.start(CloudBigtableIO.java:799) 在 com.google.cloud.dataflow.sdk.io.Read$Bounded$1.evaluateReadHelper(Read.java:178) ... 18 更多 引起:com.google.bigtable.repackaged.io.grpc.StatusRuntimeException:PERMISSION_DENIED:用户无法访问项目:project-2 在 com.google.bigtable.repackaged.io.grpc.Status.asRuntimeException(Status.java:431) 在 com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamObserverAdapter.onClose(StreamObserverAdapter.java:48) 在 com.google.bigtable.repackaged.io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$3.runInContext(ClientCallImpl.java:462) 在 com.google.bigtable.repackaged.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:54) 在 com.google.bigtable.repackaged.io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ... 1 更多

【问题讨论】:

    标签: google-bigquery google-cloud-platform google-cloud-datastore google-cloud-dataflow google-cloud-bigtable


    【解决方案1】:

    数据流安全和权限指南的“Accessing Cloud Platform Resources Across Multiple Cloud Platform Projects”部分对此有一些说明。

    由于该指南没有明确解决 Cloud BigTable,我将尝试根据您的问题在此处清楚地写出要求。

    使用虚假的项目 ID 号,您似乎有:

    • 一个 ID 为 12345 的项目 project-1
    • 一个项目project-2 id 9876
    • project-1 中的大表 google-project-1-table
    • google-project-2-table 中的大表 project-2
    • 将在 project-1 中运行的 Dataflow 管道,您希望:
      • 读自google-project-1-table
      • 写信给google-project-2-table

    准确吗?

    写入 Bigtable 的 Dataflow 工作器作为计算引擎服务帐号运行。那是12345-compute@developer.gserviceaccount.com。此帐户需要能够访问 project-2 并写入 google-project-2-table

    您的错误消息暗示权限失败发生在最粗粒度 - 帐户根本无法访问project-2

    【讨论】:

    • 对不起,我更新了错误信息。我为项目 2 获得的权限被拒绝(同时使用项目 1 凭据)。我浏览了那个文件。有什么我应该特别看的。我还对我用于这项工作的 staginglocation-bucket [两个项目] 具有读/写权限。
    猜你喜欢
    • 2022-06-15
    • 2015-07-17
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多