使用 Cloud Scheduler 安排 Dataflow 批处理作业 - 权限被拒绝
Schedule Dataflow batch jobs with Cloud Scheduler - Permission Denied
正如标题所说,我正在尝试 运行 基于此 link 教程的调度程序的数据流
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 jobs must be created in the same region as App engine.
我的 app-engine 在 asia-south1
我的调度程序在 IST 时区
我的桶在美国的多个地区
服务帐号:scheduler-dataflow-demo@my-project-id.iam.gserviceaccount.com
- 数据流管理员(运行ning terraform 来自教程时创建的默认角色)
- Dataflow Worker(试图通过添加这个来解决这个问题,但没有工作)
- 所有者(试图通过添加这个来解决这个问题,但不起作用)
您用于 Cloud scheduler 的服务帐户似乎没有正确的权限。
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
}
根据您所说的link,您应该指定自己的服务帐户电子邮件。
service_account-email = google_service_account.cloud-调度程序-demo.email
您可以成功地为您的服务帐户分配 运行 数据流作业的角色。
这是修复此权限被拒绝问题的步骤
- 在 Google Cloud Project Settings Page
上找到您项目的项目编号
- 抄下号码
- 打开IAM Admin Console Page
- 点击添加。添加成员屏幕打开
- 在“新成员”对话框中,添加以下格式的电子邮件地址:
服务-[项目编号]@gcp-sa-cloudscheduler.iam.gserviceaccount.com
- 用上面的项目编号替换 [project-number]
- 从 Select 角色下拉列表中,选择服务管理 -> Cloud Scheduler 服务代理 -> 保存
我按照这个 link 上的步骤找到了解决方案
https://cloud.google.com/scheduler/docs/http-target-auth
正如标题所说,我正在尝试 运行 基于此 link 教程的调度程序的数据流 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 jobs must be created in the same region as App engine.
我的 app-engine 在 asia-south1
我的调度程序在 IST 时区
我的桶在美国的多个地区
服务帐号:scheduler-dataflow-demo@my-project-id.iam.gserviceaccount.com
- 数据流管理员(运行ning terraform 来自教程时创建的默认角色)
- Dataflow Worker(试图通过添加这个来解决这个问题,但没有工作)
- 所有者(试图通过添加这个来解决这个问题,但不起作用)
您用于 Cloud scheduler 的服务帐户似乎没有正确的权限。
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
}
根据您所说的link,您应该指定自己的服务帐户电子邮件。
service_account-email = google_service_account.cloud-调度程序-demo.email
您可以成功地为您的服务帐户分配 运行 数据流作业的角色。
这是修复此权限被拒绝问题的步骤
- 在 Google Cloud Project Settings Page 上找到您项目的项目编号
- 抄下号码
- 打开IAM Admin Console Page
- 点击添加。添加成员屏幕打开
- 在“新成员”对话框中,添加以下格式的电子邮件地址: 服务-[项目编号]@gcp-sa-cloudscheduler.iam.gserviceaccount.com
- 用上面的项目编号替换 [project-number]
- 从 Select 角色下拉列表中,选择服务管理 -> Cloud Scheduler 服务代理 -> 保存
我按照这个 link 上的步骤找到了解决方案 https://cloud.google.com/scheduler/docs/http-target-auth