import boto3 import base64 DDB = boto3.resource('dynamodb').Table('events') def lambda_handler(event, context): print("Received %s records" % len(event['Records'])) # logging is free! totals = {} for record in event['Records']: payload = base64.b64decode(record['kinesis']['data']) # base64 decode if not payload in totals: totals[payload] = 0 # init to 0 totals[payload] += 1 # simply inc # 1 DDB write for each event name in the given batch (counter update) for name, total in totals.iteritems(): print("Recording %s %s events" % (total, name)) # logging is free! DDB.update_item( Key={'Name': name}, UpdateExpression='ADD EventCount :val', ExpressionAttributeValues={':val': total}, ) return 'Successfully processed {} records.'.format(len(event['Records']))