我已经创建了一个简单的Cloud Run作业。我可以通过curl命令触发此代码:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://sync-<magic>.a.run.app(显然是其他的东西)
为Ingress配置了Cloud Run,以允许所有流量,并要求进行身份验证。
我遵循了以下文档:https://cloud.google.com/run/docs/triggering/using-scheduler
并创建了一个服务帐户,授予它Cloud Run Invoker角色,然后设置一个HTTP调度作业,以获得我使用CURL测试的相同URL。我已经选择了Add OIDC Token,并且我提供了上面创建的服务帐户和受众,这与我在curl中使用的URL相同。
当我尝试触发此作业时(或当它基于本机cron触发时),它会失败,并显示以下错误:
{ "status": "PERMISSION_DENIED", "@type": "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished", "targetType": "HTTP", "jobName": "projects/<project>/locations/<region>/jobs/sync", "url": "https://sync-<magic>.a.run.app/" }再说一次,并且有真正的价值。
我尝试使用YOUR_PROJECT_NUMBER适当更新的service-YOUR_PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com作为运行计划作业的服务帐户。它也有同样的错误。
任何关于如何调试它的建议都将不胜感激!
发布于 2021-09-13 14:28:44
以下是我所做的事情,完全解决了这个问题,现在我通过Cloud Scheduler作业运行安全的云运行服务时,得到了success标志。
Cloud Run Invoker & Cloud Scheduler Job Runner permissions
运行你的调度程序,瞧--全是绿色的!尽情享受
发布于 2021-10-15 02:12:31
我已经尝试创建一个新的服务帐户,并赋予它Cloud run invoker角色。禁用Cloud Scheduler API,然后重新启用它。
我唯一能做的就是把Auth头从Add OIDC token改成None。出于某种原因,Cloud Scheduler将None改回Add OIDC token,并触发云正常运行
https://stackoverflow.com/questions/68746496
复制相似问题