Использование методов API администратора через Cloud Scheduler - PullRequest
0 голосов
/ 29 марта 2019

Есть ли способ запустить метод API api администратора «Patch» через «Cloud Scheduler»?

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

с показом статуса обновления в качестве маски и это как тело запроса

{
  "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, но я не смог найти ничего, что отличается от того, что я получил.

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

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

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

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

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

Правильная область действия для Cloud Scheuler API is https://cloudscheduler.googleapis.com

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

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

0 голосов
/ 01 апреля 2019

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

  • delete
  • get
  • head
  • post
  • put

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

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

...