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 = ; const main = async { await ;}; ;
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}'