ARTICLE DETAIL

资讯详情

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

aws codeartifact copy-package-versions 详解:跨仓库复制包版本实战指南

aws codeartifact copy-package-versions 详解:跨仓库复制包版本实战指南 aws codeartifact copy-package-versions 详解跨仓库复制包版本实战指南【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli在 AWS CodeArtifact 中同一个 domain 下的不同仓库经常需要共享软件包——例如将test-repo中验证通过的版本提升promote到prod-repo或将上游仓库中的包复制到下游隔离环境。本指南以当前仓库 copy-package-versions.rst 中的官方示例为核心结合仓库内的 service-2.json 服务模型完整讲解aws codeartifact copy-package-versions的用法、全部参数、返回结构、失败处理与底层调用原理帮助你安全、准确地完成包版本的跨仓库复制。命令概览一条命令在做什么copy-package-versions的底层语义定义在 service-2.json 的CopyPackageVersions操作中Copies package versions from one repository to another repositoryin the same domain.即将包版本从源仓库复制到同一 domain 内的目标仓库对应 HTTP 请求为POST /v1/package/versions/copy。该操作一次可批量处理最多100 个版本PackageVersionList的max: 100约束。关键约束服务模型原文 noteYou must specifyversionsorversionRevisions. You cannot specify both.即--versions与--version-revisions二者必须二选一不能同时指定也不能都不指定。官方示例从 my-repo 复制版本到 test-repo原文档给出的完整命令如下适用于 npm 格式的test-packageaws codeartifact copy-package-versions \ --domain test-domain \ --source-repository my-repo \ --destination-repository test-repo \ --format npm \ --package test-package \ --versions [4.0.0, 5.0.0]命令执行成功后返回 JSON{ format: npm, package: test-package, versions: [ { version: 5.0.0, revision: REVISION-1-SAMPLE-6C81EFF7DA55CC, status: Published }, { version: 4.0.0, revision: REVISION-2-SAMPLE-55C752BEE772FC, status: Published } ] }可以看到复制成功的版本会返回其revision包版本修订标识和statusPublished表示已发布状态。示例中的 revision 形如REVISION-1-SAMPLE-...属于文档演示用的占位值实际环境中返回的是真实修订号。参数逐项拆解每个参数的含义与约束结合 service-2.json 中CopyPackageVersionsRequest的字段定义各参数说明如下必填参数参数CLI 选项说明与约束所属 domain--domain源仓库与目标仓库共同所属的 domain 名称。DomainName约束长度 2–50小写字母开头匹配[a-z][a-z0-9\-]{0,48}[a-z0-9]源仓库--source-repository包含待复制包版本的仓库名。RepositoryName约束长度 2–100匹配[A-Za-z0-9][A-Za-z0-9._\-]{1,99}目标仓库--destination-repository包版本将被复制到的仓库名约束同上包格式--format包版本格式PackageFormat枚举npm、pypi、maven、nuget、generic、ruby、swift、cargo包名--package待复制版本的包名。PackageName约束长度 1–255不能包含#、/或空白字符可选但实用的参数参数CLI 选项说明domain 所有者--domain-owner拥有 domain 的 12 位 AWS 账号 ID不含连字符和空格。当跨账号访问 domain 时使用同账号场景可省略包命名空间--namespace取决于包格式Maven 的groupId、npm/Swift 的scope、generic 的namespace。Maven、Swift、generic 格式必填Python、NuGet、Ruby、Cargo 没有命名空间概念无需指定版本列表--versions待复制的版本数组JSON 列表格式例如[4.0.0, 5.0.0]最多 100 个版本修订映射--version-revisions键值对形式键为版本、值为修订号例如{4.0.0:REVISION-1}。指定后仅当源仓库中版本与指定修订一致时才复制成功用于精确控制复制的快照允许覆盖--allow-overwrite设为true时覆盖目标仓库中已存在的同版本包保持默认false时若版本已存在则进入failedVersions错误码为ALREADY_EXISTS包含上游来源--include-from-upstream设为true时可复制来自源仓库上游仓库的包版本默认false实践建议未指定--domain-owner时AWS CLI 会自动使用当前凭证所属账号等价于显式传当前账号 ID。若需要校验复制的是指定修订快照优先用--version-revisions仅按版本号复制则用--versions。命令行中 JSON 数组/对象需整体加引号避免 shell 将其拆分。返回结构与状态码如何判断复制成败响应结构由CopyPackageVersionsResult定义包含两个字段successfulVersions成功复制的版本映射每个版本对应revision与statusfailedVersions复制失败的版本映射每个版本包含errorCode与errorMessage。PackageVersionStatus枚举定义了包版本的六种状态Published已发布、Unfinished未完成、Unlisted已下架、 Archived已归档、Disposed已处置、Deleted已删除失败版本可能出现的错误码PackageVersionError定义及含义错误码含义ALREADY_EXISTS目标仓库已存在该版本且未开启--allow-overwriteMISMATCHED_REVISION使用--version-revisions时源仓库中版本修订与指定值不匹配MISMATCHED_STATUS源仓库中版本状态不满足复制条件NOT_ALLOWED该版本不允许复制如策略限制NOT_FOUND源仓库中找不到该版本SKIPPED该版本被跳过例如已存在且无需处理由此可得两个排障要点不要只看返回码命令整体成功exit 0只代表请求被受理个别版本仍可能出现在failedVersions中需逐项检查errorCode。重复复制不是幂等报错目标仓库已有同名版本时若不覆盖默认会返回ALREADY_EXISTS失败项而不是直接覆盖数据。同命令族的协同使用在仓库的 codeartifact 示例目录 中copy-package-versions常与以下命令配合使用构成完整的包生命周期管理链路list-package-versions.rst复制前先列出源仓库的版本与状态确认要复制的目标版本update-package-versions-status.rst复制后可批量调整版本状态如Published/Unlisted/Archiveddispose-package-versions.rst 与 delete-package-versions.rst对不再需要的版本做处置或删除。典型场景示例先在test-repo中验证my-package的1.2.0再将其复制到prod-repo最后在prod-repo中将其状态设为Published# 1. 确认源仓库中版本状态 aws codeartifact list-package-versions \ --domain test-domain --repository test-repo \ --format npm --package my-package # 2. 复制版本到生产仓库 aws codeartifact copy-package-versions \ --domain test-domain \ --source-repository test-repo \ --destination-repository prod-repo \ --format npm --package my-package \ --versions [1.2.0] \ --allow-overwrite # 3. 在目标仓库确认复制结果 aws codeartifact list-package-versions \ --domain test-domain --repository prod-repo \ --format npm --package my-package底层原理CLI 如何与 API 对接当前仓库中AWS CLI 通过 botocore/data/codeartifact/2018-09-22 目录下的服务模型驱动codeartifact命令service-2.json定义CopyPackageVersions操作的 HTTP 方法、请求参数位置domain 等走 query stringversions/versionRevisions/allowOverwrite/includeFromUpstream走请求体、返回结构及全部错误类型AccessDeniedException、ConflictException、InternalServerException、ResourceNotFoundException、ServiceQuotaExceededException、ThrottlingException、ValidationExceptionexamples-1.json 与 paginators-1.json提供示例元数据与分页定义本命令单次请求不受分页影响customizations/codeartifact/init.py 中通过building-command-table.codeartifact事件注入login子命令其余标准操作则由模型自动生成。这意味着copy-package-versions的所有参数校验格式、长度、必填项、默认值如allowOverwritefalse、includeFromUpstreamfalse均由该服务模型驱动无需手写额外代码。如果发送请求后出现参数错误优先对照上文的参数表与服务模型中的正则约束排查。注意事项小结必须在同一 domain 内复制跨 domain 需先分别处理或在目标 domain 重新发布--versions与--version-revisions二选一单次最多 100 个版本默认不覆盖目标仓库已有版本需要覆盖时显式加--allow-overwriteMaven、Swift、generic 格式必须提供--namespace否则请求会校验失败检查结果时以failedVersions中的错误码为准而非仅看命令是否报错。通过aws codeartifact copy-package-versions help可以随时查看本地 CLI 生成的完整参数说明结合本文的返回结构与错误码对照即可在 npm、Maven、PyPI 等任意受支持格式的包管理中稳定实现跨仓库版本流转。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表