def lambda_handler()

in source/core-api/lambda_functions/update_session.py [0:0]


def lambda_handler(event, context):
    """
    This function is the entry handler for Lambda.
    """

    print(event)
    body = json.loads(event['body'])
    request_id = deep_clean(body['request_id'])
    client_event_id = deep_clean(body['event_id'])
    status = int(body['status'])
    headers = {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
    }
    if client_event_id == EVENT_ID and is_valid_rid(request_id):
        try:
            result = ddb_table.update_item(
                UpdateExpression='SET session_status = :status',
                ConditionExpression=(Attr('request_id').eq(request_id) and Attr('session_status').eq(0)),
                Key={'request_id': request_id},
                ExpressionAttributeValues={':status': status}
            )
            response = {
                "statusCode": 200,
                "headers": headers,
                "body": json.dumps(result)
            }
            # write to event bus
            events_client.put_events(
                Entries=[
                    {
                        'Source': 'custom.waitingroom',
                        'DetailType': 'session_updated',
                        'Detail': json.dumps({"event_id": EVENT_ID,
                                              "request_id": request_id,
                                              "status": status_codes[status]}),
                        'EventBusName': EVENT_BUS_NAME
                    }
                ]
            )
            # increment counter tracking sessions completed
            if status == 1:
                rc.incr(COMPLETED_SESSION_COUNTER, 1)
            elif status == -1:
                rc.incr(ABANDONED_SESSION_COUNTER, 1)

        except ClientError as e:
            if e.response['Error']['Code'] == 'ConditionalCheckFailedException':
                print(e)
                response = {
                    "statusCode": 404,
                    "headers": headers,
                    "body": json.dumps({"error": "Request ID doesn't exist or status already set."})
                }
            else:
                raise e
        except Exception as e:
            print(e)
            raise e
    else:
        response = {
            "statusCode": 400,
            "headers": headers,
            "body": json.dumps({"error": "Invalid event or request ID"})
        }
    print(response)
    return response