You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更高效地查询AWS CodeArtifact仓库的总存储占用量?

更优的AWS CodeArtifact存储用量查询方法

针对你遇到的CodeArtifact存储用量查询效率问题,以下是几种更高效的解决方案:

1. 利用CloudWatch指标(推荐)

CodeArtifact会自动向CloudWatch推送StorageBytes指标,这是最直接且高效的查询方式,无需遍历所有资产:

  • 控制台操作:
    1. 打开CloudWatch控制台,进入「指标」→「所有指标」
    2. 搜索CodeArtifact并选择对应的指标命名空间
    3. 可按「Domain」(域)或「Repository」(仓库)维度筛选,查看对应范围的存储用量
  • CLI命令:
    aws cloudwatch get-metric-statistics \
      --namespace AWS/CodeArtifact \
      --metric-name StorageBytes \
      --dimensions Name=Domain,Value=你的域名称 \
      --start-time $(date -d "-7 days" +%Y-%m-%dT%H:%M:%SZ) \
      --end-time $(date +%Y-%m-%dT%H:%M:%SZ) \
      --period 86400 \
      --statistics Maximum
    
    替换你的域名称即可获取该域最近7天的每日最大存储量;若需查看单个仓库,可添加维度Name=Repository,Value=你的仓库名称。

2. 通过Cost Explorer查看存储用量

由于你收到了超出免费额度的告警,Cost Explorer可直接关联计费与用量数据:

  • 控制台操作:
    1. 打开Cost Explorer控制台,进入「使用量」页面
    2. 筛选服务为「CodeArtifact」,使用量类型选择「CodeArtifact Storage」
    3. 可按时间、域等维度查看存储用量趋势,数据与计费直接对应,便于核对告警原因

3. 优化原有遍历脚本

若必须通过API遍历资产,可通过并行处理大幅缩短耗时:

#!/bin/bash
total_size=0

# 遍历所有域,并行处理每个域的仓库
aws codeartifact list-domains | jq -r ".domains[].name" | while read domain; do
  # 获取当前域的所有仓库,并行处理每个仓库
  aws codeartifact list-repositories-in-domain --domain "$domain" | jq -r ".repositories[].name" | xargs -P 4 -I {} bash -c '
    repo="{}"
    domain="$1"
    # 获取仓库内所有包,并行处理每个包
    aws codeartifact list-packages --domain "$domain" --repository "$repo" | jq -r ".packages[].package" | xargs -P 8 -I {} bash -c "
      package=\"{}\"
      domain=\"$1\"
      repo=\"$2\"
      # 获取包的所有版本,并行处理每个版本
      aws codeartifact list-package-versions --package \"$package\" --domain \"$domain\" --repository \"$repo\" --format pypi | jq -r ".versions[].version" | xargs -P 16 -I {} bash -c "
        version=\"{}\"
        domain=\"$1\"
        repo=\"$2\"
        package=\"$3\"
        # 计算当前版本的资产总大小
        aws codeartifact list-package-version-assets --domain \"$domain\" --repo \"$repo\" --format pypi --package \"$package\" --package-version \"$version\" | jq -r ".assets[].size" | awk \"{sum += \$1} END {print sum}\"
      " "$domain" "$repo" "$package"
    " "$domain" "$repo"
  ' "$domain" | awk '{total += $1} END {print total}'
done | awk '{total += $1} END {print "Total Artifactory Size: " $total}'

优化说明:

  • 使用xargs -P开启多进程并行处理,可根据你的AWS API并发限制调整进程数(如-P 4代表4个并行进程)
  • 用awk直接汇总资产大小,避免bash循环求和的低效操作
  • 移除中间文件写入,通过管道直接传递数据,减少IO开销

内容的提问来源于stack exchange,提问作者Rafaf Tahsin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:45:07