1.0.3 • Published 5 years ago
route53-ddns v1.0.3
route53-ddns
A simple script to update a Route53 record when the public IP address changes. Similar to NoIP/DynDNS.
Node
Install
$ npm install route53-ddnsUsage
const { runRoute53Updater } = require('route53-ddns');
const main = async () => {
await runRoute53Updater({
interval: 60 * 60 * 6,
domainName: 'test.example.com',
recordType: 'A',
hostedZoneID: 'Z123FFF1232132',
updateSNSTopicARN: 'arn:aws:sns:eu-west-2:111111111111:ip_update'
});
};
main().catch(err => console.error(err));runRoute53Updater (options)
options
interval [number]Interval to check public IPdomainName [string]domain name to update in Route 53recordType [string = 'A']Record typehostedZoneID [string]Hosted Zone IDttl [number] = 60Record TTLupdateSNSTopicARN [string] = nullSNS Topic to send updates onupdateSNSSubjectTemplate [string] = nullSNS subject templateupdateSNSBodyTemplate [string] = nullSNS body templatelogger [object] = pinoA logger object withdebug,info,warnanderror. If not provided,pinois usedlogLevel [string] = infoLog level (pino)
Command Line
Install
$ npm install -g route53-ddnsUsage
$ export AWS_ACCESS_KEY_ID=xxx
$ export AWS_SECRET_ACCESS_KEY=xxx
$ export AWS_REGION=eu-west-2
$ export ROUTE53_DDNS_UPDATE_INTERVAL=21600
$ export ROUTE53_DDNS_DOMAIN_NAME=test.example.com
$ export ROUTE53_DDNS_RECORD_TYPE=A
$ export ROUTE53_DDNS_HOSTED_ZONE_ID=Z123FFF1232132
$ export ROUTE53_DDNS_UPDATE_SNS_TOPIC_ARN=arn:aws:sns:eu-west-2:111111111111:ip_update
$ route53-ddnsAccepted Environment Variables
Required
ROUTE53_DDNS_DOMAIN_NAME
ROUTE53_DDNS_RECORD_TYPE
ROUTE53_DDNS_HOSTED_ZONE_ID
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_REGIONOptional
ROUTE53_DDNS_UPDATE_INTERVAL = 21600 # 6 Hours
ROUTE53_DDNS_UPDATE_SNS_TOPIC_ARN = null # Disabled
ROUTE53_DDNS_RECORD_TTL = 60
ROUTE53_DDNS_LOG_LEVEL = 'info'
ROUTE53_DDNS_UPDATE_SNS_SUBJECT = '[{domainName}] Public IP Updated'
ROUTE53_DDNS_UPDATE_SNS_BODY = 'domainName: {domainName}\ncurrentPublicIP: {currentPublicIP}\nhostedZoneID: {hostedZoneID}'