перекрестный доступ к проекту Google cloud dataflow для большой таблицы

#google-bigquery #google-cloud-platform #google-cloud-datastore #google-cloud-dataflow #google-cloud-bigtable

#google-bigquery #google-облачная платформа #google-cloud-хранилище данных #google-cloud-поток данных #google-cloud-bigtable

Вопрос:

Я хочу запустить задание потока данных для переноса данных из Google-project-1-table в Google-project-2-table. (Чтение из одного и запись в другой). При этом у меня возникает проблема с разрешением. Я установил «GOOGLE_APPLICATION_CREDENTIALS», чтобы указать на мой файл учетных данных для project-1. В project-2 ниже приведены разрешения / роли для project-1. 1) учетная запись службы (роль — редактор) 2) -compute@developer.gserviceaccount.com (роль — Редактор) 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.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.Возобновление потока результатов сканирования.next(ResumingStreamingResultScanner.java:89) в com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.Возобновление потока результатов.next(ResumingStreamingResultScanner.java:45) в com.google.cloud.bigtable.поток данных.CloudBigtableIO $ 1.далее (CloudBigtableIO.java:221) на com.google.cloud.bigtable.поток данных.CloudBigtableIO $ 1.далее (CloudBigtableIO.java:216) на com.google.cloud.bigtable.поток данных.CloudBigtableIO $Reader.advance(CloudBigtableIO.java:775) в com.google.cloud.bigtable.поток данных.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: 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.Запустите context(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

Ответ №1:

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

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

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

  • Проект project-1 с идентификатором 12345.
  • Проект project-2 с идентификатором 9876
  • Большая таблица google-project-1-table в project-1
  • Большая таблица google-project-2-table в project-2
  • Конвейер потока данных, который будет выполняться, в project-1 котором вы хотите:
    • читать из google-project-1-table
    • напишите в google-project-2-table

Это точно?

Ваши рабочие потоки данных, которые записывают в Bigtable, выполняются от имени учетной записи службы compute engine. То есть 12345-compute@developer.gserviceaccount.com . Эта учетная запись должна иметь возможность доступа project-2 и записи google-project-2-table .

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

Комментарии:

1. извините, я обновил сообщение об ошибке. Я получаю отказ в разрешении для project-2 (при использовании учетных данных project-1). Я просмотрел этот документ. Есть ли что-нибудь, на что я должен обратить особое внимание. У меня также есть разрешения на чтение / запись [для обоих проектов] в staginglocation-bucket, который я использую для этой работы.