4

我在 AWS Route53 上有一个托管域。在该域下,我有一个子域的“A”记录。

我希望能够使用 Java API 更新“A”记录的 IP 地址。但是,在查看类的setAction方法时com.amazonaws.services.route53.model.Change,它只接受CREATEorDELETE值。这似乎与 Java API 在后台发送的 XML 消息中的允许值相匹配。

有什么办法只更新IP地址,还是我必须删除原始记录然后重新创建?

谢谢

4

3 回答 3

4

使用这段代码对我有用:

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 类的实例。

于 2015-02-11T19:25:04.573 回答
4
        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());
于 2016-11-08T11:37:24.950 回答
2

唯一的方法是使用这里提到的 DELETE/CREATE 序列。

创建更改批次请求

要创建更改批处理请求,请使用 ChangeResourceRecordSets 操作 ChangeBatch 元素。对于要更新的​​每条记录,您可以在 ChangeBatch 元素中使用 CREATE 和 DELETE 操作。如果您只创建记录,那么您将只使用 CREATE 操作。

于 2012-04-16T06:51:29.977 回答