2017-10-12 166 views
0

我已经工作正常提供下面的代码我有serverBase.mydomain.net指向IP 10.20.30.40 A记录,但如果我想创建一个A记录serverProxy这点到IP(中注释掉行交换),但它给人的错误:分配一个Route53 DNS编程

"Tried to create an alias that targets 10.20.30.40., type A in zone ********* , but the alias target name does not lie within the target zone"

我可以手工做,所以它是在东西是不正确的代码?

String subDomainName = "serverProxy.mydomain.net"; 
    String zoneId = "**********"; 
    //String target = "serverBase.mydomain.net"; 
    String target = "10.20.30.40"; 

    AmazonRoute53Client client = getAmazonRoute53Client(); 
    List<Change> changes = new ArrayList<Change>(); 
    List<ResourceRecord> recourceRecords = new ArrayList<>(); 
    ResourceRecordSet resourceRecordSet = new ResourceRecordSet(subDomainName+".",RRType.A); 

    //AliasTarget alias = new AliasTarget(zoneId, target); 
    //alias.setEvaluateTargetHealth(false); 
    //resourceRecordSet.setAliasTarget(alias); 

    changes.add(new Change(ChangeAction.CREATE, resourceRecordSet)); 
    ChangeBatch changeBatch = new ChangeBatch(changes); 

    try { 
     ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest = new ChangeResourceRecordSetsRequest(zoneId, changeBatch); 
     client.changeResourceRecordSets(changeResourceRecordSetsRequest); 
    } 
    catch(Exception e) 
    { 
     System.out.println(e.getMessage()); 
     e.printStackTrace(); 
    } 

回答

1

ALIAS记录集只能指向一个DNS名称。它不能直接指向IP地址。

如果要创建指向IP地址的记录,则需要创建A记录。

+0

这是我试图创建的A记录。我用ResourceRecordSet resourceRecordSet = new ResourceRecordSet(subDomainName +“。”,RRType.A)指定了这个;但它不起作用:( – MayoMan

+0

但是你在记录上设置了一个'AliasTarget'。 –

+0

我明白了,这可能是问题,因为错误是关于Alias目标的问题。 。感谢您的帮助:) – MayoMan

0
String zoneId = "myzoneID"; 
    String cname = "myserver.mydomain.net"; 

    AmazonRoute53Client client = getAmazonRoute53Client(); 
    List<Change> changes = new ArrayList<>(); 

    Change change = new Change() 
      .withAction(ChangeAction.CREATE) 
      .withResourceRecordSet(new ResourceRecordSet() 
        .withType(RRType.CNAME) 
        .withName(cname) 
        .withTTL(300L) 
        .withResourceRecords(new ResourceRecord("10.20.30.40"))); 

    changes.add(change); 
    ChangeBatch changeBatch = new ChangeBatch(changes); 
    try { 
     ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest = new ChangeResourceRecordSetsRequest(zoneId, changeBatch); 
     client.changeResourceRecordSets(changeResourceRecordSetsRequest); 
     logback.info("DNS Record " + cname + " created"); 
    } 
    catch(InvalidChangeBatchException icbe) 
    { 
     String error = icbe.getMessage(); 
     if(error.contains("already exists")) 
     { 
      logback.info("DNS Record already exists"); 
     } 
     else 
     { 
      throw icbe; 
     } 
    } 
+0

通常,您将创建一个引用DNS名称的“CNAME”(如“ALIAS”)。对于IP,它们应该是'A'记录。 –