根据Cloud SDK - gcloud主题格式的文档,它提供了一个选项--format
,可以有效地控制输出的方式。
我注意到,当我使用--format=json
或--format=yaml
没有额外的参数时,gcloud
产生的输出总结了每个可用的字段要用这个API检索,但是,我无法弄清楚,如何达到与--table
相同的行为,而不需要枚举每个服务字段。
考虑下面的例子:
gcloud app regions list --format=json --limit 1
[
{
"flexible": true,
"region": "asia-east1",
"search_api": false,
"standard": true
}
]
它显示了AppEngine区域资源可用字段的详尽枚举,但是当我想要输出几乎相同的信息时,特别是当我不确切地知道字段的完整范围或确切的命名时,我应该像下面这样单独枚举每个字段。
gcloud app regions list
--format="table[box,all-box,title='AppEngine APAC regions'](region,standard,flexible,search_api)"
--limit 9
┌────────────────────────────────────────────────────────────────────────────────────┐
│ AppEngine APAC regions │
├──────────────────────┬───────────────────┬───────────────────┬─────────────────────┤
│ REGION │ SUPPORTS STANDARD │ SUPPORTS FLEXIBLE │ SUPPORTS GAE SEARCH │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-east1 │ YES │ YES │ NO │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-east2 │ YES │ YES │ YES │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-northeast1 │ YES │ YES │ YES │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-northeast2 │ YES │ YES │ YES │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-northeast3 │ YES │ YES │ YES │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-south1 │ YES │ YES │ YES │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-southeast1 │ YES │ YES │ NO │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ asia-southeast2 │ YES │ YES │ YES │
├──────────────────────┼───────────────────┼───────────────────┼─────────────────────┤
│ australia-southeast1 │ YES │ YES │ YES │
总之,有没有一种更简单的方法来实现--table
格式的上述行为,就像这样
gcloud app regions list --format="table" --limit 9 # Won't work
作为参考,下面是一个根据AWS表输出格式使用表格视图表示的示例,没有提供额外的参数
aws iam list-users --output table
产生以下输出
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| ListUsers |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|| Users ||
|+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+|
|| Arn | CreateDate | PasswordLastUsed | Path | UserId | UserName ||
|+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+|
|| arn:aws:iam::123456789012:user/Admin | 2014-10-16T16:03:09+00:00 | 2016-06-03T18:37:29+00:00 | / | AIDA1111111111EXAMPLE | Admin ||
|| arn:aws:iam::123456789012:user/backup/backup-user | 2019-09-17T19:30:40+00:00 | | /backup/ | AIDA2222222222EXAMPLE | backup-user ||
|| arn:aws:iam::123456789012:user/cli-user | 2019-09-17T19:11:39+00:00 | | / | AIDA3333333333EXAMPLE | cli-user ||
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
No.
--table
的文档解释了"这种格式需要一个投影来定义表列"。
这不是一个不合理的请求,但我怀疑原因是表更适合于平面非分层数据。嵌套类型可以作为嵌套表输出,但这可能会变得混乱。
你想要达到的目标是什么?
您可以通过附加标志--log-http
来确定任何gcloud
命令底层的API调用。
然后,使用API资源管理器,你可以找到这些方法,例如App Engine Admin API,这里是apps.locations.list
和…最后……响应类型。本例中为ListLocationsResponse
.
此类型对应于例如gcloud app regions list
的输出。