AWS CLI CodeBuildlist-shared-report-groups命令详解:列出共享报告组 ARN 的完整实战指南
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
导读
本指南围绕 AWS CLI 中aws codebuild list-shared-report-groups命令展开,讲解如何列出通过资源共享(Resource Sharing)授予当前账户/用户访问权限的 AWS CodeBuild 报告组(Report Group)ARN。你将掌握该命令的基础调用、输出结构解析、排序与分页参数(sortBy、sortOrder、maxResults、nextToken)的完整用法,并结合仓库中的服务模型(service-2.json)与分页配置(paginators-1.json)理解其底层实现。
一、命令定位:什么是"共享报告组"
AWS CodeBuild 的报告组(Report Group)用于归集构建产出的测试报告(Test Reports)与代码覆盖率报告(Code Coverage Reports)。在跨账户或跨用户协作场景下,资源所有者可以通过 AWS Resource Access Manager(RAM)将报告组共享给其他 AWS 账户或组织单元中的用户。
list-shared-report-groups命令的作用就是列出那些共享给当前 AWS 账户或当前 IAM 用户/角色的报告组 ARN。它与list-report-groups(列出本账户拥有的报告组)形成互补,其姊妹命令list-shared-projects则用于列出共享的构建项目。
本命令的官方示例文档位于 awscli/examples/codebuild/list-shared-report-groups.rst,本文所有命令与输出均以该文档为准。
二、基础用法:一条命令获取全部共享报告组 ARN
2.1 直接调用
在配置好 AWS 凭证(aws configure)后,直接在终端执行:
aws codebuild list-shared-report-groups命令不需要任何必填参数,即可返回当前账户在该区域中可访问的所有共享报告组 ARN。示例文档给出的典型输出如下:
{ "reportGroups": [ "arn:aws:codebuild:<region-ID>:<user-ID>:report-group/report-group-1", "arn:aws:codebuild:<region-ID>:<user-ID>:report-group/report-group-2", "arn:aws:codebuild:<region-ID>:<user-ID>:report-group/report-group-3" ] }2.2 输出结构解读
reportGroups:字符串数组,每个元素是一个报告组 ARN,格式为arn:aws:codebuild:<region-ID>:<user-ID>:report-group/<报告组名称>。注意示例中的<region-ID>与<user-ID>是占位符,实际输出会替换为真实的区域与账户 ID。- 输出中 ARN 的数量即当前账户/用户被授予访问权限的共享报告组总数。
2.3 与其他 list 命令的对比
在 awscli/examples/codebuild/ 目录下,同样风格的示例还有:
- list-report-groups.rst:列出本账户拥有的报告组 ARN,输出结构与共享版本完全一致(同样返回
reportGroups数组); - list-shared-projects.rst:列出共享的构建项目ARN,输出字段为
projects。
通过这三个命令,你可以完整盘点当前账户在 CodeBuild 中"自有 + 共享"的资源全景。
三、核心参数详解:排序、分页与筛选
虽然示例文档只展示了无参调用,但底层服务模型为该命令定义了四个可选参数。它们定义在 awscli/botocore/data/codebuild/2016-10-06/service-2.json 的ListSharedReportGroupsInput结构中(第 3384 行起)。
3.1sortOrder:列表排序方向
| 取值 | 含义 |
|---|---|
ASCENDING | 按升序排列 |
DESCENDING | 按降序排列 |
该参数对应模型中的SortOrderType枚举(service-2.json 第 4770 行),仅接受上述两个值。
# 按降序排列共享报告组 aws codebuild list-shared-report-groups \ --sort-order DESCENDING3.2sortBy:排序依据
| 取值 | 含义 |
|---|---|
ARN | 按报告组 ARN 排序 |
MODIFIED_TIME | 按共享报告组相关信息最后被修改的时间排序 |
该参数对应模型中的SharedResourceSortByType枚举(service-2.json 第 4763 行):
# 按修改时间排序,最新的排在最前 aws codebuild list-shared-report-groups \ --sort-by MODIFIED_TIME \ --sort-order DESCENDING3.3maxResults:单次返回条数上限
- 类型为整数,取值范围1 ~ 100(见
PageSize形状,service-2.json 第 3525 行); - 默认值为 100;
- 若共享报告组总数超过该值,服务会返回
nextToken,需要配合分页继续拉取。
# 每页最多返回 10 个共享报告组 aws codebuild list-shared-report-groups \ --max-results 103.4nextToken:分页游标
当列表条目数超过maxResults时,响应中会额外返回nextToken字段(见ListSharedReportGroupsOutput,service-2.json 第 3405 行)。将上一轮返回的 token 传入下一轮调用即可获取后续批次,直到响应中不再出现nextToken为止:
# 第一页 aws codebuild list-shared-report-groups --max-results 10 # 用上一页返回的 nextToken 获取第二页 aws codebuild list-shared-report-groups \ --max-results 10 \ --next-token "eyJ2Ijox...(上一页返回的 token)"四、底层实现:服务模型与分页机制
4.1 操作定义
在服务模型中,ListSharedReportGroups操作(service-2.json 第 570 行)定义如下:
- HTTP 方法:
POST,请求 URI:/; - 可能的错误:
InvalidInputException(当传入的排序取值、maxResults越界等输入不合法时抛出); - 官方文档描述为:"Gets a list of report groups that are shared with other Amazon Web Services accounts or users."——注意这里所谓 "shared with other accounts" 是站在资源所有者的视角表述,实际调用时返回的是共享给当前调用者的报告组。
4.2 内置分页支持
CLI 层面的分页由 awscli/botocore/data/codebuild/2016-10-06/paginators-1.json 中的配置驱动:
"ListSharedReportGroups": { "input_token": "nextToken", "limit_key": "maxResults", "output_token": "nextToken", "result_key": "reportGroups" }这意味着该命令是 CodeBuild 中少数自带分页模型的操作之一。实际使用中,更推荐直接使用 CLI 的--page-size与自动分页机制,让 CLI 替你循环处理所有nextToken:
# CLI 自动遍历所有页,一次性输出全部共享报告组 ARN aws codebuild list-shared-report-groups \ --page-size 20 # 配合 --query 与 --output 做格式化输出 aws codebuild list-shared-report-groups \ --query "reportGroups[*]" \ --output json--page-size控制每次实际发给服务的maxResults,而 CLI 会持续消费返回的nextToken,直到数据取完,从而避免手工循环分页。
五、实战场景与扩展用法
5.1 快速统计共享报告组数量
aws codebuild list-shared-report-groups \ --query "length(reportGroups)" \ --output text5.2 仅列出某个报告组名称
aws codebuild list-shared-report-groups \ --query "reportGroups[?ends_with(@, ':report-group/report-group-1')]" \ --output text5.3 与其他报告组命令联动
拿到共享报告组 ARN 后,可进一步结合本仓库 awscli/examples/codebuild/ 中的相关命令深入排查:
- batch-get-report-groups.rst:批量获取报告组的详细信息(导出配置、创建时间、状态等);
- list-reports-for-report-group.rst:列出某报告组下的全部测试报告;
- describe-test-cases.rst 与 describe-code-coverages.rst:查看具体测试用例与代码覆盖率明细。
典型的排查链路为:list-shared-report-groups找到 ARN →batch-get-report-groups确认报告组配置 →list-reports-for-report-group查看报告列表。
5.4 权限前提
调用该命令需要 IAM 身份具备codebuild:ListSharedReportGroups权限(对应 CodeBuild 服务端的ListSharedReportGroups操作)。若凭证不足,服务端将返回AccessDeniedException。共享关系的建立由资源所有者通过 AWS RAM 完成,接受共享后,本账户才能在该区域看到对应的共享报告组。
六、小结
aws codebuild list-shared-report-groups是跨账户 CodeBuild 协作场景下盘点"他人共享给我的报告组"的最直接手段:
- 无参调用即可返回全部共享报告组 ARN,输出结构简单(仅
reportGroups数组,可能附带nextToken); - 通过
--sort-by(ARN/MODIFIED_TIME)与--sort-order(ASCENDING/DESCENDING)控制排序; - 通过
--max-results(1~100,默认 100)与--next-token手动分页,或直接依赖 CLI 内置分页(paginators-1.json 中已声明该操作的分页映射)自动遍历全部结果; - 与
list-report-groups(自有)、list-shared-projects(共享项目)配合,可完整覆盖 CodeBuild 资源的可见性盘点。
所有参数定义与枚举取值均可对照仓库内的 service-2.json 验证,官方示例输出详见 list-shared-report-groups.rst。
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考