Google Cloud недостаточно для авторизации в облачной среде - PullRequest
0 голосов
/ 11 декабря 2019

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

gcloud functions call stopInstancePubSub --data '{"data":"<instance data in base64>"}' 

. Это прекрасно работает, когда я запускаю его с локального компьютера или с консоли gcloud. Но мне нужно иметь возможность запускать его изнутри самого экземпляра, и когда я пытаюсь это сделать, выдается следующее сообщение об ошибке:

ERROR: (gcloud.functions.call) ResponseError: status=[403], code=[Forbidden], message=[Request had insufficient authentication scopes.]

По сути, я хочу иметь возможность запланировать сценарий набегать ежедневно (это будет работать около 2-3 часов). Поэтому я использовал облачный планировщик для вызова облачной функции, которая запускает скрипт каждый день в 12:00, и он работает, но мне нужно иметь возможность завершить работу экземпляра (чтобы избежать ненужных добавлений) после завершения работы скрипта,Итак, мне нужно иметь возможность вызывать функцию из самого экземпляра.

Любые другие предложения для достижения моей цели будут высоко оценены.

1 Ответ

2 голосов
/ 12 декабря 2019

Я полагаю, что вы должны разрешить полный доступ ко всем облачным API в экземпляре, который работает как учетная запись службы ссылка .

Затем назначьте необходимые роли учетной записи службы для вызоваОблачная функция (role / cloudfunctions.invoker).

Чтобы изменить области, в разделе Доступ к областям установите соответствующие области для своих нужд. Рекомендуется указывать только те области доступа, которые требуются вашему экземпляру виртуальной машины. Если вы не уверены, какие именно области доступа установить, выберите «Разрешить полный доступ ко всем облачным API-интерфейсам», а затем обязательно ограничьте доступ, установив роли IAM.

...