-
Notifications
You must be signed in to change notification settings - Fork 0
/
route53me.py
54 lines (42 loc) · 1.34 KB
/
route53me.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import boto3
import requests
import re
import time
# Replace below with correct hosted zone id, host name, and desired TTL
hostedZoneId = 'ZK8XMWWB*****'
hostName = 'host.dyn.example.com'
ttl = 60
# Any ip lookup service that returns just the ip address as text
ipifyEndpoint = 'https://api.ipify.org'
validIpRegex = '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
thisPublicIp = requests.get(ipifyEndpoint).text
validIpPattern = re.compile(validIpRegex)
validIpMatch = validIpPattern.match(thisPublicIp)
if validIpMatch == None:
# Not a valid ip address
exit('Invalid IP Address: ' + thisPulbicIp)
route53 = boto3.client('route53')
route53.change_resource_record_sets(
HostedZoneId = hostedZoneId,
ChangeBatch = {
'Comment' : 'Last updated by route53me.py at ' % time.gmtime(),
'Changes' : [
{
'Action' : 'UPSERT',
'ResourceRecordSet' :
{
'Name' : hostName,
'Type' : 'A',
'TTL' : ttl,
'ResourceRecords' :
[
{
'Value' : thisPublicIp
},
]
}
},
]
}
)
print ('Updated to ' + thisPublicIp)