我正试图找到一种方法来自动化在IBM Cloud上获取COS存储桶大小的任务。
我在不同的帐户上有几十个bucket,但仍然找不到使用IBM Cloud COS CLI获取这些信息的方法,只有其他信息,如bucket名称等。
COS S3 API不返回存储桶的大小信息。因此,基于API的CLI也不会返回大小信息。
但这里有一种间接的方法,可以通过循环遍历bucket 中单个对象的大小来找到bucket的大小
ibmcloud cos objects --bucket <BUCKET_NAME> --output JSON | jq 'reduce (.Contents[] | to_entries[]) as {$key,$value} ({}; .[$key] += $value) | .Size'
输出单位为字节
您可能需要循环遍历bucket。名称可能在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中bucket的大小。
此外,COS资源配置API将直接返回bytes_used
值,而不会在后台对对象进行迭代。虽然还没有正式的CLI实现(尽管它正在酝酿中(,但使用cURL或httpie查询bucket相对容易。
curl "https://config.cloud-object-storage.cloud.ibm.com/v1/b/$BUCKET"
-H 'Authorization: bearer $TOKEN'