错误:(gcloud.services.enable)用户没有访问项目的权限(或者它可能不存在):调用者没有权限

时间:2019-02-19 00:47:18

标签: bash google-cloud-platform google-cloud-shell

我正在寻找一个可以从Cloud Shell运行的脚本,以在所有项目中启用API。它正在顺利地通过每个项目,但是我收到了每个项目的拒绝权限消息。我是所有者,因此不应有任何许可问题。

作为权限测试,如果我仅运行“ gcloud服务启用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

2 个答案:

答案 0 :(得分:4)

卢卡斯,这种方式可行:

#!/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

我正在关注this doc

答案 1 :(得分:0)

如果使用--project标志启用服务,则不必设置项目配置。真正的问题是您想在bash脚本中启用多个服务,包括不存在的名为“列表”的服务。以下是同时正确启用多个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

请参阅this文档。