route53-ddns
v1.0.3
Published
Update a Route53 DNS record when the public IP changes
Downloads
9
Readme
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-ddns
Usage
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] = 60
Record TTLupdateSNSTopicARN [string] = null
SNS Topic to send updates onupdateSNSSubjectTemplate [string] = null
SNS subject templateupdateSNSBodyTemplate [string] = null
SNS body templatelogger [object] = pino
A logger object withdebug
,info
,warn
anderror
. If not provided,pino
is usedlogLevel [string] = info
Log level (pino
)
Command Line
Install
$ npm install -g route53-ddns
Usage
$ 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-ddns
Accepted 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_REGION
Optional
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}'