Самый простой способ - предоставить служебной учетной записи, используемой этой облачной функцией, доступ к другим проектам.Вам просто нужно перейти к другим проектам и добавить эту учетную запись службы в раздел IAM и дать ей необходимые разрешения, например, compute.admin
в этом случае.
Обратите внимание, что по умолчанию Cloud Functions используетУчетная запись службы App Engine по умолчанию, которая может быть вам неудобна, поскольку приложению App Engine в проекте вашей облачной функции также будет предоставлена роль compute.admin
в других проектах.
Я бы рекомендовал создать выделенную учетную запись службы для этого варианта использования (в том же проекте, что и ваша функция) и назначить ее функции, а затем добавить ее в качестве участника других проектов.
Затем в облачной функции вам нужно будет запускать код для каждого проекта, над которым вы хотите работать.Вы можете создать отдельный клиентский объект для каждого, указав Id проекта в качестве опции конструктора, например:
const compute = new Compute({
projectId: 'your-project-id'
});
Пока вы выполняете цикл только через виртуальные машины в текущем проекте, в котором запускается функция.
Другим вариантом будет определение такой функции в каждом проекте, с которым вы хотите работать.У вас будет «основная» функция, которую вы будете вызывать, она будет воздействовать на виртуальные машины в своем проекте и будет вызывать другие функции в другом проекте, чтобы они действовали на их.