我正在尝试找到一种方法来自动化在 IBM Cloud 上获取 COS 存储桶大小的任务。
我在不同的帐户上有几十个存储桶,但仍然找不到使用IBM Cloud COS CLI获取此信息的方法,只有其他信息,例如存储桶名称等。
我正在尝试找到一种方法来自动化在 IBM Cloud 上获取 COS 存储桶大小的任务。
我在不同的帐户上有几十个存储桶,但仍然找不到使用IBM Cloud COS CLI获取此信息的方法,只有其他信息,例如存储桶名称等。
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>
遍历各个对象的答案确实是使用 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'