我在 AWS Route53 上有一个托管域。在该域下,我有一个子域的“A”记录。
我希望能够使用 Java API 更新“A”记录的 IP 地址。但是,在查看类的setAction方法时com.amazonaws.services.route53.model.Change,它只接受CREATEorDELETE值。这似乎与 Java API 在后台发送的 XML 消息中的允许值相匹配。
有什么办法只更新IP地址,还是我必须删除原始记录然后重新创建?
谢谢
我在 AWS Route53 上有一个托管域。在该域下,我有一个子域的“A”记录。
我希望能够使用 Java API 更新“A”记录的 IP 地址。但是,在查看类的setAction方法时com.amazonaws.services.route53.model.Change,它只接受CREATEorDELETE值。这似乎与 Java API 在后台发送的 XML 消息中的允许值相匹配。
有什么办法只更新IP地址,还是我必须删除原始记录然后重新创建?
谢谢
使用这段代码对我有用:
ResourceRecord record = new ResourceRecord(loadBalancer);
List<ResourceRecord> records = new ArrayList<ResourceRecord>();
records.add(record);
ResourceRecordSet recordsSet = new ResourceRecordSet();
recordsSet.setResourceRecords(records);
recordsSet.setType(RRType.CNAME);
recordsSet.setTTL(900L);
recordsSet.setName(subdomain + ".");
Change change = new Change(ChangeAction.CREATE, recordsSet);
List<Change> changes = new ArrayList<Change>();
changes.add(change);
ChangeBatch batch = new ChangeBatch(changes);
ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest();
request.setChangeBatch(batch);
request.setHostedZoneId(hostedZoneId);
ChangeResourceRecordSetsResult result = getRoute53Client().changeResourceRecordSets(request);
System.out.println(result);
只需将我使用的变量替换为适当的数据即可。(子域、loadBalancer 和 hostsZoneId)。方法 getRoute53Client() 从 AWS API 返回 AmazonRoute53Client 类的实例。
ResourceRecord rr = new ResourceRecord(IPAdress); // IPAddress will be String variable that has IP value
List<ResourceRecord> rrList = new ArrayList<ResourceRecord>();
rrList.add(rr);
// Create a ResourceRecordSet
ResourceRecordSet resourceRecordSet = new ResourceRecordSet();
resourceRecordSet.setName(domainName); //domainName is String value of your domain
resourceRecordSet.setType(RRType.A); //type of ResourceRecordSet
resourceRecordSet.setTTL(new Long(300));
resourceRecordSet.setWeight(new Long(0));
resourceRecordSet.setResourceRecords(rrList);
// Create a change
Change change = new Change(ChangeAction.CREATE, resourceRecordSet);
List<Change> changesList = new ArrayList<Change>();
changesList.add(change);
// Create a change batch
ChangeBatch changeBatch = new ChangeBatch(changesList);
// Create ChangeResourceRecordSetRequest.
ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest(hostedZoneID, changeBatch); //hostedZoneId is variable that is the id of HostedZone
// Send the request and get the response.
ChangeResourceRecordSetsResult result = amazonRoute53Client.changeResourceRecordSets(request);
// Print the result
System.out.println(result.getChangeInfo());
唯一的方法是使用这里提到的 DELETE/CREATE 序列。
创建更改批次请求
要创建更改批处理请求,请使用 ChangeResourceRecordSets 操作 ChangeBatch 元素。对于要更新的每条记录,您可以在 ChangeBatch 元素中使用 CREATE 和 DELETE 操作。如果您只创建记录,那么您将只使用 CREATE 操作。