调用dnsKeys().list接口遇404错误:dnsKeys资源不存在
解决GCP DNS dnsKeys.list接口404错误
核心原因:托管区域未启用DNSSEC
dnsKeys资源仅对启用了DNSSEC的签名托管区域可见。如果你的托管区域没有开启DNSSEC,调用该接口必然返回404——因为该区域根本不存在dnsKeys集合。
解决步骤
- 检查并启用DNSSEC:
登录GCP控制台,进入Cloud DNS服务,找到目标托管区域,在详情页中开启DNSSEC。启用后系统会自动生成对应的dnsKeys资源,此时再调用接口即可正常返回数据。 - 修正代码拼写错误:
你的代码里存在变量名拼写错误:gcp_prject应为gcp_project,这个错误会导致传递错误的项目ID,即使区域配置正确也可能引发异常。修正后的代码:self.dns = discovery.build('dns', 'v1') gcp_project="project_id" managed_zone_id="managed_zone_id" self.dns.dnsKeys().list(project=gcp_project, managedZone=managed_zone_id).execute() - 验证权限:
确保调用接口的服务账号或用户拥有dns.dnsKeys.list权限,建议分配roles/dns.admin角色或更细粒度的dns.dnsKeys.list权限(若权限不足会返回403错误,可提前排查)。
内容的提问来源于stack exchange,提问作者Purusottam
相关产品推荐
相关产品推荐

