Using python in AWS Lambda, how do I put/get an item from a DynamoDB table?
In Node.js this would be something like:
dynamodb.getItem({ "Key": {"fruitName" : 'banana'}, "TableName": "fruitSalad" }, function(err, data) { if (err) { context.fail('Incorrect username or password'); } else { context.succeed('yay it works'); } }); All I need is the python equivalent.
34 Answers
Using Boto3 (Latest AWS SDK for python)
You import it with
import boto3 Then call the client via
dynamodb = boto3.client('dynamodb') Get item example
dynamodb.get_item(TableName='fruitSalad', Key={'fruitName':{'S':'Banana'}}) Put item example
dynamodb.put_item(TableName='fruitSalad', Item={'fruitName':{'S':'Banana'},'key2':{'N':'value2'}}) 'S' indicates a String value, 'N' is a numeric value
5Using latest AWS SDK
import boto3 def lambda_handler(event, context): # this will create dynamodb resource object and # here dynamodb is resource name client = boto3.resource('dynamodb') # this will search for dynamoDB table # your table name may be different table = client.Table("dynamoDB") print(table.table_status) table.put_item(Item= {'id': '34','company': 'microsoft'}) If your are using AWS you can use this code sample, only you have to give permissions to this lambda function, you can find details in link
1full example:
import boto3 def lambda_handler(event, context): client = boto3.client('dynamodb') for record in event['Records']: # your logic here... try: client.update_item(TableName='dynamo_table_name', Key={'hash_key':{'N':'value'}}, AttributeUpdates={"some_key":{"Action":"PUT","Value":{"N":'value'}}}) except Exception, e: print (e) please note that you need to decide when to use 'update_item' or 'put_item'.
with 'update_item' you ensure to have only one record with the same hash/range. if the record exists it can update this record, else it will create it
1You can use below lines to write and read from the DynamoDB Table:
First, import the boto3 package
import boto3 Create an object for dynamoDB
dynamodb = boto3.resource('dynamodb') Select your specific table
table = dynamodb.Table("fruitSalad") Write:
table.put_item(Item= {'fruitName': 'Banana'}) Read:
table.get_item(Key={'fruitName': 'Banana'})