当ingressSettings=ALLOW_INTERNAL_ONLY时,如何从Google Cloud Schedu



在同一个项目中,我有一个HTTP Cloud Function和一个Cloud Scheduler,它们向该函数发送POST请求。我想只允许来自项目内部的请求调用函数。然而,当我将Ingress Settings设置为"Allow internal traffic only"时,Cloud Scheduler会得到"PERMISSION_DENIED">

以下是错误日志(已编辑(


httpRequest: {
status: 403   
}
insertId: "insert_id"  
jsonPayload: {
@type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
jobName: "projects/project_name/locations/location/jobs/cloud_scheduler_job"   
status: "PERMISSION_DENIED"   
targetType: "HTTP"   
url: "https://location-project_name.cloudfunctions.net/cloud_function_name"   
}
logName: "projects/project_name/logs/cloudscheduler.googleapis.com%2Fexecutions"  
receiveTimestamp: "2020-02-20T13:15:43.134508712Z"  
resource: {
labels: {
job_id: "cloud_scheduler_name"    
location: "location"    
project_id: "project_id"    
}
type: "cloud_scheduler_job"   
}
severity: "ERROR"  
timestamp: "2020-02-20T13:15:43.134508712Z"  
}

链接到ingressSettings 的UI选项

根据官方文件:

若要使用Cloud Scheduler,您的云项目必须包含应用程序引擎位于受支持区域之一的应用程序。如果您的项目没有应用程序引擎应用程序,您必须创建一个。

Cloud Scheduler概述

因此,通过运行找到应用程序引擎应用程序的位置

gcloud app describe
#check for the locationId: europe-west2

然后,确保您将带有入口设置的云功能"仅允许内部流量"部署到与应用程序引擎应用程序相同的位置。

我在与应用程序引擎应用程序相同的区域部署了一个云功能,一切都如预期。

当您使用"仅允许内部流量"选项时,您需要在云功能中使用某种身份验证(为了避免这种情况,您可以使用"允许所有流量"选项(。

请查看链接中提供的第三条评论:https://serverfault.com/questions/1000987/trigger-google-cloud-functions-from-google-cloud-scheduler-with-private-network

相关内容

  • 没有找到相关文章

最新更新