资讯动态

AWS CLI 实战:使用 `codeartifact describe-repository` 查询 CodeArtifact 仓库详情

发布时间:2026/9/15 15:03:11 来源:尧图企业网站定制
AWS CLI 实战使用codeartifact describe-repository查询 CodeArtifact 仓库详情【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本指南以 AWS CLI 官方示例 describe-repository.rst 为蓝本系统讲解aws codeartifact describe-repository命令的用法如何传入--domain与--repository参数查询仓库信息、如何解读返回的RepositoryDescription对象中每个字段的含义并结合本仓库内的服务模型service-2.json与相关示例如 create-repository.rst、list-repositories.rst深入剖析其底层实现。读完本文你将掌握查询 CodeArtifact 仓库配置上游仓库、外部连接、ARN、域归属等的完整实操方法与诊断思路。命令概览一条命令拿到仓库全貌aws codeartifact describe-repository是 AWS CLI 中 CodeArtifact 服务的查询类命令其作用是从 CodeArtifact 服务端获取指定仓库的完整描述信息RepositoryDescription。该命令只读、不产生任何变更适合在以下场景使用部署前核对仓库是否已创建、归属哪个域、属于哪个 AWS 账户排查仓库为何拉不到某个上游包——检查upstreams与externalConnections配置获取仓库 ARN 以在 IAM 策略、资源标签或自动化脚本中引用与create-repository、update-repository的输出对比验证配置是否生效。其最小调用形式如下取自仓库示例文档 describe-repository.rstaws codeartifact describe-repository \ --domain test-domain \ --repository test-repo命令执行后返回一个 JSON 对象其中repository字段承载所有仓库信息{ repository: { name: test-repo, administratorAccount: 111122223333, domainName: test-domain, domainOwner: 111122223333, arn: arn:aws:codeartifact:us-west-2:111122223333:repository/test-domain/test-repo, description: This is a test repository., upstreams: [], externalConnections: [] } }提示默认输出格式为 JSON。若只需 ARN 或某个字段可结合--query与--output text使用例如aws codeartifact describe-repository --domain test-domain --repository test-repo --query repository.arn --output text。参数详解必填与可选参数从服务模型中DescribeRepositoryRequest的定义service-2.json可以看出该接口接受三个参数其中两个为必填参数类型必填说明--domainString是包含目标仓库的 CodeArtifact 域的名称。域名称有严格的格式约束见下文。--repositoryString是要查询的仓库名称。--domain-ownerString否拥有该域的 AWS 账户的 12 位账户 ID不含短横线或空格。默认情况下 AWS CLI 会使用当前凭据所属的账户仅在查询其他账户共享给你的域时才有必要显式指定。这三个参数在 HTTP 层面均通过 URL query string 传递请求方法为GET /v1/repository也就是说describe-repository是一次无请求体的只读 GET 调用天然安全、可幂等重试。名称约束提前规避 400 错误仓库中的名称不是任意字符串服务模型给出了明确的格式校验域名称DomainName长度 2~50 个字符必须匹配正则[a-z][a-z0-9\-]{0,48}[a-z0-9]service-2.json即小写字母开头、以小写字母或数字结尾中间可含小写字母、数字与连字符。账户 IDAccountId固定 12 位数字正则[0-9]{12}service-2.json。仓库名称RepositoryName长度 2~100 个字符匹配[A-Za-z0-9][A-Za-z0-9._\-]{1,99}service-2.json字母、数字、点、下划线和连字符均可使用。若传入的名称不合规或仓库不存在服务端会返回ValidationException或ResourceNotFoundExceptionCLI 会将这些异常以错误消息的形式输出。查询前先通过aws codeartifact list-repositories或aws codeartifact list-repositories-in-domain示例见 list-repositories.rst确认名称拼写可减少无效调用。返回值逐字段解读RepositoryDescription接口的返回结构DescribeRepositoryResult只包含一个repository成员其类型为RepositoryDescriptionservice-2.json。下表对照示例输出逐字段解释字段类型含义nameString仓库名称与查询参数一致。administratorAccountString管理该仓库的 AWS 账户的 12 位账户 ID。domainNameString仓库所属 CodeArtifact 域的名称。domainOwnerString拥有该域的 AWS 账户的 12 位账户 ID不含短横线与空格。arnString仓库的 Amazon Resource NameARN格式为arn:aws:codeartifact:region:account-id:repository/domain/repository可用于 IAM 策略与资源级授权。descriptionString仓库的文本描述最长 1000 个字符见Description类型定义service-2.json。upstreamsList与仓库关联的上游仓库列表。列表中各上游仓库的顺序即优先级顺序——CodeArtifact 按此顺序查找请求的包版本官方文档称之为 Working with upstream repositories。externalConnectionsList与仓库关联的外部连接数组如公共 npm、PyPI、Maven 仓库的连接。createdTimeTimestamp仓库创建时间示例输出中未展示但服务模型已定义该字段。在示例输出中upstreams与externalConnections均为空数组[]表示这是一个尚未配置上游/外部连接的独立仓库——这与 create-repository.rst 中创建仓库时的初始状态完全一致该示例创建的test-repo同样返回upstreams: []与externalConnections: []。上游仓库与外部连接两个关键字段的诊断价值upstreams上游仓库每个成员包含上游仓库的名称等信息。当仓库配置了上游后包管理客户端npm、pip、Maven、NuGet 等在本地仓库找不到包时会按upstreams列表中的顺序向上游继续查找。若你发现拉包行为异常如拉到旧版本应通过describe-repository核对upstreams的排列顺序。externalConnections外部连接每个成员形如RepositoryExternalConnectionInfoservice-2.json包含externalConnectionName、packageFormat与status三个字段。packageFormat取值包括npm、pypi、maven、nuget、generic、ruby、swift、cargo等status目前唯一的合法值是Available。新增上游或外部连接分别对应aws codeartifact update-repository、associate-external-connection命令示例见 associate-external-connection.rst而查询其当前状态的最佳手段正是describe-repository。典型实战场景场景一创建后立即验证仓库配置配合 create-repository.rst 中的创建命令aws codeartifact create-repository \ --domain test-domain \ --domain-owner 111122223333 \ --repository test-repo \ --description This is a test repository.执行成功后运行describe-repository即可确认描述、ARN、归属账户均正确落库。两者的返回结构相同便于直接比对。场景二跨账户查询共享域中的仓库当仓库位于其他账户拥有的域中时必须显式传入--domain-owneraws codeartifact describe-repository \ --domain shared-domain \ --domain-owner 222233334444 \ --repository shared-repo此时调用方需要具备对该域/仓库的读取权限通常通过 CodeArtifact 的资源策略或 IAM 授权否则会收到AccessDeniedExceptionHTTP 403见DescribeRepository的错误列表service-2.json。场景三在脚本中解析仓库 ARN在自动化脚本中提取仓库 ARN 用于后续 IAM 策略生成REPO_ARN$(aws codeartifact describe-repository \ --domain test-domain \ --repository test-repo \ --query repository.arn \ --output text) echo $REPO_ARN # 输出: arn:aws:codeartifact:us-west-2:111122223333:repository/test-domain/test-repo场景四排查拉包失败当pip install或npm install从 CodeArtifact 拉取包失败时先用describe-repository检查upstreams与externalConnections是否为空、顺序是否符合预期再配合aws codeartifact get-repository-endpoint --format pypi --domain test-domain --repository test-repo核对仓库端点以及aws codeartifact get-authorization-token --domain test-domain获取临时令牌有效期为 12 小时相关逻辑见 login.py 中的CodeArtifactLogin.DESCRIPTION形成完整的排查链路。源码视角命令背后的实现路径服务模型一切参数与返回结构的权威定义describe-repository的命令骨架并非硬编码而是由 botocore 从服务模型 service-2.json 自动生成的。关键定义包括操作定义第 308-324 行DescribeRepositoryHTTP 方法GET请求路径/v1/repository声明了五种错误类型AccessDeniedException、InternalServerException、ResourceNotFoundException、ThrottlingException、ValidationException。请求结构第 1716-1742 行DescribeRepositoryRequest必填domain与repository可选domainOwner。响应结构第 1743-1751 行DescribeRepositoryResult单成员repository。返回对象第 3994-4035 行RepositoryDescription的全部字段定义。AWS CLI 的codeartifact命令会自动读取该模型生成参数解析、校验与输出序列化逻辑。仓库中的examples-1.json与各类.rst示例文件describe-repository.rst 等则负责为命令生成帮助文档与示例。配套命令login 定制化逻辑除标准的模型驱动命令外aws codeartifact login是仓库中唯一带定制化实现的 CodeArtifact 命令其源码位于 login.py。虽然它与describe-repository的查询能力无关但二者常在同一条使用链路中出现login内部会调用get_authorization_token与get_repository_endpoint来配置 npm/pip/NuGet 等工具见 TOOL_MAP 中swift、nuget、dotnet、npm、pip、twine六种工具的映射而describe-repository则用于确认仓库本身的配置状态。测试与验证在仓库的单元测试中CodeArtifact 的模型驱动命令包括describe-repository由 botocore 的通用命令测试覆盖验证了参数的序列化、错误映射与输出格式login命令则有专门的定制测试可参考tests/unit/customizations/codeartifact/目录下的测试用例如test_login.py其中对 token 过期时间计算get_relative_expiration_time、.npmrc/.pypirc写入等逻辑均有断言。这提示我们凡是查询类命令其参数与返回结构均以服务模型为准凡是定制命令其行为以customizations/下的源码为准。常见错误与排查建议报错现象可能原因排查动作ResourceNotFoundException仓库不存在或--domain/--repository拼写错误先执行aws codeartifact list-repositories核对名称AccessDeniedExceptionHTTP 403当前账户无权读取该仓库/域检查 IAM 策略与域的资源配置策略跨账户查询时补传--domain-ownerValidationException名称违反格式约束如域名为大写开头对照上文名称约束一节核对正则ThrottlingException请求过于频繁适当退避重试小结aws codeartifact describe-repository是 CodeArtifact 运维与排障的基础命令两个必填参数--domain与--repository跨账户场景追加--domain-owner返回的RepositoryDescription覆盖仓库名称、管理员账户、所属域、ARN、描述、上游仓库、外部连接与创建时间八个维度上游仓库顺序即拉包优先级externalConnections反映公共仓库连接状态二者是诊断拉包问题的第一手证据命令实现由服务模型驱动参数与返回结构的权威定义位于 service-2.json可随时查阅。配合本仓库中的其他示例create-repository.rst、update-repository.rst、associate-external-connection.rst即可完成从创建、配置到查询验证的完整闭环。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价