使用 AWS CLI 的 delete-approval-rule-template 命令删除 CodeCommit 审批规则模板
2026/9/16 22:15:00 网站建设 项目流程

使用 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 中ApprovalRuleTemplateNamemax: 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。其文档明确指出:模板仍与一个或多个仓库关联时无法删除,需要先移除所有关联,再重试。

因此,删除一个仍在使用中的模板之前,需要先完成两步:

  1. 查看该模板关联了哪些仓库:
    aws codecommit list-repositories-for-approval-rule-template \ --approval-rule-template-name 1-approver-for-all-pull-requests
  2. 对每一个关联的仓库执行解除关联(相关示例见 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字段且为必需;
  • 错误形状:ApprovalRuleTemplateNameRequiredExceptionInvalidApprovalRuleTemplateNameExceptionApprovalRuleTemplateInUseException

AWS CLI 会读取该 JSON 模型,自动为aws codecommit delete-approval-rule-template生成参数解析、参数校验(如名称长度 1~100)以及响应 JSON 的解析逻辑,因此命令行的参数名、约束与输出字段均与该模型保持一致。

总结与常见问题

完整删除流程总结:

  1. list-approval-rule-templateslist-repositories-for-approval-rule-template确认目标模板名称;
  2. 若模板仍与仓库关联,先disassociate-approval-rule-template-from-repository逐个解除关联;
  3. 执行delete-approval-rule-template --approval-rule-template-name <模板名称>
  4. 通过输出中的approvalRuleTemplateId确认删除结果。

常见问题:

  • 删除命令提示ApprovalRuleTemplateInUseException?—— 模板仍关联着仓库,先解除所有关联再重试。
  • 删除后历史拉取请求的审批规则还在吗?—— 在,删除模板不会移除已创建审批规则。
  • 模板 ID 是必填的吗?—— 不是,删除只需模板名称;模板 ID 由服务端在响应中返回。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询