使用 AWS CLI 的 delete-approval-rule-template 命令删除 CodeCommit 审批规则模板
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
导读
本文讲解如何使用 AWS CLI 中aws codecommit delete-approval-rule-template命令,删除 AWS CodeCommit 中已不再需要的审批规则模板(Approval Rule Template)。你将掌握该命令的完整用法、参数含义、命令输出解读,以及删除模板时必须注意的约束条件(如模板仍与仓库关联时无法删除),并了解该命令在 AWS CLI 源码(awscli/botocore/data/codecommit/2015-04-13/service-2.json)中的底层定义。
背景:什么是 CodeCommit 审批规则模板
在 AWS CodeCommit 中,审批规则模板(Approval Rule Template)是一种可复用的审批策略配置。你可以在模板中定义审批规则,例如"合并到 main 分支的拉取请求(Pull Request)必须获得 2 名CodeCommitReview角色的审批",然后将模板与一个或多个仓库关联,从而让这些仓库的拉取请求自动套用相同的审批要求。
模板的创建、查看、关联、列表等操作分别对应 AWS CLI 中的以下命令(相关示例见 awscli/examples/codecommit/):
create-approval-rule-template:创建模板(示例见 create-approval-rule-template.rst)get-approval-rule-template:查看模板内容(示例见 get-approval-rule-template.rst)associate-approval-rule-template-with-repository:将模板关联到仓库(示例见 associate-approval-rule-template-with-repository.rst)list-approval-rule-templates:列出全部模板delete-approval-rule-template:删除模板(本文主角)
命令语法与必需参数
delete-approval-rule-template命令只有唯一一个必需参数,它用于指定要删除的模板名称。
| 参数 | 是否必需 | 说明 | 取值约束(源自 service-2.json) |
|---|---|---|---|
--approval-rule-template-name | 是 | 要删除的审批规则模板名称 | 长度 1~100 个字符,见ApprovalRuleTemplateName形状定义(service-2.json 中ApprovalRuleTemplateName的max: 100, min: 1) |
基础命令形式:
aws codecommit delete-approval-rule-template \ --approval-rule-template-name <模板名称>官方示例:删除指定审批规则模板
官方文档示例位于 delete-approval-rule-template.rst,展示了删除名为1-approver-for-all-pull-requests的模板:
aws codecommit delete-approval-rule-template \ --approval-rule-template-name 1-approver-for-all-pull-requests输出:
{ "approvalRuleTemplateId": "41de97b7-EXAMPLE" }输出中返回的是被删除模板的系统生成 ID(approvalRuleTemplateId)。
命令输出解析
根据 service-2.json 中DeleteApprovalRuleTemplateOutput形状的定义,该命令的输出仅包含一个字段:
approvalRuleTemplateId(必需):被删除模板的系统生成 ID。若该模板此前已被删除,服务端仍会返回 200 OK 作为响应。
也就是说,删除模板后,CLI 返回的 JSON 中不会包含模板名称或内容,只包含模板 ID,你可以用它核对本次删除操作实际作用的目标。
删除前的关键约束:必须先解除模板与仓库的关联
从 service-2.json 中DeleteApprovalRuleTemplate操作的错误定义可以看出,该命令可能抛出以下异常:
ApprovalRuleTemplateNameRequiredException:未提供模板名称。InvalidApprovalRuleTemplateNameException:模板名称非法(例如长度超出 1~100 的约束范围)。ApprovalRuleTemplateInUseException:模板仍与一个或多个仓库关联。
其中最重要的是ApprovalRuleTemplateInUseException。其文档明确指出:模板仍与一个或多个仓库关联时无法删除,需要先移除所有关联,再重试。
因此,删除一个仍在使用中的模板之前,需要先完成两步:
- 查看该模板关联了哪些仓库:
aws codecommit list-repositories-for-approval-rule-template \ --approval-rule-template-name 1-approver-for-all-pull-requests - 对每一个关联的仓库执行解除关联(相关示例见 disassociate-approval-rule-template-from-repository.rst):
aws codecommit disassociate-approval-rule-template-from-repository \ --repository-name MyDemoRepo \ --approval-rule-template-name 1-approver-for-all-pull-requests
解除全部关联后,再执行delete-approval-rule-template即可成功删除。
删除行为说明:不影响已创建的拉取请求审批规则
根据 service-2.json 中DeleteApprovalRuleTemplate操作的文档说明:删除模板不会移除已经基于该模板创建的拉取请求上的审批规则。
这意味着:
- 删除模板只影响"未来"——模板不再能被关联到新仓库,也不再为新的拉取请求生成审批规则;
- 对于删除前已经创建、且正在生效中的拉取请求审批规则,它们会继续保留并正常生效,不受模板删除的影响。
如果你的目标是对历史拉取请求的审批规则做清理,需要另行使用delete-pull-request-approval-rule命令逐个处理,而不是依赖删除模板。
底层实现:命令在 AWS CLI 中的定义位置
从源码结构看,delete-approval-rule-template命令由 AWS CLI 依据 CodeCommit 服务的 API 模型自动生成,其定义位于 awscli/botocore/data/codecommit/2015-04-13/service-2.json:
- 操作定义:
DeleteApprovalRuleTemplate对应 HTTP 方法POST,请求路径为/,输入形状为DeleteApprovalRuleTemplateInput,输出形状为DeleteApprovalRuleTemplateOutput; - 输入形状:
DeleteApprovalRuleTemplateInput仅含approvalRuleTemplateName字段且为必需; - 输出形状:
DeleteApprovalRuleTemplateOutput仅含approvalRuleTemplateId字段且为必需; - 错误形状:
ApprovalRuleTemplateNameRequiredException、InvalidApprovalRuleTemplateNameException、ApprovalRuleTemplateInUseException。
AWS CLI 会读取该 JSON 模型,自动为aws codecommit delete-approval-rule-template生成参数解析、参数校验(如名称长度 1~100)以及响应 JSON 的解析逻辑,因此命令行的参数名、约束与输出字段均与该模型保持一致。
总结与常见问题
完整删除流程总结:
list-approval-rule-templates或list-repositories-for-approval-rule-template确认目标模板名称;- 若模板仍与仓库关联,先
disassociate-approval-rule-template-from-repository逐个解除关联; - 执行
delete-approval-rule-template --approval-rule-template-name <模板名称>; - 通过输出中的
approvalRuleTemplateId确认删除结果。
常见问题:
- 删除命令提示
ApprovalRuleTemplateInUseException?—— 模板仍关联着仓库,先解除所有关联再重试。 - 删除后历史拉取请求的审批规则还在吗?—— 在,删除模板不会移除已创建审批规则。
- 模板 ID 是必填的吗?—— 不是,删除只需模板名称;模板 ID 由服务端在响应中返回。
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考