#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, который я использую для этой работы.