如何使用AWS Java SDK获取Hosted Zone的域名服务器
AWS Java SDK 获取Route53托管区域默认域名服务器的实现方法
直接调用getHostedZone接口查询指定托管区详情即可拿到默认域名服务器,无需调用可重用委托集相关接口,具体逻辑如下:
原理说明
AWS控制台默认创建的托管区域会自动生成专属委托集,该委托集不会出现在ListReusableDelegationSets的返回结果中,仅绑定在对应托管区的详情属性里。你可以在查询托管区详情时,直接从响应关联的DelegationSet对象中提取域名服务器列表。
代码示例
AWS Java SDK 2.x 版本
import software.amazon.awssdk.services.route53.Route53Client; import software.amazon.awssdk.services.route53.model.GetHostedZoneRequest; import software.amazon.awssdk.services.route53.model.GetHostedZoneResponse; import java.util.List; public class QueryHostedZoneNameservers { public static void main(String[] args) { // 替换为目标托管区ID,需去掉ID前缀的/hostedzone/字符串 String targetHostedZoneId = "替换为你的托管区ID"; try (Route53Client route53Client = Route53Client.create()) { GetHostedZoneRequest zoneRequest = GetHostedZoneRequest.builder() .id(targetHostedZoneId) .build(); GetHostedZoneResponse zoneResponse = route53Client.getHostedZone(zoneRequest); // 提取默认域名服务器列表 List<String> nameservers = zoneResponse.delegationSet().nameServers(); // 遍历输出结果 nameservers.forEach(System.out::println); } } }
AWS Java SDK 1.x 版本
import com.amazonaws.services.route53.AmazonRoute53; import com.amazonaws.services.route53.AmazonRoute53ClientBuilder; import com.amazonaws.services.route53.model.GetHostedZoneRequest; import com.amazonaws.services.route53.model.GetHostedZoneResult; import java.util.List; public class QueryHostedZoneNameserversV1 { public static void main(String[] args) { // 替换为目标托管区ID,需去掉ID前缀的/hostedzone/字符串 String targetHostedZoneId = "替换为你的托管区ID"; AmazonRoute53 route53Client = AmazonRoute53ClientBuilder.defaultClient(); GetHostedZoneRequest zoneRequest = new GetHostedZoneRequest().withId(targetHostedZoneId); GetHostedZoneResult zoneResult = route53Client.getHostedZone(zoneRequest); // 提取默认域名服务器列表 List<String> nameservers = zoneResult.getDelegationSet().getNameServers(); // 遍历输出结果 nameservers.forEach(System.out::println); } }
注意:如果查询的是私有托管区域,默认不会生成委托集,域名服务器统一使用VPC配置的DNS地址,不需要从Route53接口获取。
内容的提问来源于stack exchange,提问作者solaechea
相关产品推荐
相关产品推荐

