Google cloud platform 从云计划程序调用Google cloud函数时,获取权限被拒绝错误
我正在尝试envoke谷歌云功能,它是由云调度器触发的Http。 但每当我尝试运行云调度器时,它总是说Permsion拒绝错误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"
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"
}
我尝试过的解决方案-
gcloud函数添加iam策略绑定云函数--member=“allUsers”-role=“roles/cloudfunctions.invoker”在云计划程序页面上,您必须添加一个服务帐户以用于调用私有云函数。在云计划程序设置中,您必须
- 单击底部的“显示更多信息”
- 在
部分中选择Auth Header
Add OIDC token
- 在计划程序的服务帐户电子邮件中添加服务帐户电子邮件
- 使用与云功能相同的基本URL(部署时提供的URL)填充受众
在云计划程序页面上,您必须添加一个服务帐户,用于调用私有云功能。在云计划程序设置中,您必须
- 单击底部的“显示更多信息”
- 在
部分中选择Auth Header
Add OIDC token
- 在计划程序的服务帐户电子邮件中添加服务帐户电子邮件
- 使用与云功能相同的基本URL(部署时提供的URL)填充受众
在我的例子中,问题与云功能的受限入口设置有关。我将其设置为“仅允许内部流量”,但这只允许来自使用VPC的服务的流量,而云调度器不允许,根据解释: 仅内部HTTP功能只能由VPC网络中创建的HTTP请求调用,例如来自Kubernetes引擎、计算引擎或App Engine灵活环境的HTTP请求。这意味着由发布/订阅、Eventarc、云调度程序、云任务和工作流创建或路由的事件无法触发这些功能 因此,正确的方法是:
- 将入口设置为“所有流量”
- 使用角色云函数调用程序删除allUsers的权限
- 使用角色云函数调用器添加已创建服务帐户的权限
- 或者只需在IAM控制台中全局设置服务帐户的权限(您也可以在创建服务帐户时这样做)
- 将入口设置为“所有流量”
- 使用角色云函数调用程序删除allUsers的权限
- 使用角色云函数调用器添加已创建服务帐户的权限
- 或者只需在IAM控制台中全局设置服务帐户的权限(您也可以在创建服务帐户时这样做)