Skip to content

Instantly share code, notes, and snippets.

@simonpainter
Created November 7, 2018 14:48
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/08a4946a16ddb1c9b402f40aa5dafdb6 to your computer and use it in GitHub Desktop.
Save simonpainter/08a4946a16ddb1c9b402f40aa5dafdb6 to your computer and use it in GitHub Desktop.
/update
import json,uuid,time
import boto3
zone = 'XXXXXXXXXXXX'
def lambda_handler(event, context):
if ((event['name'] == "api") or (event['name'] == "www") or (event['name'] == "")):
return {
"statusCode": 403,
"response": "Forbidden"
}
dynamodb = boto3.client('dynamodb')
getrequest = dynamodb.get_item(TableName='mytable', Key={'name':{'S':event['name']}})
if 'Item' in getrequest.keys():
if getrequest['Item']['key']['S']==event['secret']:
putrequest = dynamodb.update_item(TableName='mytable',Key={'name': {'S':event['name']}},UpdateExpression="set ip = :i, timetolive=:t",ExpressionAttributeValues={':i': {'S': event['sourceIP']},':t': {'N': str(time.time())}})
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']
},
]
}
},
]
}
)
message = "Updated"
statusCode = 200
else:
message = "Not Authorised"
statusCode = 401
else:
statusCode = 404
message = "Not Found"
return {
"statusCode": statusCode,
"response": message
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment