1

我正在尝试找到一种方法来自动化在 IBM Cloud 上获取 COS 存储桶大小的任务。

我在不同的帐户上有几十个存储桶,但仍然找不到使用IBM Cloud COS CLI获取此信息的方法,只有其他信息,例如存储桶名称等。

4

2 回答 2

3

COS S3 API不返回存储桶的大小信息。因此,基于 API 的 CLI 也不会返回大小信息。

但这是通过循环遍历桶中各个对象的大小来找到桶大小的间接方法

ibmcloud cos objects --bucket <BUCKET_NAME> --output JSON | jq 'reduce (.Contents[] | to_entries[]) as {$key,$value} ({}; .[$key] += $value) | .Size'

输出以字节为单位

您可能必须遍历可能位于 shell 脚本中的存储桶名称。对于帐户+资源组中的所有存储桶,运行以下命令

ibmcloud cos buckets --output JSON

注意:在运行上述命令之前,请记住使用以下命令将 COS 服务 CRN 添加到配置中

ibmcloud cos config crn --crn <SERVICE_CRN>
于 2020-10-29T07:51:28.940 回答
1

遍历各个对象的答案确实是使用 IBM Cloud CLI 查找该信息的唯一(并且可能是最好的)方法,但还有一些其他方法值得一提。

如果您需要在命令行上优雅地执行此操作,Minio Client提供了 Linux 风格的语法:

mc du cos/$BUCKET

这将返回存储桶的大小(以 MiB 为单位)。

此外,COS 资源配置 API将直接返回一个bytes_used值,不会在后台迭代对象。虽然还没有官方的 CLI 实现(尽管它正在筹备中),但使用 cURL 或 httpie 来查询存储桶相对容易。

curl "https://config.cloud-object-storage.cloud.ibm.com/v1/b/$BUCKET" \
     -H 'Authorization: bearer $TOKEN'
于 2020-10-29T14:24:06.553 回答