2017-10-12 15 views
0

J'ai le code suivant qui fonctionne très bien à condition d'avoir un enregistrement pour serverBase.mydomain.net qui pointe vers IP 10.20.30.40 Mais si je veux créer un enregistrement ServerProxy dont les points à l'adresse IP (swap dans la ligne en commentaire), mais il donne l'erreur:Attribution d'un Route53 DNS programatically

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

Je peux le faire manuellement il est donc quelque chose dans le code qui est incorrect?

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

Répondre

1

Un jeu d'enregistrements ALIAS ne peut pointer vers un nom DNS. Il ne peut pas pointer directement vers une adresse IP. Si vous souhaitez créer un enregistrement qui pointe vers une adresse IP, vous devez créer un enregistrement A.

+0

C'est un enregistrement que j'essaie de créer. Je spécifie ceci avec ResourceRecordSet resourceRecordSet = new ResourceRecordSet (subDomainName + ".", RRType.A); Mais cela ne fonctionne pas :( – MayoMan

+0

Mais vous définissez un 'AliasTarget' sur l'enregistrement –

+0

Je vois.Ceci peut être le problème que l'erreur parle de la cible Alias.L'essayer demain et sélectionnez comme réponse si cela fonctionne Merci pour votre aide :) – 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

Normalement, vous créez un "CNAME" se référant à un nom DNS (comme un "ALIAS"). Pour les IP, ils devraient être des enregistrements 'A'. –