Как запланировать http-вызов аутентифицированной облачной функции? - PullRequest
1 голос
/ 10 октября 2019

У меня есть своего рода нечасто используемая облачная функция, которая имеет медленную задержку холодного запуска. Я хочу уменьшить эту задержку, сохраняя функцию теплой. Эта функция обычно вызывается только приложением App Engine, поэтому она имеет ограниченные разрешения Cloud Invoker. Cloud Scheduler кажется хорошим кандидатом для проверки функции, чтобы она не перегревалась. Кажется, что прямой http-вызов функции необходим. Несмотря на то, что общее соглашение состоит в том, чтобы планировать функции с использованием pub / sub, одна функция не может быть запущена как по http, так и по pubsub.

Я установил задание Cloud Scheduler следующим образом, но все равно получаю ошибку PERMISSION_DENIEDкогда он работает. Что-то настроено неправильно, или Cloud Scheduler не может вызвать функцию аутентификации напрямую через http? Одно из подозрений заключается в том, что параметр Audience - это на самом деле не параметр «target_audience», ожидаемый Cloud Functions, а стандартный параметр «aud».

enter image description here

1 Ответ

2 голосов
/ 10 октября 2019

Существует несколько потенциальных проблем для расследования:

1) У вас есть разрешение iam.serviceAccounts.actAs для учетной записи службы?

Когда Cloud Scheduler создает токены из учетной записи службы,ему нужно разрешение iam.serviceAccounts.actAs. Это в роли roles/iam.serviceAccountUser. Добавьте эту роль к Cloud Scheduler Service Agent (обратите внимание на слово «Агент»).

2) Разрешает ли Cloud Run разрешение этой учетной записи службы?

Если вы не включили allUsers, который необходимо добавитьсервисная учетная запись в Cloud Run. Это находится в «Показать панель информации» на вкладке «Разрешения». Вы также можете добавить это через интерфейс командной строки с параметром командной строки --service-account.

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