Как вызвать облачную функцию из облачного планировщика с аутентификацией - PullRequest
0 голосов
/ 15 апреля 2020

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

Я выписал: Невозможно вызвать Google Cloud Function из планировщика GCP , но, похоже, ничего не работает.

Документация, за которой я следовал: https://cloud.google.com/scheduler/docs/http-target-auth#using -gcloud_1

  1. создал новую учетную запись службы
  2. установить роли (агент службы облачного планировщика / агент службы облачных функций / администратор облачного планировщика / оператор облачных функций ... даже проверенный владелец!)
  3. развернутая функция Google, которая не разрешает публичный c (неаутентифицированный) доступ (простая функция helloworld)
  4. настройка задания cron в облачном планировщике для запуска каждую минуту против новой развернутой функции с этим конфигурация:
    • url = функция helloworld
    • oid c -ken
    • вновь созданная учетная запись службы
    • аудитория, настроенная на функцию hello world url

результат в журналах облачного планировщика:

Expand all | Collapse all{
 httpRequest: {
 }
 insertId: "ibboa4fg7l1s9"  
 jsonPayload: {
  @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
  jobName: "projects/project/locations/region/jobs/tester"   
  status: "PERMISSION_DENIED"   
  targetType: "HTTP"   
  url: "https://region-project.cloudfunctions.net/tester"   
 }
 logName: "projects/project/logs/cloudscheduler.googleapis.com%2Fexecutions"  
 receiveTimestamp: "2020-04-15T17:50:14.287689800Z"  
 resource: {…}  
 severity: "ERROR"  
 timestamp: "2020-04-15T17:50:14.287689800Z" 

Я видел одно решение, которое показало, что кто-то создает новый проект, чтобы приступить к работе, есть ли другие? ?

* 1 036 * Цените любую предоставленную помощь.

ОБНОВЛЕНИЕ

Новая функция Google - работает в центральном режиме (так же, как приложение для моего приложения)

Новая учетная запись службы - с ролью владельца

Новая запланированная задача - информация

Новая запланированная задача - Статус

Новая запланированная задача - Журналы

АКТУАЛЬНОЕ ИСПРАВЛЕНИЕ

Если вам не хватает учетной записи службы Cloudcheduler (например: service-1231231231412@gcp-sa-cloudscheduler.iam.gserviceaccount.com) Задачи проверки подлинности по протоколу http не работают. Чтобы исправить, мне пришлось отключить api и renable, и это дало мне служебную учетную запись, я не использовал эту служебную учетную запись, но это было единственным изменяющим фактором после того, как я сделал это, чтобы она заработала.

1 Ответ

0 голосов
/ 15 апреля 2020

1.Я создал функцию кома (в том же регионе, что и мое приложение App Engine), которая не разрешает публикацию c доступа

2. Я создал учетную запись службы с ролью владельца

3.Я создал задание облачного планировщика:

url = https://europe-west2-my-project.cloudfunctions.net/my-function

oid c -ken

вновь созданный сервис аккаунт

аудитория = https://europe-west2-my-project.cloudfunctions.net/my-function

enter image description here

Все работало, как и ожидалось. Пожалуйста, проверьте вашу настройку дважды, потому что она должна работать.

...