Ошибки разрешения GCP Cloud Scheduler с учетной записью службы - PullRequest
0 голосов
/ 19 июня 2020

Я создал набор облачных функций, которые работают для приема данных в облачное хранилище Google. Функции были установлены с HTTP-запросом на прием только внутреннего трафика c.

enter image description here

Однако, когда я использую облачный планировщик для вызова функций, я постоянно получаю ошибки разрешений, даже если после указания учетной записи службы для каждой из функций с соответствующими разрешениями. Я установил каждую из функций в области us-central1 и пока безуспешно исследовал документы и переполнение стека. Могу ли я получить помощь в этом? enter image description here

Ответы [ 2 ]

3 голосов
/ 19 июня 2020

Cloud Scheduler - это бессерверный продукт. Это означает, что он не принадлежит вашему проекту и не отправляет запрос в вашу облачную функцию через VP C. Кроме того, Cloud Scheduler еще не поддерживается в VP C S C

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

Используйте свою учетную запись службы и добавьте ее в Cloud Scheduler для вызова вашей функции. Предоставьте ему достаточную роль для этого

Альтернатива

Однако, если вы изначально не хотите, чтобы ваша функция была общедоступной на inte rnet (разрешить внутренний трафик c только входящий режим), есть альтернатива.

Измените свой Cloud Scheduler на публикацию sh сообщения PubSub вместо прямого вызова вашей функции. Затем разверните свою функцию, связанную с PubSub topi c, а не в целевом режиме HTTP.

Возможно, вам потребуется выполнить некоторые обновления в коде, особенно если у вас есть параметры для обработки (изначально в запросе или body, теперь все находится в сообщении PubSub, опубликованном Cloud Scheduler). Но ваша функция может быть вызвана только вашим PubSub topi c и никаким другим способом.

1 голос
/ 19 июня 2020

Согласно документации , для запуска облачной функции из Cloud Scheduler вы должны использовать Pub / Sub. Вот шаги:

  1. Создайте облачную функцию и активируйте ее с помощью топа Pub / Sub c.
  2. Создайте топи Pub / Sub c.
  3. Создайте задание Cloud Scheduler, которое будет вызывать триггер Pub / Sub.

Как только вы это сделаете, вы сможете протестировать задание Cloud Scheduler и проверить, работает ли оно сейчас. Окончательная схема выглядит примерно так:

Cloud Scheduler job => Pub/Sub topic => Cloud Function

После того, как она заработает, не забудьте вернуть роли, предоставленные учетной записи службы Cloud Scheduler, так как этот метод не требует их.

Здесь я нашел сообщение в блоге , которое делает то же самое, но с более практичным подходом, которому вы можете следовать из интерфейса командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...