如何找出Cloud Functions未在使用的Cloud Storage构件列表?
获取Cloud Functions当前使用的构件方法
1. 单个函数获取当前使用的构件哈希
使用gcloud functions describe命令提取函数的镜像URI,从中得到对应的构件sha256哈希:
gcloud functions describe YOUR_FUNCTION_NAME --region YOUR_REGION --format="value(serviceConfig.imageUri)"
返回的镜像URI格式类似eu.gcr.io/project-id/functions/function-name:sha256-abcdef123456...,其中sha256-后面的字符串就是存储桶中构件文件的哈希值(将-替换为:即可匹配存储路径中的文件名)。
2. 批量获取所有函数的使用构件哈希
如果要一次性获取所有10个函数的构件信息,用以下命令遍历所有函数并提取镜像URI:
gcloud functions list --region YOUR_REGION --format="value(name)" | while read func; do echo "$func: $(gcloud functions describe $func --region YOUR_REGION --format="value(serviceConfig.imageUri)")" done
将输出中所有的sha256哈希值收集起来,这些就是当前正在被函数使用的构件标识。
3. 关联存储桶构件并清理旧文件
存储桶中构件的路径格式为gs://eu.artifacts.project-id.appspot.com/containers/images/sha256:abcdef123456...,将收集到的使用中哈希值替换成sha256:前缀的格式,即可匹配到正在使用的构件文件。
对比存储桶内的所有构件文件,未出现在收集列表中的就是可安全删除的旧构件。若要批量删除,可先将使用中的哈希存入used-shas.txt(每行格式为sha256:abcdef123456...),再执行:
gsutil ls gs://eu.artifacts.project-id.appspot.com/containers/images/ | grep -v -f used-shas.txt | xargs gsutil rm
注意:执行删除前务必确认过滤后的文件列表是已废弃的构件,避免误删正在使用的资源。
内容的提问来源于stack exchange,提问作者Tom3652
相关产品推荐
相关产品推荐

