ОШИБКА: (gcloud.services.enable) У пользователя нет разрешения на доступ к проекту (или он может не существовать): у вызывающего абонента нет разрешения

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

В качестве проверки разрешений, если я запускаю просто «gcloud services enable cloudresourcemanager.googleapis.com», API успешно активируется.

Что мне не хватает?

#!/bin/bash
for project in  $(gcloud projects list --format="value(projectId)")
do
    echo "ProjectId:  $project"
    for enableapi in $(gcloud services enable cloudresourcemanager.googleapis.com list --project $project --format=list)
     do
        echo "    -> Enabled $enableapi"
    done
done

person Lucas    schedule 19.02.2019    source источник
comment
Вы указали cloudresourcemanager.googleapis.com И перечислили как услуги. список - это не услуга!   -  person Nebulastic    schedule 29.07.2020


Ответы (2)


Лукас, такой способ может сработать:

#!/bin/bash
for project in  $(gcloud projects list --format="value(projectId)")
do
    echo "ProjectId:  $project"
    gcloud config set project $project
    gcloud services enable cloudresourcemanager.googleapis.com  --project $project
done

Я подписываюсь на этот документ.

person hkanjih    schedule 19.02.2019

Вам не нужно устанавливать конфигурацию проекта, если вы используете флаг --project для включения службы. Настоящая проблема заключается в том, что вы хотите включить несколько служб в своем сценарии bash, включая службу под названием list, которой не существует. Вот как правильно включить несколько API одновременно:

#!/bin/bash

# Make sure this is a valid bash array!
services=(service1 service2 service3)

# Option 1
for project in  $(gcloud projects list --format="value(projectId)")
do
    gcloud services enable $services --project $project
done

# Option 2
for project in  $(gcloud projects list --format="value(projectId)")
do
    for service in $services
    do
        gcloud services enable $service --project $project
    done
done

См. эту документацию.

person Nebulastic    schedule 29.07.2020