var AWS = require('aws-sdk'); var domain = '.example.com'; var hostedZone = 'HOSTEDZONEID'; exports.handler = function(event, context, callback) { var ec2 = new AWS.EC2(); var params = { InstanceIds : [ event.detail['instance-id'] ] }; ec2.describeInstances(params, function (err, data) { if (err) console.log(err, err.stack); else { var subdomain = data.Reservations[0].Instances[0].Tags.filter(function(p){return p.Key == "SubDomain"})[0]; var hostname = data.Reservations[0].Instances[0].PublicDnsName; console.log("subdomain: " + (subdomain ? subdomain.Value : null)); console.log("new hostname: " + hostname); if (hostname && subdomain) { var route53 = new AWS.Route53(); route53.changeResourceRecordSets({ HostedZoneId : hostedZone, ChangeBatch : { Changes : [{ Action: 'UPSERT', ResourceRecordSet: { Name: subdomain.Value + domain, Type: 'CNAME', ResourceRecords: [ { Value: hostname } ], TTL: 300 } }] } }, function (err, data) { if (err) console.log(err, err.stack); else { console.log('success'); } }); } } }); }