【问题标题】:Template file failed to load with Dataflow bulk delete api模板文件无法使用 Dataflow 批量删除 API 加载
【发布时间】:2021-09-22 10:24:38
【问题描述】:

我正在使用https://cloud.google.com/dataflow/docs/guides/templates/provided-utilities#api_2 提供的 REST API 模板从数据存储中删除,但出现以下错误

"error": {
  "code": 403,
  "message": "(55ae8f210de971e7): Template file failed to load: gs://dataflow-templates/dataflow-templates/latest/Datastore_to_Datastore_Delete. Permissions denied. Provided scope(s) are not authorized",
  "status": "PERMISSION_DENIED"
}

它说范围未经授权,但文档说您只需要以下之一:https://www.googleapis.com/auth/compute.readonlyhttps://www.googleapis.com/auth/computehttps://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/userinfo.email

对于我的 oauth2 请求,我也尝试添加 devstorage 范围:https://www.googleapis.com/auth/compute.readonlyhttps://www.googleapis.com/auth/devstorage.read_only

我正在调用 POST https://dataflow.googleapis.com/v1b3/projects/{projectid}/templates:launch?gcsPath=gs://dataflow-templates/latest/Datastore_to_Datastore_Delete

{
    jobName: 'PrunePrintLogs',
    environment: { zone: 'europe-west2' },
    parameters: {
      datastoreReadGqlQuery: 'select * from `00000000test`',
      datastoreReadProjectId: '{projectid}',
      datastoreDeleteProjectId: '{projectid}'
    }
  }

我的项目 ID 已编辑。

我将 Owner 角色添加到获取 oauth2 令牌的帐户中,只是为了临时进行测试,所以不是所有范围都被授权了吗?

【问题讨论】:

    标签: google-cloud-platform google-cloud-datastore google-cloud-dataflow


    【解决方案1】:

    搞定了。首先,我需要删除“环境”参数。其次,我将范围设置为“https://www.googleapis.com/auth/cloud-platform”。看来这个角色也需要是编辑,我无法找到一个更严格的角色来让它发挥作用。

    奇怪的是,当我从邮递员发送请求时,在 Dataflow 作业中显示为 sdk 2.27.0,但我确定我使用 axios 从我的节点应用程序发送的请求完全相同,它显示为 sdk 2.20.0 和警告它最终将不再受支持。

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      相关资源
      最近更新 更多