十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AWS CLI CodeArtifact dispose-package-versions 命令实战:彻底清理并处置软件包版本

AWS CLI CodeArtifact dispose-package-versions 命令实战:彻底清理并处置软件包版本 AWS CLI CodeArtifact dispose-package-versions 命令实战彻底清理并处置软件包版本【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本篇技术指南以 AWS CLI 官方示例文档 dispose-package-versions.rst 为骨架完整讲解aws codeartifact dispose-package-versions命令的用法、参数、输出结构与底层实现原理。读完本文你将掌握如何在 CodeArtifact 中不可逆地删除包版本资产、将其状态置为Disposed并能够处理多版本批量处置、预期状态校验及失败错误码排查等真实运维场景。一、命令背景什么是 Disposed 状态AWS CodeArtifact 是一个托管的制品仓库服务兼容 npm、Maven、pip、NuGet、Ruby、Swift、Cargo 与 generic 等主流包格式。仓库中的每个包版本都会处于某种生命周期状态在 service-2.json 中定义的PackageVersionStatus枚举包括状态含义Published已发布可正常下载使用Unfinished尚未完成发布如正在上传资产Unlisted已取消列出新消费方无法再发现Archived已归档Disposed已处置资产被删除不可恢复Deleted已删除dispose-package-versions是唯一能将包版本状态直接置为Disposed的 API。相比之下UpdatePackageVersionsStatus只能将版本更新为Archived、Published或Unlisted见 service-2.json 中关于该 API 的说明。处置操作会删除包版本的所有资产assets且无法在仓库中恢复因此在执行前必须确认这些版本不再需要。从底层 API 定义看DisposePackageVersions对应一次POST /v1/package/versions/dispose请求见 service-2.jsonAWS CLI 通过 botocore 服务模型将该 REST 接口暴露为aws codeartifact dispose-package-versions子命令。二、基础用法与完整命令示例原文档给出的是一个最直接的场景删除 npm 包test-package的 4.0.0 版本资产并置为Disposedaws codeartifact dispose-package-versions \ --domain test-domain \ --repo test-repo \ --format npm \ --package test-package \ --versions 4.0.0命令返回的 JSON 输出如下{ successfulVersions: { 4.0.0: { revision: Ciqe5/9yicvkJT13b5/LdLpCyE6fqA7poa9qpFilPs, status: Disposed } }, failedVersions: {} }输出中两个顶层字段的含义successfulVersions成功处置的版本映射键为版本号值为SuccessfulPackageVersionInfo结构包含revision该版本当前的修订标识即文档示例中返回的 base64 字符串与status处置后的状态即DisposedfailedVersions处置失败的版本映射为空对象{}表示全部成功。三、请求参数详解与实战扩展依据DisposePackageVersionsRequest的结构定义见 service-2.json该命令支持以下参数必填参数参数说明--domain包含目标仓库的 CodeArtifact 域名名称--repo或--repository包含待处置包版本的仓库名称--format包格式决定--package/--namespace的语义见下文枚举--package待处置版本的包名称--versions待处置的版本列表最多 100 个版本PackageVersionList的max: 100限制见 service-2.json--format支持的全部取值PackageFormat枚举见 service-2.jsonnpm pypi maven nuget generic ruby swift cargo选填参数参数说明--domain-owner拥有域名的 AWS 账户 12 位账号 ID不含连字符与空格默认取当前凭证所属账户--namespace包命名空间。Maven、Swift、generic 三种格式必须提供npm/Swift 的命名空间是scopeMaven 的是groupIdgeneric 的是其namespacePython、NuGet、Ruby、Cargo 没有命名空间概念--version-revisions待处置版本的修订标识映射用于并发保护见下文“修订与预期状态校验”--expected-status预期的当前状态仅当版本实际状态与此一致时才执行处置批量处置多个版本--versions支持一次传入多个版本例如同时处置1.0.0、2.0.0和3.0.0aws codeartifact dispose-package-versions \ --domain test-domain \ --repo test-repo \ --format npm \ --package test-package \ --versions 1.0.0 2.0.0 3.0.0对应输出中successfulVersions会包含多个键每个键下分别是各自的revision与status个别失败则出现在failedVersions中并携带errorCode与errorMessage。处置带命名空间的包Maven 示例aws codeartifact dispose-package-versions \ --domain test-domain \ --repo test-repo \ --format maven \ --namespace com.example \ --package my-lib \ --versions 1.0.0这里--namespace com.example即该 Maven 包的groupId。四、修订与预期状态校验防止误处置CodeArtifact 的版本处置支持两类“条件执行”保护均映射到请求参数修订匹配--version-revisions传入{版本号: 修订标识}的映射。只有当版本当前 revision 与传入值一致时才执行处置可用于确保你处置的是“看过”的那个版本避免并发发布导致误删。预期状态--expected-status只有版本当前状态等于指定值时才会处置例如只处置当前处于Unlisted的版本。配合DescribePackageVersion可先查询版本当前的revision与status再决定是否携带这些保护参数执行处置。五、错误处理与失败版本排查根据DisposePackageVersions的错误定义见 service-2.json服务端可能返回以下异常异常场景AccessDeniedException凭证无权限执行处置ConflictException操作与版本当前状态冲突InternalServerException服务端内部错误ResourceNotFoundException域名、仓库或包版本不存在ThrottlingException请求被限流ValidationException参数校验失败对于部分版本失败的场景failedVersions中的每个失败项会给出errorCode与errorMessage。PackageVersionErrorCode枚举见 service-2.json定义的有效错误码包括ALREADY_EXISTS版本已处于目标状态已被处置MISMATCHED_REVISION版本当前修订与传入的--version-revisions不匹配MISMATCHED_STATUS版本当前状态与--expected-status不匹配NOT_ALLOWED该版本不允许执行处置操作NOT_FOUND找不到指定的版本SKIPPED该版本被跳过如已不存在于仓库中。六、处置后的验证与管理闭环处置完成后可以通过以下方式确认结果与继续管理列出已处置版本使用aws codeartifact list-package-versions --domain ... --repo ... --format npm --package test-package --status Disposed查看仓库中所有处于Disposed状态的版本API 层面由ListPackageVersions的status参数支持见 service-2.json 的说明查看单个版本详情使用aws codeartifact describe-package-version检查某个已处置版本的元数据资产已被删除仅保留版本信息与delete-package-versions区分处置Dispose删除资产但保留版本记录彻底删除版本本身则使用delete-package-versions。实际项目中常见的治理流程是“先归档Archived→ 确认无引用后处置Disposed→ 最终删除Deleted”。七、源码佐证与适用前提命令对应的完整服务模型定义位于 service-2.json操作与 service-2.json请求/响应结构AWS CLI 本身对 CodeArtifact 的自定义逻辑集中在 awscli/customizations/codeartifact/ 目录如login子命令dispose-package-versions属于由 botocore 服务模型自动生成的通用命令因此其参数解析与校验遵循 CLI 通用机制官方示例文档位于 dispose-package-versions.rst。使用前提与限制本命令需要已配置具备 CodeArtifact 处置权限的 AWS 凭证Disposed状态不可逆资产删除后无法恢复建议先在非生产域名/仓库中演练--versions单次最多 100 个版本超出需分批执行。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表