PERMISSION_DENIED ошибка 403 при запуске облачной функции HTTP из облачных задач

Я пытаюсь выполнить руководство Использование облачных задач для запуска облачных функций, но когда я пытаюсь запустить созданную задачу получаю ошибку:

Status code: 7 (PERMISSION_DENIED)
Reason for retrying: PERMISSION_DENIED(7): HTTP status code 403

Я создал новую учетную запись службы с ролью Cloud Functions Invoker. И изменил свой код, чтобы задачи создавались с использованием этой служебной учетной записи:

const task = {
    httpRequest: {
      httpMethod: protos.google.cloud.tasks.v2.HttpMethod.POST,
      url,
      oidcToken: {
        serviceAccountEmail: '[email protected]',
      },

Задача создается из облачной функции.

Я также изменил управление доступом к целевой облачной функции, чтобы allAuthenticatedUsers имел к ней доступ с ролью Cloud Functions Invoker. Я могу протестировать запуск функции с помощью консоли облачных функций без каких-либо ошибок.

Что я пропустил? Любые идеи?


person 0tto    schedule 10.09.2020    source источник


Ответы (2)


Я только что разобрался. Я развернул функцию с ingress-settings=internal-only. Думая, что облачные задачи будут считаться внутренней службой. Мне пришлось изменить это на значение по умолчанию all, и тогда это сработало. internal-and-gclb тоже не сработало.

person 0tto    schedule 11.09.2020
comment
У меня возникла проблема с переносом на конечную точку запуска в облаке. Я развертываю несколько таких же приложений в многоуровневой конфигурации prod-canary и т. Д., И только одно из них установлено на internal-only. Чтобы повторить важность вашего ответа для других путешественников, сначала проверьте Ingress на ваших услугах! - person Jason R Stevens CFA; 16.05.2021
comment
Само собой разумеется, что это также сделает услугу доступной для публики. - person Alexander Trauzzi; 05.06.2021

Перейдите на страницу IAM, найдите учетную запись службы агента службы облачных задач: service-<projectNumber>@gcp-sa-cloudtasks.iam.gserviceaccount.com и предоставьте ей роль roles/iam.serviceAccountTokenCreator.

Это не упоминается в вашем руководстве. Думаю, ты этого не делал.

person guillaume blaquiere    schedule 11.09.2020
comment
Спасибо за ответ, но я только что выяснил настоящую причину. Так что в этом изменении IAM мне не было необходимости. - person 0tto; 11.09.2020