Межпроектный доступ к потоку данных Google Cloud для большой таблицы

Я хочу запустить задание потока данных для переноса данных из google-project-1-table в google-project-2-table. (Прочтите от одного и напишите другому). При этом у меня возникают проблемы с разрешением. Я установил "GOOGLE_APPLICATION_CREDENTIALS" так, чтобы он указывал на мой файл учетных данных для проекта 1. В проекте-2 ниже указаны разрешения / роли для проекта-1. 1) сервис-аккаунт (роль - редактор) 2) [email protected] (роль - редактор) 3) @ cloudservices.gserviceaccount.com (роль - редактор).

Что еще мне нужно сделать для выполнения задания?

Вызвано: 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.bigtable.repackaged.com. cloud.grpc.scanner.StreamingBigtableResultScanner.next (StreamingBigtableResultScanner.java:42) по адресу com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamingBigtableResultScanner.next (StreamingBigtableResultScanner. bigtable.repackaged.com.google.cloud.grpc.scanner.ResumingStreamingResultScanner.next (ResumingStreamingResultScanner.java:89) в com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResumingStreamingResultScanner.next (ResumingStreamingResultScanner.next (ResumingStreamingResultScanner.next Scanner.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.Executor ... 1 более




Ответы (1)


Для этого есть несколько инструкций в разделе "Доступ к ресурсам облачной платформы в рамках нескольких проектов облачной платформы" руководства по безопасности и разрешениям потока данных.

Поскольку в этом руководстве явно не рассматривается Cloud BigTable, я постараюсь четко изложить здесь требования с точки зрения вашего вопроса.

Используя поддельные номера идентификаторов проектов, похоже, у вас есть:

  • Проект project-1 с идентификатором 12345.
  • Проект project-2 с идентификатором 9876
  • Bigtable google-project-1-table в project-1
  • Bigtable google-project-2-table в project-2
  • A Dataflow pipeline that will run in project-1, which you want to:
    • read from google-project-1-table
    • написать google-project-2-table

Это точно?

Ваши рабочие потоки данных, которые пишут в Bigtable, работают как учетная запись службы вычислительного ядра. Это [email protected]. У этой учетной записи должен быть доступ к project-2 и запись на google-project-2-table.

Ваше сообщение об ошибке означает, что сбой разрешений происходит на самом грубом уровне детализации - учетная запись вообще не может получить доступ к project-2.

person Kenn Knowles    schedule 13.10.2016
comment
извините, я обновил сообщение об ошибке. В разрешении отказано, я получаю для проекта-2 (при использовании учетных данных проекта-1). Я просмотрел этот документ. Есть ли что-нибудь, на что я должен обратить особое внимание? У меня также есть разрешения на чтение и запись [для обоих проектов] в ведро staginglocation, которое я использую для этой работы. - person Omkar Joshi; 13.10.2016