def _lambda_handler()

in design-patterns/ddbreplica_lambda.py [0:0]


def _lambda_handler(event, context):
    dynamodb = boto3.resource(**boto_args)
    dynamodb_table = dynamodb.Table('logfile_replica')

    ddb_deserializer = StreamTypeDeserializer()

    records = event['Records']

    for record in records:
        ddb = record['dynamodb']

        event_name = record['eventName'].upper()  # INSERT, MODIFY, REMOVE

        if (event_name == 'INSERT') or (event_name == 'MODIFY'):
            if 'NewImage' not in ddb:
                print ('Cannot process stream if it does not contain NewImage')
                continue
            doc_fields = ddb_deserializer.deserialize({'M': ddb['NewImage']})
            item = dynamodb_table.put_item(Item=doc_fields)