Created
December 18, 2019 19:02
-
-
Save ssd532/f69e0823f43994e77e4c5680ca770528 to your computer and use it in GitHub Desktop.
aws lambda dynamic dns records updation upon ec2 instance state change
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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