Планирование пакетных заданий Dataflow с помощью Cloud Scheduler - Permission Denied

как сказано в названии, я пытаюсь запустить поток данных с помощью планировщика на основе учебника по этой ссылке https://cloud.google.com/community/tutorials/schedule-dataflow-jobs-with-cloud-scheduler

Я думаю, что я уже выполнил точный шаг в руководстве (просто другая конфигурация региона), и планировщик создан, но когда я пытаюсь запустить планировщик, я получаю эту ошибку

{ "status": "PERMISSION_DENIED", "jobName": "projects/my-project-id/locations/asia-south1/jobs/scheduler-demo", "url": "https://dataflow.googleapis.com/somerandomidthatidontknow/projects/my-project-id/locations/asia-south1/templates:launch?gcsPath=gs://my-testing-bucket/templates/dataflow-demo-template", "@type": "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished", "targetType": "HTTP" }

это из-за региона? потому что в учебнике сказано

Задания Cloud Scheduler должны создаваться в том же регионе, что и движок приложений.

мой движок приложения находится на asia-south1

мой планировщик находится в часовом поясе IST

и моя корзина находится в нескольких регионах США в США

учетная запись службы: [email protected]

  1. Администратор потока данных (роль по умолчанию создается при запуске terraform из учебника)
  2. Dataflow Worker (пытается исправить эту проблему, добавляя это, но не работает)
  3. Владелец (пытается исправить эту проблему, добавляя это, но не работает)

person Alexander Chandra    schedule 16.12.2020    source источник


Ответы (2)


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

http_target {
    http_method = "POST"
    uri = "https://dataflow.googleapis.com/v1b3/projects/${var.project_id}/locations/${var.region}/templates:launch?gcsPath=gs://${var.bucket}/templates/dataflow-demo-template"
    oauth_token {
      service_account_email = google_service_account.cloud-scheduler-demo.email
    }

Согласно указанной вами ссылке, Вы должны указать свой адрес электронной почты служебного аккаунта.

service_account-email = google_service_account.cloud-scheduler-demo.email

Вы можете дать своей учетной записи службы роль для успешного выполнения задания потока данных.

person kallusis369    schedule 17.12.2020

Вот шаг, чтобы исправить эту проблему с отказом в разрешении

  1. Найти номер проекта для вашего проекта на Страница настроек проекта Google Cloud
  2. Скопируйте номер
  3. Откройте IAM Страница консоли администратора
  4. Щелкните Добавить. Откроется экран добавления участников.
  5. В диалоговом окне «Новые участники» добавьте адрес электронной почты в формате: service- [номер-проекта] @ gcp-sa-cloudscheduler.iam.gserviceaccount.com.
  6. Замените [номер-проекта] номером вашего проекта, указанным выше
  7. В раскрывающемся списке Выберите роль выберите Управление службами - ›Агент службы облачного планировщика -› сохранить.

Я нашел решение, выполнив шаг по этой ссылке https://cloud.google.com/scheduler/docs/http-target-auth

person Alexander Chandra    schedule 17.12.2020
comment
Я наткнулся на это, но это не решило проблему. В документе говорится, что service- [номер-проекта] @ gcp-sa-cloudscheduler.iam.gserviceaccount.com должен создаваться по умолчанию при включении api планировщика, не так ли? Если, конечно, он не был включен в 2019 году - person vinayhudli; 01.05.2021