我在 AWS Route53 上有一个托管域。在该域下,我有一个子域的“A”记录。
我希望能够使用 Java API 更新“A”记录的 IP 地址。但是,在查看类的setAction
方法时com.amazonaws.services.route53.model.Change
,它只接受CREATE
orDELETE
值。这似乎与 Java API 在后台发送的 XML 消息中的允许值相匹配。
有什么办法只更新IP地址,还是我必须删除原始记录然后重新创建?
谢谢
我在 AWS Route53 上有一个托管域。在该域下,我有一个子域的“A”记录。
我希望能够使用 Java API 更新“A”记录的 IP 地址。但是,在查看类的setAction
方法时com.amazonaws.services.route53.model.Change
,它只接受CREATE
orDELETE
值。这似乎与 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 操作。