拓冰建站拓冰建站
首页 / 资讯中心 / 正文

AWS CLI CodeArtifact list-package-versions 命令全解:列出仓库中软件包的全部版本

AWS CLI CodeArtifact list-package-versions 命令全解列出仓库中软件包的全部版本【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本指南围绕 AWS CLI 的codeartifact list-package-versions命令展开结合 aws-cli 仓库中的官方示例与 CodeArtifact 服务模型源码系统讲解该命令的参数语义、输出结构、分页机制与常见实战用法。读完本文你将能够独立使用该命令查询任意 CodeArtifact 仓库中软件包的版本清单并按状态、来源、排序方式精细过滤结果同时理解其底层 API 调用与分页原理。一、命令概览list-package-versions能做什么codeartifact list-package-versions用于返回指定 CodeArtifact 仓库中某个软件包package的全部版本列表。该命令对应 CodeArtifact API 的ListPackageVersions操作官方文档说明其返回一组PackageVersionSummary对象描述每个版本的状态、版本号与修订号revision。该命令在实际工作中最常见的场景包括发布前核对仓库中已存在的版本号避免重复发布或冲突排查某版本状态异常如Unfinished、Disposed的包配合--status参数定向过滤审计软件包版本来源确认版本是内部直接发布INTERNAL还是经外部连接摄取EXTERNAL。在 aws-cli 仓库中该命令的官方示例位于 awscli/examples/codeartifact/list-package-versions.rst其命令定义与参数约束则来自 awscli/botocore/data/codeartifact/2018-09-22/service-2.json 中的ListPackageVersions操作模型。二、命令语法与必需参数命令基本语法如下aws codeartifact list-package-versions \ --domain domain \ --repository repository \ --format format \ --package package根据 service-2.json 中ListPackageVersionsRequest的定义以下 4 个参数为必需参数参数说明--domain包含目标仓库的 CodeArtifact 域domain名称。--repository包含目标软件包的仓库repository名称。--format软件包格式决定版本的分类方式。--package要查询版本的软件包名称。其中--format的取值由 service model 中的PackageFormat枚举限定当前支持 8 种格式npm、pypi、maven、nuget、generic、ruby、swift、cargo这 8 种格式覆盖了 JavaScript、Python、Java、.NET、通用包、Ruby、Swift 与 Rust 生态也就是说该命令对所有主流包格式统一生效无需区分格式语法差异。三、可选参数详解从过滤到分页除 4 个必需参数外ListPackageVersions还支持一批可选参数全部以 querystring 形式随请求发送。它们的语义与取值均可从 service model 中直接确认1.--domain-owner域的 12 位 AWS 账户号不含连字符或空格。仅当你的域属于其他 AWS 账户时需要显式指定默认情况下使用当前凭证所属账户。2.--namespace软件包的命名空间其含义随包格式不同而不同依据 service model 文档Maven命名空间为groupIdnpm / Swift命名空间为scopegeneric命名空间即包自身的namespacePython、NuGet、Ruby、Cargo不存在对应的命名空间组件查询这些格式时无需也无法指定该参数。例如查询 npm scoped 包my-org/my-pkg时应传--namespace my-org --package my-pkg。3.--status按版本状态过滤取值枚举PackageVersionStatusPublished、Unfinished、Unlisted、Archived、Disposed、Deleted值得特别注意的是不加--status时默认返回所有状态的版本。这在生产环境中可能意味着查询结果中混入Disposed已废弃或Deleted已删除的版本因此按需过滤状态是保持输出干净的关键手段。4.--sort-by排序方式当前枚举值仅有一个PUBLISHED_TIME表示按发布时间排序通常配合--max-results取最近发布的版本。5.--max-results每页最大返回条数类型为整数取值范围11000。默认行为由服务端决定当版本数量超过单页上限时需要结合--next-token翻页。6.--next-token下一页结果的令牌。将上一次响应的nextToken原样传入即可获取下一组结果这是 CodeArtifact 统一的分页约定。7.--origin-type按版本来源过滤取值枚举PackageVersionOriginTypeINTERNAL、EXTERNAL、UNKNOWNINTERNAL版本是直接发布到域内某个仓库的EXTERNAL版本是通过外部连接external connection从上游摄取进来的UNKNOWN来源未知。该参数适合做供应链来源审计例如只列出经由外部连接同步而来的版本检查是否存在异常上游包。四、官方示例查询 npm 包 kind-of 的版本列表以下命令与输出直接取自官方示例 awscli/examples/codeartifact/list-package-versions.rst用于查询域test-domain、仓库test-repo中 npm 格式包kind-of的所有版本aws codeartifact list-package-versions \ --package kind-of \ --domain test-domain \ --repository test-repo \ --format npm输出示例{ defaultDisplayVersion: 1.0.1, format: npm, package: kind-of, versions: [ { version: 1.0.1, revision: REVISION-SAMPLE-1-C7F4S5E9B772FC, status: Published }, { version: 1.0.0, revision: REVISION-SAMPLE-2-C752BEEF6D2CFC, status: Published }, { version: 0.1.2, revision: REVISION-SAMPLE-3-654S65A5C5E1FC, status: Published }, { version: 0.1.1, revision: REVISION-SAMPLE-1-C7F4S5E9B772FC, status: Published }, { version: 0.1.0, revision: REVISION-SAMPLE-4-AF669139B772FC, status: Published } ] }输出字段逐一解读对照 service-2.json 中ListPackageVersionsResult与PackageVersionSummary结构体输出包含以下关键字段字段含义defaultDisplayVersion默认展示版本规则依格式而定Maven 与 PyPI 取最近发布的版本npm 取latest标签指向的版本若latest标签未设置则取最近发布的版本。示例中为1.0.1。format请求的包格式回显为npm。namespace包的命名空间若适用示例中 npm 无 scope 故未出现。package软件包名称回显为kind-of。versions[]PackageVersionSummary数组每个元素包含version版本号、revision该版本的修订标识用于追踪同一版本号下的内容变更、status当前状态以及可选的origin来源信息。值得强调的细节是同一版本号可能对应多个 revision示例中0.1.1与1.0.1的 revision 均为REVISION-SAMPLE-1-...而0.1.0为REVISION-SAMPLE-4-...。revision 的存在意味着版本内容可以被重新发布覆盖因此在做版本完整性校验时应同时关注version与revision两个字段。五、实战组合过滤与排序将上述参数组合使用即可实现精确查询。例如列出仓库中所有已废弃Disposed的版本aws codeartifact list-package-versions \ --domain test-domain \ --repository test-repo \ --format npm \ --package kind-of \ --status Disposed仅列出通过外部连接同步进仓库的版本供应链审计场景aws codeartifact list-package-versions \ --domain test-domain \ --repository test-repo \ --format maven \ --namespace com.example \ --package my-lib \ --origin-type EXTERNAL按发布时间倒序取最近 10 个版本aws codeartifact list-package-versions \ --domain test-domain \ --repository test-repo \ --format pypi \ --package my-python-pkg \ --sort-by PUBLISHED_TIME \ --max-results 10查询 Maven 格式包时必须提供--namespace即groupId这是 service model 明确强调的约束——Maven、Swift、generic 三种格式在删除/查询版本时均要求命名空间。六、分页机制版本很多时如何翻页当仓库中版本数量超过单页上限--max-results最大 1000时响应不会一次性返回全部数据而是通过nextToken令牌翻页。aws-cli 仓库中的分页元数据明确记录了这一行为见 awscli/botocore/data/codeartifact/2018-09-22/paginators-1.jsonListPackageVersions: { input_token: nextToken, output_token: nextToken, limit_key: maxResults, result_key: versions }即--next-token为输入令牌响应中的nextToken为输出令牌--max-results为每页条数限制聚合结果保存在versions字段中。此外paginators-1.sdk-extras.json 将defaultDisplayVersion、format、package、namespace标记为该分页器的non_aggregate_keys含义是这些字段不属于版本列表本身翻页聚合时不会被拼接仅在每页中作为元信息原样返回——因此判断分页是否结束应依据nextToken是否存在而非这些元字段。手动翻页的典型写法如下# 第一页 aws codeartifact list-package-versions \ --domain test-domain --repository test-repo \ --format npm --package kind-of --max-results 100 # 取到 nextToken 后请求下一页 aws codeartifact list-package-versions \ --domain test-domain --repository test-repo \ --format npm --package kind-of --max-results 100 \ --next-token 上一步返回的nextToken若使用 SDK如 boto3 或各语言 SDK 的 paginator框架会自动处理上述翻页循环将多页结果合并为完整列表。七、底层实现请求如何被构造与发送从源码层面看list-package-versions并非 aws-cli 的自定义命令而是由服务模型自动生成的通用命令。其请求参数在 service-2.json 的ListPackageVersionsRequest中全部标记为location: querystring即所有参数domain、repository、format、package、status、sortBy、maxResults、nextToken、originType 等都通过 HTTP 查询字符串传递而非请求体。这一点决定了它天然适合轻量级调用不会携带大体积 JSON 请求体。与它形成对比的是 CodeArtifact 的定制命令aws codeartifact login其实现位于 awscli/customizations/codeartifact/login.py包含BaseLogin基类、认证令牌获取与 npm/pip 等客户端配置写入逻辑。login需要复杂的状态写入因此被实现为定制命令而list-package-versions属于标准的「查询-返回」型操作直接由 CLI 框架依据 service model 自动生成参数解析与序列化代码无需任何定制逻辑。这解释了为何你在仓库的customizations/codeartifact/目录下只能看到login.py与__init__.py却找不到list_package_versions的定制实现——它的全部行为都沉淀在 service model 之中。对于这一实现事实可核对 awscli/botocore/data/codeartifact/2018-09-22/service-2.json 中的ListPackageVersions操作定义以及 awscli/customizations/codeartifact/login.py 中仅包含 login 相关类的事实。八、常见问题与注意事项查询结果混入非 Published 版本--status缺省时返回全部状态版本。若只想看可安装版本建议显式加--status Published。Maven/Swift/generic 包报参数错误这三种格式要求提供--namespace遗漏会直接导致请求失败。版本很多但输出不全注意检查响应中是否携带nextToken存在则说明还有下一页应继续翻页或调大--max-results上限 1000。跨账户域查询域不属于当前凭证账户时必须用--domain-owner指定 12 位账户号。revision 重复不代表版本重复revision 表示内容修订同一 revision 标识可能因示例数据而重复真实场景下应以「version revision」组合作为唯一版本内容的标识。仓库内包与上游包混列结合--origin-type INTERNAL / EXTERNAL可区分内部发布版本与外部连接摄取版本是供应链审计的常用手段。九、小结aws codeartifact list-package-versions是 CodeArtifact 版本管理的核心查询入口理解其 4 个必需参数、7 个可选过滤/分页参数、输出中的PackageVersionSummary结构与分页令牌机制即可高效完成版本盘点、状态排查与来源审计。本文中命令的官方示例见 awscli/examples/codeartifact/list-package-versions.rst完整的参数约束、枚举与输出结构可在 service-2.json 中进一步查阅。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门