为什么 gcloud API 不如 gcloud cli 成熟?

Why gcloud APIs are not as mature as gcloud cli?

列出项目中的实例

使用 CLI,我们可以列出所有实例

gcloud computes instances list --project=<PROJECT-NAME>

使用 API,我们可以列出每个区域的实例

https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/instances

我们不能使用 API 列出所有实例吗?

Why gcloud APIs are not as mature as gcloud cli?

Google 云 API 是 gcloud CLI 的基础。我认为您混淆了易用性和原始界面。 API 是一个低级接口,您并不真的希望 API 代表您提供 "intelligence"。否则您无法添加新功能或修复问题。 APIs 应该为一个明确定义的功能(构建块)提供支持。更高级别的软件 (gcloud) 结合了这些功能以呈现给用户。

当您访问一个区域时,您正在连接到一个数据中心。因此,您需要连接到每个数据中心以访问数据中心内的资源。对于大多数部分 Google 区域设计为独立的,这有助于容错、可用性等。

using CLI, we can list all the instances

gcloud compute instances list --project=PROJECT-NAME

此命令在较低级别连接到每个区域并检索实例列表。如果您使用 API,您将需要自己实现逻辑以连接到每个区域并合并结果。

using API, we can list instances per zone

https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/instances

Can not we list all the instances using API?

是的,对每个要为其列出实例的区域执行 API。

您可能已经注意到了一项。对于某些操作 gcloud 似乎做了很多工作并且需要一段时间。例如列出项目中的所有计算实例。我只有一个区域中的实例,所以我的 API 调用非常快。相比之下,gcloud 必须与所有 55 个 Google 区域对话,以查看每个区域中有哪些实例。与仅扫描一个区域的命令相比,这会使命令变慢。

总而言之,gcloud 使您易于使用,API 为您提供原始动力。