Skip to content

Instantly share code, notes, and snippets.

@simonpainter
Created November 7, 2018 14:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simonpainter/2406dab74a16234df20f9545ebc6f1ea to your computer and use it in GitHub Desktop.
Save simonpainter/2406dab74a16234df20f9545ebc6f1ea to your computer and use it in GitHub Desktop.
/create
import json, uuid, time
import boto3
zone = 'XXXXXXXXXXXXX'
def lambda_handler(event, context):
dynamodb = boto3.client('dynamodb')
if ((event['name'] == "api") or (event['name'] == "*") or (event['name'] == "www") or (event['name'] == "")):
return {
"statusCode": 403,
"response": "Forbidden"
}
getrequest = dynamodb.get_item(TableName='mytable', Key={'name':{'S':event['name']}})
if 'Item' in getrequest.keys():
message = "Already Taken"
statusCode = 200
else:
guid = str(uuid.uuid4())
putrequest = dynamodb.put_item(TableName='mytable', Item= {'name': {'S': event['name']},'ip': {'S':event['sourceIP']},'timetolive':{'N':str(time.time())},'key':{'S':guid}})
statusCode = 201
message = guid
route53 = boto3.client('route53')
dnsrequest = route53.change_resource_record_sets(
HostedZoneId=zone,
ChangeBatch={
'Comment': 'updated by api',
'Changes': [
{
'Action': 'UPSERT',
'ResourceRecordSet': {
'Name': event['name']+".pi-dns.me.",
'Type': 'A',
'TTL': 60,
'ResourceRecords': [
{
'Value': event['sourceIP']
},
]
}
},
]
}
)
return {
"statusCode": statusCode,
"response": message
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment