My hosted zone has over 2500 records. I wrote java code that retrieves the resource records from a specified hosted zone using ListResourceRecordSetsRequest. However, it is only listing 300 records at max. How can I perform batching so I can retrieve all 2500 records?
ListResourceRecordSetsRequest request = ListResourceRecordSetsRequest.builder()
.hostedZoneId(hostedZone.id())
.maxItems("1000")
.build() as ListResourceRecordSetsRequest
ListResourceRecordSetsResponse listResourceRecordSets = route53Client.listResourceRecordSets(request);
List<ResourceRecordSet> records = listResourceRecordSets.resourceRecordSets();
return records
The code above is what I use and it returns 300 records at best
You can use following snippet to iterate through all records.
final ListResourceRecordSetsRequest listRecordSetRequest = new ListResourceRecordSetsRequest().
withHostedZoneId(hostedZone.getId());
ListResourceRecordSetsResult listRecordSetResult;
final List<ResourceRecordSet> resourceRecordSets = new ArrayList<>();
do {
listRecordSetResult = route53.listResourceRecordSets(listRecordSetRequest);
resourceRecordSets.addAll(listRecordSetResult.getResourceRecordSets());
listRecordSetRequest.setStartRecordIdentifier(listRecordSetResult.getNextRecordIdentifier());
} while (listRecordSetResult.isTruncated());