Использование методов API администратора через Cloud Scheduler

Есть ли возможный способ запустить метод API api "Patch" через "Cloud Scheduler"?

Моя функциональность отлично работает при запуске через API Explorer.

w / serveStatus в качестве updateMask и это как тело запроса

{
  "servingStatus": "USER_DISABLED"
}

Но если я запускаю запрос через облачный планировщик, в то время, когда я хочу, чтобы он выполнялся, я получаю ошибку 404.

Target : HTTP

URL : https://appengine.googleapis.com/v1/apps/[APP-ID]/services/default/?updateMask=servingStatus

POST BODY : 
{
  "servingStatus": "USER_DISABLED"
}

Возможно, у меня неправильный синтаксис URL, но я не смог найти ничего, что отличается от того, что я получил.

Примечание. Моя цель - отключить сервер в определенное время.

3 ответа

Из текущей документации по созданию задания планировщика, найденной здесь, если мы посмотрим на --http-method флаг, который мы находим, который задокументирован как ограниченный одним из:

  • удалять
  • получить
  • голова
  • сообщение
  • положил

Явно мы не видим patch, Подтверждая, что patch правильная команда HTTP, мы смотрим здесь и действительно видим, что это правильно.

Следующая мысль, которая может быть полезна для нас, заключается в том, чтобы понять, что Cloud Scheduler может запускать событие HTTP или PubSub, и ему на самом деле все равно, на что нацелено это событие. Это означает, что мы можем создать облачную функцию, которая воплощает идею о том, что при вызове облачной функции она инкапсулирует желаемое завершение работы сервера. Если облачная функция владеет выключением, тогда головоломка меняется от того, как мы заставляем Cloud Scheduler вызывать AppEngine Admin Api, до того, как мы вызываем облачную функцию, которая владеет выключением сервера? Это намного проще и, вероятно, более надежно. Вы можете настроить свою облачную функцию так, чтобы она отвечала на запрос REST через GET или POST, а Cloud Scheduler отправлял этот запрос.

Перед использованием Appengine API необходимо выполнить предварительные шаги, описанные в документации:

  1. Инициализируйте gcloud.
  2. Включите API администратора Google App Engine и любой другой необходимый API.
  3. Авторизуйте запрос HTTPs.

Пожалуйста, ознакомьтесь с кратким описанием использования Cloud Scheduler. Также есть информация, какой API нужно включить.

Правильный охват API Cloud Scheuler - https://cloudscheduler.googleapis.com/

А также информация о том, как использовать запрос PATCH, который должен выглядеть так:

PATCH https://cloudscheduler.googleapis.com/v1/{job.name=projects/*/locations/*/jobs/*}

Сначала создайте сервис в соотв. а затем вставьте сервис в соотв. имя в облачном invoker. ваша проблема решит. в противном случае посмотрите это видео ("https://www.youtube.com/watch?v=t7e0dNSCmzI").