首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从云调度程序调用Google云函数时获得权限拒绝错误

从云调度程序调用Google云函数时获得权限拒绝错误
EN

Stack Overflow用户
提问于 2020-09-20 15:49:19
回答 3查看 9.8K关注 0票数 7

我试图调用Google云功能,它是由云调度程序触发的Http。但是,每当我尝试运行云调度程序时,总是会说权限被拒绝错误。

代码语言:javascript
复制
 httpRequest: {
  status: 403   
 }
 insertId: "14igacagbanzk3b"  
 jsonPayload: {
  @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
  jobName: "projects/***********/locations/europe-west1/jobs/twilio-cloud-scheduler"   
  status: "PERMISSION_DENIED"   
  targetType: "HTTP"   
  url: "https://europe-west1-********.cloudfunctions.net/function-2"   
 }
 logName: "projects/*******/logs/cloudscheduler.googleapis.com%2Fexecutions"  
 receiveTimestamp: "2020-09-20T15:11:13.240092790Z"  
 resource: {
  labels: {
   job_id: "***********"    
   location: "europe-west1"    
   project_id: "**********"    
  }
  type: "cloud_scheduler_job"   
 }
 severity: "ERROR"  
 timestamp: "2020-09-20T15:11:13.240092790Z"  
}

我试过的解决方案-

  1. 按照一些用户的建议,尝试将谷歌云功能与App放在同一区域。
  2. 允许访问Google提供的云调度程序sa service-****@gcp-sa-cloudscheduler.iamaccount.gserviceaccount.com所有者角色和云函数管理角色
  3. 我的云功能有允许所有流量的入口设置。

我的云调度程序只有在命令下运行时才能工作。

gcloud函数添加-iam-策略绑定云-函数-成员=“allUsers”-角色=“角色/云函数.调用”

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-20 18:33:08

在页面上,您必须添加一个用于调用私有云函数的服务帐户。在设置中,您必须

  • 点击底部的SHOW MORE
  • Add OIDC token部分中选择Auth Header
  • 在计划程序的服务帐户电子邮件中添加服务帐户电子邮件
  • 使用与云函数相同的基本URL (部署时提供的URL )填充听众。

调度程序的服务帐户电子邮件必须与角色cloudfunctions.invoker一起授予

票数 11
EN

Stack Overflow用户

发布于 2021-05-21 13:40:23

在我的例子中,这个问题与云函数的限制入口设置有关。我将其设置为“只允许内部通信”,但这只允许来自使用VPC的服务的通信,而Cloud不像文档解释的那样:

仅内部HTTP函数只能通过在VPC网络中创建的HTTP请求调用,例如来自Kubernetes Engine、Compute Engine或App Environment的请求。这意味着由Pub/Sub、Eventarc、、Cloud任务和工作流创建或路由的事件不能触发这些函数。

因此,正确的方法是:

  • 将入口设置为“所有交通”
  • 使用角色云函数调用器删除allUsers的权限
  • 添加使用角色云函数调用器创建的服务帐户的权限
  • 或者为IAM控制台中的服务帐户设置全局权限(在创建服务帐户时也可以这样做)
票数 10
EN

Stack Overflow用户

发布于 2022-09-05 13:02:42

如果您尝试了以上所有内容(应该首先查看这些内容,例如添加OIDC令牌、提供服务帐户角色云函数调用等),也请检查以下内容:

对我来说,唯一解决这个问题的方法是在IAM中添加以下google内部服务帐户:

service-YOUR_PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com

并赋予此内部服务帐户以下角色:

Cloud Scheduler Service Agent

另请参阅:

https://cloud.google.com/scheduler/docs/http-target-auth

尤其是在本案中:

https://cloud.google.com/scheduler/docs/http-target-auth#add

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63980844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档