繁体   English   中英

在谷歌云项目中启用所有 API

[英]Enabling all API in Google Cloud project

在可以完成许多事情之前,谷歌云需要启用 API。

启用只需要一个 CLI 命令,而且通常非常快。 如果我尝试做一些需要未启用 API 的事情,CLI 甚至会建议启用。但它无论如何都会中断开发。

我的问题是为什么默认情况下不启用它们? 如果我在创建新项目后立即启用它们以便以后不用再启用它们,是否可以?

我想了解这种设计的目的并学习最佳实践。

好吧,它们被禁用主要是为了不产生您不打算诱导的成本,以便您了解您在哪个点使用的服务并跟踪每个服务的使用/成本。

此外,某些服务(例如 Pub/Sub)依赖于其他服务,而其他服务(例如 Container Registry(或 Artifact Registry))需要一个 Cloud Storage 存储桶来存储工件,如果您推送 Docker,它会自动创建一个图像或使用 Cloud Build。 所以这些是你需要注意的事情。

启用 API 需要一些时间,具体取决于服务,是的,但这是每个项目的一次性操作。 我不确定您对等待时间的担忧到底是什么,但是如果您想在执行gcloud命令以启用某些 API 的同时运行命令,您可以使用--async标志,它将在后台运行命令而不需要您等待它完成后再运行另一个。

最后,当然,如果您知道自己在做什么,则可以全部启用它们,但风险自负——这是一种更安全的方法,只启用您需要的那些,而且您可能已经意识到,您可以一次启用多个gcloud命令。 在 Container Registry 的示例中,它使用 Cloud Storage,您仍然需要为此付费。

启用服务可以访问(通常是收费的)资源。

将这种资源“表面”限制在您(或客户)需要的资源上被认为是一种很好的做法; 您启用的服务越多,潜在的攻击面和潜在账单就越大。

Google 提供越来越多的服务(可通过API访问)。 您不太可能想要访问所有这些内容。

API 由 Project 启用。 项目创建阶段(包括启用服务)通常只占项目整个生命周期的一小部分; 甚至那些按需创建和拆除的项目。

可以异步启用 API,允许您启用而不是阻止每个服务:

for SERVICE in "containerregistry" "container" "cloudbuild" ...
do
  gcloud services enable ${SERVICE}.googleapis.com --project=${PROJECT} --async
done

在此基础上,自动化您组织的项目配置(脚本、 Terraform部署管理器等)是一种很好的做法。 这为您的项目的创建方式、启用的服务、默认权限等提供了一个基线模板。然后您的开发人员只需即发即弃配置程序(希望也签入您的源代码管理),喝杯咖啡并等待这些为他们完成了步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM