Skip to content

Instantly share code, notes, and snippets.

@logemann
Created June 7, 2020 20:15
Show Gist options
  • Select an option

  • Save logemann/8940f9668c04400ca172c11b28df134f to your computer and use it in GitHub Desktop.

Select an option

Save logemann/8940f9668c04400ca172c11b28df134f to your computer and use it in GitHub Desktop.

Revisions

  1. Marc Logemann created this gist Jun 7, 2020.
    43 changes: 43 additions & 0 deletions changeCName.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    var AWS = require('aws-sdk');
    var route53 = new AWS.Route53();


    exports.handler = async (event) => {
    console.log("Invoking CName change Script");
    var ec2 = new AWS.EC2();
    let vpnUrl;

    var data = await ec2.describeClientVpnEndpoints({}).promise();

    if (data.ClientVpnEndpoints.length > 0) {
    console.log(data.ClientVpnEndpoints[0].DnsName);
    vpnUrl = data.ClientVpnEndpoints[0].DnsName;
    return route53.changeResourceRecordSets(getParameters(event.cname, event.dnsZoneId, vpnUrl)).promise();
    } else {
    throw "No active VPN Endpoint! No DNS modification needed.";
    }
    };

    function getParameters(cname, hostedZoneId, vpnUrl) {
    return {
    ChangeBatch: {
    "Comment": "Auto generated CName Record for VPN Endpoint",
    "Changes": [
    {
    "Action": "UPSERT",
    "ResourceRecordSet": {
    "Name": cname,
    "Type": "CNAME",
    "TTL": 300,
    "ResourceRecords": [
    {
    "Value": vpnUrl
    }
    ]
    }
    }
    ]
    },
    HostedZoneId: hostedZoneId
    };
    }