in connection-manager/lambda-function.py [0:0]
def handler(event, context):
# Log request
LOGGER.info("Received message: %s", event)
# Process incoming messages
connection_id = event['requestContext']['connectionId']
try:
# Process $connect messages
if event['requestContext']['routeKey'] == '$connect':
connection_endpoint = 'https://' + event['requestContext']['domainName'] + '/' + event['requestContext']['stage']
DYNAMODB_CLIENT.put_item(TableName=CONNECTION_TABLE_NAME, Item={
'connectionId': {'S': connection_id},
'connectionEndpoint': {'S': connection_endpoint}
})
LOGGER.info("Successfully added message to connections table")
return {'statusCode': 200, 'body': 'Connected.'}
# Process $disconnect messages
elif event['requestContext']['routeKey'] == '$disconnect':
DYNAMODB_CLIENT.delete_item(TableName=CONNECTION_TABLE_NAME, Key={'connectionId': {'S': connection_id}})
LOGGER.info("Successfully deleted message from connections table")
return {'statusCode': 200, 'body': 'Disconnected.'}
# Process other messages
else:
LOGGER.info("Expected $connect or $disconnect. Received: %s", event['requestContext']['routeKey'])
return {'statusCode': 500, 'body': 'Failed to process message.'}
except Exception:
traceback.print_exc()
return {'statusCode': 500, 'body': 'Failed to process message.'}