我到处都看了,似乎人们要么使用 pubsub、应用程序引擎 http 要么使用没有身份验证的 http。没有太多人展示他们通过使用 oidc 令牌进行身份验证来访问谷歌功能的工作。
我查了一下:无法从 GCP Scheduler 调用 Google Cloud Function https://stackoverflow.com/questions/60055422/cannot-invoke-google-cloud-function-from-gcp-scheduler但似乎没有任何效果。
我遵循的文档:https://cloud.google.com/scheduler/docs/http-target-auth#using-gcloud_1 https://cloud.google.com/scheduler/docs/http-target-auth#using-gcloud_1
- 创建了一个新的服务帐户
- 设置角色(云调度程序服务代理/云函数服务代理/云调度程序管理员/云函数调用者...甚至尝试过
所有者!)
- 部署的谷歌功能不允许公共(未经身份验证)访问(一个简单的 helloworld 功能)
- setup cron job on cloud scheduler to run every minute against the new deployed function with this configuration:
- url = helloworld 函数
- oidc 代币
- 新创建的服务帐户
- 观众设置为 hello world 函数 url
云调度程序日志的结果:
Expand all | Collapse all{
httpRequest: {
}
insertId: "ibboa4fg7l1s9"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"
jobName: "projects/project/locations/region/jobs/tester"
status: "PERMISSION_DENIED"
targetType: "HTTP"
url: "https://region-project.cloudfunctions.net/tester"
}
logName: "projects/project/logs/cloudscheduler.googleapis.com%2Fexecutions"
receiveTimestamp: "2020-04-15T17:50:14.287689800Z"
resource: {…}
severity: "ERROR"
timestamp: "2020-04-15T17:50:14.287689800Z"
我看到一个解决方案显示有人创建了一个新项目来实现此目的,还有其他解决方案吗?
感谢所提供的任何帮助。
UPDATE
新的 Google 功能 - 在中央运行(与我的应用程序引擎应用程序相同) https://i.stack.imgur.com/8ZRRI.png
新服务帐户 - 带所有者角色 https://i.stack.imgur.com/30vXE.png
新计划任务 - 信息 https://i.stack.imgur.com/1Qtr3.png
新计划任务 - 状态 https://i.stack.imgur.com/60cRd.png
新计划任务 - 日志 https://i.stack.imgur.com/2tXjp.png
实际修复
如果您缺少 cloudscheduler 服务帐户(例如:
service-1231231231412@gcp-sa-cloudscheduler.iam.gserviceaccount.com)
Http 身份验证任务将无法工作。
为了解决这个问题,我必须禁用 api 并重新启用,它给了我服务帐户,
我没有使用这个服务帐户,但是,这是我执行此操作使其工作后唯一的变化因素。