【问题标题】:ERROR: (gcloud.services.enable) User does not have permission to access project (or it may not exist): The caller does not have permission错误:(gcloud.services.enable)用户没有访问项目的权限(或者它可能不存在):调用者没有权限
【发布时间】:2019-07-12 10:24:47
【问题描述】:

我正在寻找一个可以从 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

【问题讨论】:

  • 您将 cloudresourcemanager.googleapis.com 和列表指定为服务。 “列表”不是服务!

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


【解决方案1】:

卢卡斯,这种方式可行:

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

【讨论】:

    【解决方案2】:

    如果您使用 --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
    

    请参阅this 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      相关资源
      最近更新 更多