Skip to content

Instantly share code, notes, and snippets.

@robbiet480
Created April 28, 2015 20:46
Show Gist options
  • Save robbiet480/be01d0db6454e9b29162 to your computer and use it in GitHub Desktop.
Save robbiet480/be01d0db6454e9b29162 to your computer and use it in GitHub Desktop.
Hacky code to delete all records in a Route53 zone using the aws-sdk module
var _ = require('lodash')
, async = require('async')
, AWS = require('aws-sdk')
, route53 = new AWS.Route53({apiVersion: '2013-04-01'});
var allRecords = [];
var IsTruncated = true;
var NextRecordName = "";
var zoneId = "<YOUR ZONE ID>";
var listParams = {
HostedZoneId: zoneId
};
async.whilst(function(){
return IsTruncated;
}, function(callback){
if(NextRecordName != "") listParams.StartRecordName = NextRecordName;
route53.listResourceRecordSets(listParams, function(err, data) {
if (err) {
callback(err);
} else {
IsTruncated = data.IsTruncated;
NextRecordName = data.NextRecordName;
_.forEach(data.ResourceRecordSets, function(record){
if(record.Type != "NS" && record.Type != "SOA") {
allRecords.push({"Action":"DELETE","ResourceRecordSet":{"Name":record.Name,"Type":record.Type,"TTL": record.TTL,"ResourceRecords":[{"Value":record.ResourceRecords[0].Value}]}});
}
});
console.log(allRecords.length+' records so far');
return callback();
}
});
}, function(err){
if(err) console.error(err);
var chunked = _.chunk(allRecords, 100);
async.eachSeries(chunked, function(records, cb){
var deleteParams = {
ChangeBatch: {
Changes: records
},
HostedZoneId: zoneId
};
route53.changeResourceRecordSets(deleteParams, function(err, data) {
if(err) {
cb(err);
} else {
console.log('Deleted!');
cb(null);
}
});
}, function(err){
if(err) {
console.error(err);
} else {
console.log('done!');
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment