分配一个Route53 DNS编程
问题描述:
我已经工作正常提供下面的代码我有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();
}
答
ALIAS
记录集只能指向一个DNS名称。它不能直接指向IP地址。
如果要创建指向IP地址的记录,则需要创建A
记录。
答
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'记录。 –
这是我试图创建的A记录。我用ResourceRecordSet resourceRecordSet = new ResourceRecordSet(subDomainName +“。”,RRType.A)指定了这个;但它不起作用:( – MayoMan
但是你在记录上设置了一个'AliasTarget'。 –
我明白了,这可能是问题,因为错误是关于Alias目标的问题。 。感谢您的帮助:) – MayoMan