
AWS CLI 实战用apigateway delete-domain-name删除 API Gateway 自定义域名【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文以 aws-cli 仓库中 delete-domain-name.rst 示例文档为主线完整讲解aws apigateway delete-domain-name命令的参数用法、底层 API 定义、错误处理与完整的自定义域名生命周期实践。读完本文你将掌握如何在 API Gateway 中安全、准确地删除不再使用的自定义域名并能结合get-domain-names、get-domain-name等配套命令完成删除前的确认与故障排查。命令速览一条命令删除自定义域名在 AWS API Gateway 中自定义域名DomainName是为 REST API、HTTP API 或 WebSocket API 绑定的自有域名例如api.domain.tld它替代默认的execute-api端点对外提供服务。当域名不再需要时可以使用delete-domain-name命令将其从 API Gateway 中移除。仓库中的 delete-domain-name.rst 给出了最简用法aws apigateway delete-domain-name --domain-name api.domain.tld命令执行成功时不返回任何输出。这是因为该操作在 API Gateway 侧对应一个异步删除流程HTTP 响应码为 202 Accepted详见下文底层 API 定义一节API Gateway 收到请求后即开始执行删除命令本身无需等待删除最终完成即可正常退出。参数详解--domain-name与--domain-name-id从 API 服务模型中定义的DeleteDomainNameRequest结构见 service-2.json可以看出该命令支持两个参数参数类型是否必填请求位置说明--domain-nameString必填URI 路径/domainnames/{domain_name}要删除的 DomainName 资源的名称--domain-name-idString可选Query 字符串domainNameId域名字面量对应的资源标识符仅私有自定义域名private custom domain names支持其中--domain-name直接嵌入请求的 URI 路径中是该操作的唯一必填参数需要与创建时使用的域名完全一致。--domain-name-id是私有自定义域名的专属参数——由于私有域名存在同名多实例的可能通过domainNameId区分资源当同一域名存在多个资源标识时需要显式指定要删除的那个标识符。公有EDGE/REGIONAL自定义域名不需要该参数。从请求结构还可以看出domainName对应 URI 位置参数location: uridomainNameId对应查询字符串参数location: querystring二者在底层由 botocore 序列化到不同的请求位置这也是为什么 CLI 上看起来只是两个普通 flag实际发送的 HTTP 请求路径却是/domainnames/api.domain.tld?domainNameId...这样的形态。底层 API 定义DELETE /domainnames/{domain_name}delete-domain-name命令在 botocore 服务模型中的对应操作定义位于 service-2.json操作名称DeleteDomainNameHTTP 方法DELETE请求 URI/domainnames/{domain_name}响应码202Accepted异步操作可返回错误BadRequestException、ConflictException、NotFoundException、UnauthorizedException、TooManyRequestsException操作说明Deletes the DomainName resource其中响应码 202 表明这是一个异步操作API Gateway 接受删除请求后即返回实际的资源清理在服务端异步完成。这也是该命令无输出、立即返回现象的根本原因。删除前的确认与排查搭配查询类命令使用删除是不可逆操作在生产环境执行前应先用查询类命令确认目标域名与当前状态。仓库中的示例文档提供了两种确认手段列出账号下所有自定义域名使用 get-domain-names 命令查看当前账号下的全部自定义域名确认要删除的域名确实存在且拼写无误aws apigateway get-domain-names输出示例{ items: [ { domainName: api.domain.tld, distributionDomainName: d1a2f3a4c5o6d.cloudfront.net, certificateName: uploadedCertificate, certificateUploadDate: 1462565487 } ] }对于私有自定义域名场景还可以通过--resource-owner SELF过滤出本账号拥有的域名或结合--resource-owner OTHER_ACCOUNTS查看其他账号的域名。查看单个域名的详细状态使用 get-domain-name 命令获取单个域名的完整状态如私有域名需附带--domain-name-idaws apigateway get-domain-name \ --domain-name api.domain.tld输出中domainNameStatus字段的取值决定了该域名当前是否可安全删除。根据服务模型中的DomainNameStatus枚举见 service-2.json其取值包括状态值含义AVAILABLE域名可用可执行更新或删除UPDATING域名正在迁移/更新中需等待当前操作完成PENDING创建流程进行中PENDING_CERTIFICATE_REIMPORT证书正在重新导入PENDING_OWNERSHIP_VERIFICATION等待所有权验证FAILED域名配置失败从模型文档可知当状态为UPDATING时域名不能被进一步修改直到现有操作完成只有当状态为AVAILABLE时才可安全执行删除。异常与错误处理DeleteDomainName操作在 service-2.json 中声明了 5 种可能的错误响应这些错误会以对应的 AWS 异常形式反映到 CLI 输出中异常场景说明BadRequestException请求参数格式错误或不符合校验规则如域名格式非法ConflictException存在冲突删除请求与当前资源状态冲突NotFoundException指定的域名资源不存在HTTP 404模型描述为 The requested resource is not found. Make sure that the request URI is correct.UnauthorizedException调用凭证权限不足无法执行删除TooManyRequestsException请求过于频繁触发了 API 限流其中最常遇到的是NotFoundException当--domain-name指定的域名不存在、或拼写与创建时不一致例如漏掉点号或大小写不同时CLI 会报出资源不存在的错误。此时应回到get-domain-names输出中核对域名的准确写法。另外删除操作需要apigateway:DELETE对应资源的 IAM 权限在 API Gateway 侧体现为对arn:aws:apigateway:*::/domainnames/{domain_name}资源的删除权限权限不足时会触发UnauthorizedException这可以从源码结构推断该操作在服务端是受 IAM 鉴权的管理面操作与 create-domain-name.rst 等管理操作属于同一权限体系。完整生命周期实践创建 → 查询 → 删除自定义域名的典型运维闭环是创建 → 查询确认 → 删除回收三个环节在仓库示例文档中均有对应的命令示例第一步创建自定义域名参考 create-domain-name.rstaws apigateway create-domain-name \ --domain-name my.domain.tld \ --certificate-name my.domain.tld cert \ --certificate-arn arn:aws:acm:us-east-1:012345678910:certificate/fb1b9770-a305-495d-aefb-27e5e101ff3创建成功后返回的distributionDomainName如abcd1234.cloudfront.net即为需要配置 DNS CNAME 记录的目标私有域名场景则需携带--endpoint-configuration {types: [PRIVATE]}及访问策略。第二步查询确认参考 get-domain-names.rstaws apigateway get-domain-names第三步删除回收本文主题参考 delete-domain-name.rstaws apigateway delete-domain-name --domain-name api.domain.tld删除后域名不再被 API Gateway 托管但需要注意的是删除命令本身只作用于 API Gateway 的 DomainName 资源——从DeleteDomainNameRequest的参数结构看该操作只接收域名名称与标识符不涉及 DNS 记录和证书资源的清理。可以推断你还需要在 DNS 服务商侧手动移除指向distributionDomainName或regionalDomainName的 CNAME/别名记录并按需在 AWS Certificate ManagerACM中处理证书的吊销或复用这些步骤不在delete-domain-name命令的能力范围内。小结aws apigateway delete-domain-name是 API Gateway 自定义域名回收的标准手段其本质是对DELETE /domainnames/{domain_name}的异步调用。实战中的关键要点可以归纳为必填参数是--domain-name仅私有自定义域名需要额外的--domain-name-id命令无成功输出响应码 202 表示异步删除删除前用get-domain-names/get-domain-name确认域名拼写与domainNameStatus状态建议AVAILABLE时再操作常见错误为NotFoundException域名不存在或拼写错误、UnauthorizedException权限不足等 5 类异常删除仅作用于 API Gateway 资源DNS 记录与证书需另行处理。相关命令的完整示例均可直接在仓库的 apigateway 示例目录 中查阅API 模型的权威定义见 service-2.json。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考