如何禁用所有启用的API/服务?

问题描述 投票:0回答:2

每当我在 GCP 中创建一个新项目时,它都会预加载大量我不想要的 API/服务:

BigQuery API                    
BigQuery Migration API                  
BigQuery Storage API                    
Cloud Datastore API                 
Cloud Debugger API                  
...

如何快速禁用所有这些?我尝试过使用 UI 来完成此操作,但这需要大量的点击和等待。有没有更快、更容易重复的方法?

附注我很确定我不需要这些,但为什么 Google 会预加载它们,而且看起来这么多?

google-cloud-platform
2个回答
4
投票

我在文档中进行了深入研究,并将这一行拼凑在一起,我可以从 Cloud Shell 编辑器运行它:

gcloud services list --format="value(config.name)" \
| xargs -I{} gcloud services disable --force {}

config.name
一开始并不明显,读取整个 JSON 输出的量太大了。我发现这个命令可以帮助理解按键:

gcloud services list --format text --limit 1
---
config.authentication:        {}
config.documentation.summary: A data platform for customers to create, manage, share and query data.
config.monitoring:            {}
config.name:                  bigquery.googleapis.com
config.quota:                 {}
config.title:                 BigQuery API
config.usage.requirements[0]: serviceusage.googleapis.com/tos/cloud
name:                         projects/1036866263612/services/bigquery.googleapis.com
parent:                       projects/1036866263612
state:                        ENABLED

--force
一开始也不明显,当我在没有它的情况下运行单行代码时,我得到了这个错误:

ERROR: (gcloud.services.disable) FAILED_PRECONDITION: The service bigquery.googleapis.com is depended on by the following active service(s): bigquerystorage.googleapis.com,cloudapis.googleapis.com; Please specify disable_dependent_services=true if you want to proceed with disabling all services.
Help Token: Acz52G35wwAHic2MVFBydEf3GnUW8kGOFsau4WeUP72xPGrnZDlWAiUu5HD8AtOxQk0gv0my6uzVEXnampf1_NqXamrmHQWUwSkgOrw6ybqxTd7R
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - subject: ?error_code=100001&service_name=bigquery.googleapis.com&services=bigquerystorage.googleapis.com&services=cloudapis.googleapis.com
    type: googleapis.com
- '@type': type.googleapis.com/google.rpc.ErrorInfo
  domain: serviceusage.googleapis.com
  metadata:
    service_name: bigquery.googleapis.com
    services: bigquerystorage.googleapis.com,cloudapis.googleapis.com
  reason: COMMON_SU_SERVICE_HAS_DEPENDENT_SERVICES

disable_dependent_services=true
没有出现在
gcloud services disable --help
中,但是
--force
的描述明确表明我应该使用该选项。


0
投票

我有一个仅用于翻译的项目。我有多个来源,并认为禁用项目中的 api 是最安全的方法。当然,可以限制 API 密钥仅使用翻译 google api,但是如果添加了新的 api 密钥并且管理员会跳过限制步骤。 api 密钥可用于执行项目中的所有操作。

这是我启动云控制台所做的事情

 #!/bin/bash

# List all services that are enabled on the project
enabled_services=$(gcloud services list --enabled --format="value(config.name)")

# Loop through the list of enabled services
for service in $enabled_services; do
    if [ "$service" != "translate.googleapis.com" ]; then
        echo "Disabling $service..."
        gcloud services disable $service --quiet
    else
        echo "Skipping Cloud Translation API..."
    fi
done

echo "All services except Cloud Translation API have been disabled."
© www.soinside.com 2019 - 2024. All rights reserved.