2017-10-12 3 views
0

ich den folgenden Code haben die feinen versehen Werke habe ich einen A-Eintrag für serverBase.mydomain.net die 10.20.30.40 IP-Punkte, aber wenn ich will einen A-Eintrag serverProxy, welche Punkte erstellen auf den IP (Swap in der Zeile auf Kommentar), aber es gibt den Fehler:ein Route53 DNS zuweisen programmatisch

"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"

ich manuell dies tun kann, damit es etwas im Code ist, falsch ist?

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(); 
    } 

Antwort

1

Ein ALIAS Datensatz kann darauf nur auf einen DNS-Namen. Es kann nicht direkt auf eine IP-Adresse verweisen.

Wenn Sie einen Datensatz erstellen möchten, der auf eine IP-Adresse verweist, möchten Sie einen Datensatz A erstellen.

+0

Es ist ein A-Datensatz, den ich versuche zu erstellen. Ich spezifiziere dies mit ResourceRecordSet resourceRecordSet = new ResourceRecordSet (subDomainName + ".", RRType.A); Aber es funktioniert nicht :( – MayoMan

+0

Aber Sie setzen ein 'AliasTarget' auf dem Datensatz. –

+0

Ich sehe. Das kann das Problem sein, da der Fehler über das Alias-Ziel spricht. Wird es morgen versuchen und als Antwort auswählen, wenn es funktioniert Vielen Dank für Ihre Hilfe :) – 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

Normalerweise würden Sie einen "CNAME" erstellen, der sich auf einen DNS-Namen (wie ein 'ALIAS') bezieht. Für IPs sollten sie "A" -Rekorde sein. –

Verwandte Themen