
AWS CLI apigateway get-domain-names 命令实战指南查询与管理 API Gateway 自定义域名【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cliaws apigateway get-domain-names是 AWS Command Line InterfaceAWS CLI中用于获取 Amazon API Gateway 自定义域名Custom Domain Name列表的核心命令。本文将围绕该命令的三个典型使用场景展开基础列表查询、按资源所有者筛选自己账户的域名、以及查询其他账户中可创建域名访问关联Domain Name Access Association的域名并结合当前仓库中 AWS CLI 的服务模型与分页器配置深入讲解命令的底层实现、参数含义与输出字段帮助你准确掌握这一运维常用命令。命令概述与 API 映射在 AWS CLI 中apigateway服务命令由当前仓库内置的 API 服务模型驱动。get-domain-names对应的是 service-2.json 中定义的GetDomainNames操作HTTP 方法与路径GET /domainnames输入模型GetDomainNamesRequest输出模型DomainNames可能抛出的异常BadRequestException、NotFoundException、UnauthorizedException、TooManyRequestsException从底层实现看该命令本质上是对 API Gateway 的domainnames集合资源的 GET 请求用于“描述 DomainName 资源的集合”官方模型注释为Request to describe a collection of DomainName resources。服务端会以分页形式返回结果每条记录代表一个已配置的自定义域名。请求参数GetDomainNamesRequest根据 GetDomainNamesRequest 的定义该命令支持三个可选参数均以 query string 形式发送参数类型说明positionString当前分页位置标记pagination position用于在结果集中翻页通常由前一次响应的position字段回填limitInteger每页返回的最大结果数默认值为 25最大值为 500resource-ownerString域名访问关联的资源所有者取值为SELF或OTHER_ACCOUNTS详见下文position与limit正是分页机制的载体。仓库中的 paginators-1.json 为GetDomainNames定义了标准分页配置GetDomainNames: { input_token: position, output_token: position, limit_key: limit, result_key: items }这意味着你可以在 AWS CLI 中使用--paginate选项自动翻页并借助--page-size控制每页大小不超过服务端上限 500输出模型的DomainNames结构也印证了这一点——它由position下一页游标与items当前页域名元素列表组成见 DomainNames。resource-owner 参数与 ResourceOwner 枚举resource-owner是查询域名访问关联场景的关键参数。服务模型中的 ResourceOwner 将其取值严格限定为两个枚举值SELF查询当前 AWS 账户自己拥有的自定义域名OTHER_ACCOUNTS查询其他 AWS 账户拥有的、且你有权限与之创建域名访问关联Domain Name Access Association的域名。该参数仅在需要区分“本账户域名”与“跨账户可关联域名”时使用不指定时命令按 API Gateway 的默认行为返回域名集合。示例一获取自定义域名基础列表最直接的用法是不带任何参数获取当前环境下的域名列表aws apigateway get-domain-names输出示例{ items: [ { distributionDomainName: d9511k3l09bkd.cloudfront.net, certificateUploadDate: 1452812505, certificateName: my_custom_domain-certificate, domainName: subdomain.domain.tld } ] }该响应包含四个核心字段domainName自定义域名本身如subdomain.domain.tlddistributionDomainNameAPI Gateway 为该自定义域名关联的 CloudFront 分发域名默认端点类型为 EDGE 时返回形如d9511k3l09bkd.cloudfront.net是实际承载流量的入口certificateName绑定在该域名上的 SSL/TLS 证书名称certificateUploadDate证书上传时间戳秒级 Unix 时间戳用于确认证书的注册时间。提示不传--resource-owner时返回的字段相对精简适合快速确认当前账户下存在哪些自定义域名及其 CloudFront 分发信息。示例二查询当前账户SELF拥有的自定义域名当你需要完整查看本 AWS 账户拥有的自定义域名包括私有 APIPrivate API的域名配置时使用--resource-owner SELFaws apigateway get-domain-names \ --resource-owner SELF输出示例{ items: [ { domainName: my.domain.tld, domainNameArn: arn:aws:apigateway:us-east-1::/domainnames/my.private.domain.tld, certificateUploadDate: 2024-08-15T17:02:55-07:00, regionalDomainName: d-abcd1234.execute-api.us-east-1.amazonaws.com, regionalHostedZoneId: Z1UJRXOUMOOFQ8, regionalCertificateArn: arn:aws:acm:us-east-1:012345678910:certificate/fb1b9770-a305-495d-aefb-27e5e101ff3, endpointConfiguration: { types: [ REGIONAL ] }, domainNameStatus: AVAILABLE, securityPolicy: TLS_1_2 }, { domainName: my.private.domain.tld, domainNameId: abcd1234, domainNameArn: arn:aws:apigateway:us-east-1:012345678910:/domainnames/my.private.domain.tldabcd1234, certificateArn: arn:aws:acm:us-east-1:012345678910:certificate/fb1b9770-a305-495d-aefb-27e5e101ff3, certificateUploadDate: 2024-11-26T11:44:40-08:00, endpointConfiguration: { types: [ PRIVATE ] }, domainNameStatus: AVAILABLE, securityPolicy: TLS_1_2 } ] }与示例一相比SELF查询返回了更丰富的域名元数据关键字段含义如下endpointConfiguration.types域名端点类型取值为REGIONAL区域级端点直接使用regionalDomainName作为目标或PRIVATE私有 API 专用通过接口 VPC 端点访问regionalDomainName/regionalHostedZoneId区域级端点域名及其 Route 53 Hosted Zone ID配置 CNAME 或别名记录Alias Record时需要使用regionalCertificateArn/certificateArn区域级证书或证书的 ARN通常指向 AWS Certificate ManagerACM中的证书domainNameArn域名的 Amazon Resource Name用于在 IAM 策略与资源级授权中引用该资源注意私有域名 ARN 形如/domainnames/my.private.domain.tldabcd1234其中的abcd1234是私有域名的资源标识后缀domainNameId域名的资源 ID私有域名通常带有该字段domainNameStatus域名配置状态AVAILABLE表示已完成配置、可以对外提供服务securityPolicy域名绑定的 TLS 安全策略如TLS_1_2决定客户端可使用的 TLS 版本certificateUploadDate此时返回 ISO 8601 格式的时间戳如2024-08-15T17:02:55-07:00用于精确记录证书上传时间。可以看出SELF模式适合对自有域名进行完整的健康检查与配置审计你可以据此确认域名状态是否AVAILABLE、TLS 策略是否达标、证书 ARN 是否有效以及为 REGIONAL 端点配置 DNS 记录。示例三查询其他账户中可建立域名访问关联的域名私有 API 的跨账户场景下你需要将其他账户拥有的域名“关联”到自己的 API Gateway 上即创建 Domain Name Access Association。此时使用--resource-owner OTHER_ACCOUNTSaws apigateway get-domain-names \ --resource-owner OTHER_ACCOUNTS输出示例{ items: [ { domainName: my.private.domain.tld, domainNameId: abcd1234, domainNameArn: arn:aws:apigateway:us-east-1:012345678910:/domainnames/my.private.domain.tldabcd1234 } ] }该模式返回的是你有权限创建域名访问关联的其他账户私有域名字段与示例二中的私有域名字段一致domainName域名名称如my.private.domain.tlddomainNameId私有域名的资源 ID用于在创建关联时精确定位目标资源domainNameArn完整的资源 ARN其中包含账户 ID012345678910与资源后缀abcd1234是后续创建 Domain Name Access Association、编写资源级 IAM 策略时的关键标识。三个示例共同构成了从“了解有哪些域名”到“区分本账户/跨账户域名”再到“准备建立跨账户关联”的完整操作链路是排查私有 API 域名配置、规划跨账户资源共享时的常用命令序列。从源码理解命令的工程实现除了服务模型之外AWS CLI 的 apigateway 命令还遵循仓库中通用的命令生成与参数处理机制命令生成apigateway服务的 CLI 命令由awscli的clidriver依据 service-2.json 中的操作定义自动生成get-domain-names与 HTTP 操作GetDomainNames一一对应参数名遵循 CLI 的连字符风格--resource-owner对应模型中的resourceOwner分页支持得益于 paginators-1.json 中的定义该命令天然支持--paginate自动分页无需手工维护position游标输出解析响应的 JSON 结构由botocore的解析器按模型反序列化items数组即ListOfDomainName列表因此可以使用--query与--output进行过滤和格式化例如提取所有域名名称。基于此你可以写出更贴合自动化场景的命令例如仅输出域名名称列表aws apigateway get-domain-names \ --resource-owner SELF \ --query items[].domainName \ --output text或者在大量域名场景下借助分页全量拉取aws apigateway get-domain-names \ --resource-owner SELF \ --paginate \ --page-size 500常见注意事项参数约束--resource-owner仅接受SELF与OTHER_ACCOUNTS传入其他值会触发参数校验错误对应模型的枚举约束分页上限单页默认 25 条、最大 500 条域名数量较多时务必使用--paginate否则默认行为会受分页限制私有域名 ARN 格式私有域名的 ARN 带id后缀跨账户关联与 IAM 授权时应以完整 ARN 为准避免截断导致权限不匹配权限要求调用get-domain-names需要相应的apigateway:GET权限跨账户查询OTHER_ACCOUNTS还要求调用方具备与目标域名建立访问关联的授权。通过上述示例与源码解读你可以将aws apigateway get-domain-names灵活运用于日常的域名巡检、证书核对、DNS 配置排障以及私有 API 的跨账户规划中必要时可结合仓库中的服务模型service-2.json与分页配置paginators-1.json进一步核对参数与字段的准确语义。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考