Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 从云计划程序调用Google cloud函数时,获取权限被拒绝错误_Google Cloud Platform_Google Cloud Functions_Google Cloud Scheduler - Fatal编程技术网

Google cloud platform 从云计划程序调用Google cloud函数时,获取权限被拒绝错误

Google cloud platform 从云计划程序调用Google cloud函数时,获取权限被拒绝错误,google-cloud-platform,google-cloud-functions,google-cloud-scheduler,Google Cloud Platform,Google Cloud Functions,Google Cloud Scheduler,我正在尝试envoke谷歌云功能,它是由云调度器触发的Http。 但每当我尝试运行云调度器时,它总是说Permsion拒绝错误 httpRequest: { status: 403 } insertId: "14igacagbanzk3b" jsonPayload: { @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"

我正在尝试envoke谷歌云功能,它是由云调度器触发的Http。 但每当我尝试运行云调度器时,它总是说Permsion拒绝错误

 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"  
}
我尝试过的解决方案-

  • 按照一些用户的建议,尝试将谷歌云功能与应用引擎放在同一区域
  • 允许访问谷歌提供的云调度器sa服务-***@gcp-sa-cloudscheduler.iamaccount.gserviceaccount.com所有者角色和云功能管理员角色
  • 我的云功能具有允许所有流量的入口设置
  • 我的云调度器仅在我运行以下命令时工作


    gcloud函数添加iam策略绑定云函数--member=“allUsers”-role=“roles/cloudfunctions.invoker”

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

    • 单击底部的“显示更多信息”
    • Auth Header
      部分中选择
      Add OIDC token
    • 在计划程序的服务帐户电子邮件中添加服务帐户电子邮件
    • 使用与云功能相同的基本URL(部署时提供的URL)填充受众
    计划程序的服务帐户电子邮件必须授予角色函数。Invoker


    在云计划程序页面上,您必须添加一个服务帐户,用于调用私有云功能。在云计划程序设置中,您必须

    • 单击底部的“显示更多信息”
    • Auth Header
      部分中选择
      Add OIDC token
    • 在计划程序的服务帐户电子邮件中添加服务帐户电子邮件
    • 使用与云功能相同的基本URL(部署时提供的URL)填充受众
    计划程序的服务帐户电子邮件必须授予角色函数。Invoker


    在我的例子中,问题与云功能的受限入口设置有关。我将其设置为“仅允许内部流量”,但这只允许来自使用VPC的服务的流量,而云调度器不允许,根据解释:

    仅内部HTTP功能只能由VPC网络中创建的HTTP请求调用,例如来自Kubernetes引擎、计算引擎或App Engine灵活环境的HTTP请求。这意味着由发布/订阅、Eventarc、云调度程序、云任务和工作流创建或路由的事件无法触发这些功能

    因此,正确的方法是:

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

    在我的案例中,问题与云功能的受限入口设置有关。我将其设置为“仅允许内部流量”,但这只允许来自使用VPC的服务的流量,而云调度器不允许,根据解释:

    仅内部HTTP功能只能由VPC网络中创建的HTTP请求调用,例如来自Kubernetes引擎、计算引擎或App Engine灵活环境的HTTP请求。这意味着由发布/订阅、Eventarc、云调度程序、云任务和工作流创建或路由的事件无法触发这些功能

    因此,正确的方法是:

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