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

如何清理CodeArtifact多包冗余 或设置pip仅指定包走CodeArtifact源

CodeArtifact使用问题解决方案

1. 简便的CodeArtifact批量清理方法

CodeArtifact控制台暂不支持批量删除包,可通过以下两种方案实现清理:

  • 方案1:AWS CLI批量删除
    提前配置好具有codeartifact:ListPackages、codeartifact:DeletePackageVersions权限的AWS CLI凭证,执行对应命令操作:
    1. 列出仓库中所有来自公共源的Python包:
      aws codeartifact list-packages --domain <CodeArtifact域名> --domain-owner <AWS账户ID> --repository <仓库名> --format pypi --origin-type PUBLIC
    2. 删除指定公共包的所有版本:
      aws codeartifact delete-package-versions --domain <CodeArtifact域名> --domain-owner <AWS账户ID> --repository <仓库名> --format pypi --package <待删包名> --versions $(aws codeartifact list-package-versions --domain <CodeArtifact域名> --domain-owner <AWS账户ID> --repository <仓库名> --format pypi --package <待删包名> --query 'versions[*].version' --output text)
    3. 如需批量删除所有公共源同步的包,可将上述命令组合为Shell循环执行,执行前建议加--dry-run参数预览删除列表,避免误删私有包。
  • 方案2:生命周期规则自动清理(更推荐)
    直接在CodeArtifact仓库配置中添加生命周期规则,筛选来源为公共源的包,设置保留时长或保留最新版本数量,规则生效后会自动清理过期的公共同步包,无需手动操作。

2. pip仅指定包从CodeArtifact拉取的实现方法

可以从根源避免公共依赖同步到CodeArtifact占用存储,常用两种实现方式:

  • 方式1:requirements.txt单独指定私有包源
    公共依赖正常声明,仅给私有包指定CodeArtifact源地址,示例如下:
    # 公共依赖默认走官方源
    requests==2.31.0
    pandas==2.1.4
    # 私有包单独指定CodeArtifact源
    your-private-pkg @ https://<域>-<账户ID>.d.codeartifact.<区域>.amazonaws.com/pypi/<仓库名>/simple/your-private-pkg/
    
    执行pip install -r requirements.txt即可,公共依赖会直接从PyPI官方源拉取,不会经过CodeArtifact。
  • 方式2:全局pip配置优先级控制
    在pip配置文件(pip.conf/pip.ini)中设置官方源为默认索引,CodeArtifact为额外索引:
    [global]
    index-url = https://pypi.org/simple/
    extra-index-url = https://<CodeArtifact认证信息>@<域>-<账户ID>.d.codeartifact.<区域>.amazonaws.com/pypi/<仓库名>/simple/
    trusted-host = <域>-<账户ID>.d.codeartifact.<区域>.amazonaws.com
    
    该配置下pip会优先从官方源查找依赖,仅当官方源不存在对应包时才会从CodeArtifact拉取,只会同步你的私有包,不会缓存公共依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:27:03