Skip to content

Instantly share code, notes, and snippets.

@ssd532
Created December 18, 2019 19:02
Show Gist options
  • Save ssd532/f69e0823f43994e77e4c5680ca770528 to your computer and use it in GitHub Desktop.
Save ssd532/f69e0823f43994e77e4c5680ca770528 to your computer and use it in GitHub Desktop.
aws lambda dynamic dns records updation upon ec2 instance state change
const AWS = require('aws-sdk')
let params = {
InstanceIds: [
"i-something"
]
};
let route53params = {
"HostedZoneId": "", // zone id
"ChangeBatch": {
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "", // domain
"Type": "A",
"TTL": 10,
"ResourceRecords": [{
"Value": "ip" // this will get updated below
}]
}
}]
}
};
exports.handler = function(event, context) {
//console.log('r53-1 event log start')
//console.log('event is: ' + JSON.stringify(event))
let ec2 = new AWS.EC2();
ec2.describeInstances(params, function(err, data) {
console.log('inside describeInstance')
if (err) {
console.log('error in describeInstance')
console.log(err, err.stack); // an error occurred
}
else {
// console.log('data is: ' + JSON.stringify(data)); // successful response
var ip = data.Reservations[0].Instances[0].PublicIpAddress
console.log('ip is: ' + ip)
}
var route53 = new AWS.Route53()
route53params.ChangeBatch.Changes[0].ResourceRecordSet.ResourceRecords[0].Value = ip
console.log('route53params ip is: ' + route53params.ChangeBatch.Changes[0].ResourceRecordSet.ResourceRecords[0].Value)
route53.changeResourceRecordSets(route53params, function(err, data) {
console.log('err is: ', err, 'data is: ', data)
context.done(null, 'Function finished')
});
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment