Last active
February 27, 2017 21:39
-
-
Save spyoungtech/f9475e0348c27fedcfaa98cb1da5957a to your computer and use it in GitHub Desktop.
awsexample.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import print_function | |
import boto3 | |
import json | |
print('Loading function') | |
def respond(err, res=None): | |
return { | |
'statusCode': '400' if err else '200', | |
'body': err.message if err else json.dumps(res), | |
'headers': { | |
'Content-Type': 'application/json', | |
}, | |
} | |
def lambda_handler(event, context): | |
'''Demonstrates a simple HTTP endpoint using API Gateway. You have full | |
access to the request and response payload, including headers and | |
status code. | |
To scan a DynamoDB table, make a GET request with the TableName as a | |
query string parameter. To put, update, or delete an item, make a POST, | |
PUT, or DELETE request respectively, passing in the payload to the | |
DynamoDB API as a JSON body. | |
''' | |
#print("Received event: " + json.dumps(event, indent=2)) | |
operations = { | |
'DELETE': lambda dynamo, x: dynamo.delete_item(**x), | |
'GET': lambda dynamo, x: dynamo.scan(**x), | |
'POST': lambda dynamo, x: dynamo.put_item(**x), | |
'PUT': lambda dynamo, x: dynamo.update_item(**x), | |
} | |
operation = event['httpMethod'] | |
if operation in operations: | |
payload = event['queryStringParameters'] if operation == 'GET' else json.loads(event['body']) | |
dynamo = boto3.resource('dynamodb').Table(payload['TableName']) | |
return respond(None, operations[operation](dynamo, payload)) | |
else: | |
return respond(ValueError('Unsupported method "{}"'.format(operation))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment