【问题标题】:Error 401 with cloud scheduler while passing Dataflow template as URL via POST request通过 POST 请求将 Dataflow 模板作为 URL 传递时,云调度程序出现错误 401
【发布时间】:2020-12-17 10:54:55
【问题描述】:

我为 Dataflow Batch Jobs 创建了一个自定义模板。现在我需要使用云调度程序每 5 分钟运行一次。 模板存储在云存储中。但是,每当我在调度程序的 POST 请求中传递模板的 URI 时,我都会收到 401 错误

        URI - "https://dataflow.googleapis.com/v1b3/projects/project-id/locations/region/templates:launch?gcsPath=gs://my_bucket/templates/mytemplate 

我不确定正文应该包含什么

错误:

     jsonPayload: {
     targetType: "HTTP"
     @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"
     status: "UNAUTHENTICATED"
     url: "https://storage.cloud.google.com/my_bucket/templates/mydemotemp"
     jobName: "projects/project-id/locations/us-central1/jobs/finaljob"
     }
     httpRequest: {
     status: 401

任何人都可以请帮助如何去做。由于我是 GCP 新手

【问题讨论】:

  • 您是如何配置 Cloud Scheduler 的?您是否添加了身份验证信息?

标签: python-3.x post google-cloud-platform google-cloud-scheduler google-dataflow


【解决方案1】:

当您用于 Cloud scheduler 的服务帐户无权访问存储桶时,可能会发生这种情况。

您可以使用您的服务帐户进行云调度程序身份验证。

如下设置服务帐号,或参考here获取详细指南。

在设置您的云调度程序之前,请为您的服务帐户授予类似“存储对象视图”或更高级别的角色。

请参阅here 以检查存储桶访问所需的 GCS 角色。

【讨论】:

  • 我已添加服务帐户和身份验证。我也可以访问 GET 。但是对于 POST 它会抛出一个错误
  • 这意味着您的服务帐户有权限可以查看您的存储桶对象列表,但没有可以将对象写入存储桶的权限。您是否检查过服务帐户的权限是否正确授予?
  • @anaghas 首先尝试将所有者角色设置为所有者,然后将其降级为您希望它拥有的正确角色,这将强制重新应用角色。
  • @kallusis369 那么 GET 是如何工作的而不是 POST 呢?它与 GET 一起工作正常
  • @Rafael Lemos 你能解释一下怎么做吗?
猜你喜欢
  • 2016-10-28
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
相关资源
最近更新 更多