我到处看了看,似乎人们要么使用 pubsub、应用程序引擎 http 或没有身份验证的 http。没有太多人展示他们通过带有 oidc 令牌的身份验证访问功能以访问谷歌功能的工作。
我检查了:无法从 GCP 调度程序调用 Google Cloud Function,但似乎没有任何效果。
我遵循的文档: https ://cloud.google.com/scheduler/docs/http-target-auth#using-gcloud_1
- 创建了一个新的服务帐户
- 设置角色(云调度服务代理/云功能服务代理/云调度管理员/云功能调用者......甚至尝试过所有者!)
- 部署了不允许公共(未经身份验证)访问的谷歌函数(一个简单的 helloworld 函数)
- 在云调度程序上设置 cron 作业,以使用此配置针对新部署的功能每分钟运行一次:
- 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"
我看到一个解决方案显示有人创建了一个新项目来实现它,还有其他的吗?
感谢提供的任何帮助。
更新
新的 Google 功能 - 在中央运行(与我的应用引擎应用相同)
实际修复
如果您缺少 cloudscheduler 服务帐户(例如:service-1231231231412@gcp-sa-cloudscheduler.iam.gserviceaccount.com),Http 身份验证任务将无法工作。为了解决这个问题,我必须禁用 api 并重新启用它,它给了我服务帐户,我没有使用这个服务帐户,但是,这是我这样做后唯一改变的因素。