Как вызвать функцию Google Cloud из планировщика Google Cloud, когда ingressSettings = ALLOW_INTERNAL_ONLY? - PullRequest
1 голос
/ 20 февраля 2020

В том же проекте у меня есть одна функция облака HTTP и планировщик облака, которая отправляет запрос POST этой функции. Я хочу разрешить только запросы из проекта для вызова функции. Тем не менее, когда я устанавливаю параметры входа «Разрешить только внутренний трафик c», планировщик облака получает «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

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Согласно официальной документации:

Для использования Cloud Scheduler ваш облачный проект должен содержать приложение App Engine, расположенное в одном из поддерживаемых регионов. Если в вашем проекте нет приложения App Engine, вы должны его создать.

Обзор Cloud Scheduler

Поэтому найдите местоположение приложения ядра приложения, выполнив:

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

Затем убедитесь, что вы разверните облачную функцию с настройками Ingress Settings, чтобы «Разрешить только внутренний трафик c», в том же месте, что и приложение вашего движка приложения.

Я развернул облачную функцию в том же регионе, что и мое приложение движка приложений, и все заработало как и ожидалось.

0 голосов
/ 21 февраля 2020

, когда вы используете опцию «Разрешить только внутренний трафик c», вам необходимо использовать некоторую аутентификацию в своих облачных функциях (чтобы избежать этого, вы можете использовать опцию «Разрешить все трафики c»).

проверьте третий комментарий, указанный в ссылке: https://serverfault.com/questions/1000987/trigger-google-cloud-functions-from-google-cloud-scheduler-with-private-network

...