微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试运行 Google Cloud Scheduler 任务时出现 PERMISSION_DENIED 错误

如何解决尝试运行 Google Cloud Scheduler 任务时出现 PERMISSION_DENIED 错误

我有一个由 Python 脚本组成的 Google Cloud Function。当我测试该功能时,一切都按预期工作。

函数使用 PubSub 作为触发器和服务帐户。我已经设置了一个 Cloud Sheduler 来每天触发 PubSub。但是当我使用“立即运行”按钮测试调度程序时,我收到此权限被拒绝错误

{
  "insertId": "***","jsonPayload": {
    "status": "PERMISSION_DENIED","pubsubTopic": "projects/***/topics/***","@type": "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished","targettype": "PUB_SUB","jobName": "projects/***/locations/europe-west1/jobs/***"
  },"resource": {
    "type": "cloud_scheduler_job","labels": {
      "project_id": "***","location": "europe-west1","job_id": "***"
    }
  },"timestamp": "2021-06-27T21:45:00.807387936Z","severity": "ERROR","logName": "projects/***/logs/cloudscheduler.googleapis.com%2Fexecutions","receiveTimestamp": "2021-06-27T21:45:00.807387936Z"
}

调度程序设置:

enter image description here

我的服务帐户拥有该项目的编辑权限。我怎么知道缺少哪个权限以及在哪里添加它?还是不是服务帐户的问题,而是其他问题?

解决方法

我们在 7 月 25 日星期日突然遇到了类似的问题,这是一个自 2019 年初以来运行良好的生产项目。 禁用 API 不是一个选项,因为我们不想重新创建所有的 cronjob 配置。 所以我们按照 here 的描述创建了 SA。该文档适用于 HTTP 触发的请求,但似乎也适用于 Pub/Sub 触发器。

service-[project-number]@gcp-sa-cloudscheduler.iam.gserviceaccount.com

并赋予 SA 发布/订阅发布角色(我不确定这是否真的需要) 看起来这使 te 技巧并解决了问题。

,

我在 7 月 26 日遇到了同样的问题,从昨天开始我一直在关注一个谷歌论坛,在这个链接上https://issuetracker.google.com/issues/194507663

根据论坛,我执行了以下命令:

gcloud projects add-iam-policy-binding [project-id] --member serviceAccount:service-[project-number]@gcp-sa-cloudscheduler.iam.gserviceaccount.com --role roles/cloudscheduler.serviceAgent

...它奏效了!显然,它为 Cloud Scheduler 上的 Pub/Sub 发布添加了一个 P4SA 帐户。

,

在仔细检查了 Cloud Function、Scheduler 和 PubSub 之后没有任何成功,我遇到了 this answer。禁用并重新启用 API 可以解决问题并解决问题。我猜初始配置的某些部分已被删除左右,重新启用 API 重新创建了所需的一切。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。