in functions/source/bootstrap_redshift/bootstrap_redshift.py [0:0]
def lambda_handler(event, context):
response_data = {}
try:
logger.debug("Received event: %s", json.dumps(event))
logger.debug("Event type: %s", event['RequestType'])
logger.info(event)
if event['RequestType'] in ['Create','Update']:
is_processed = True
if not valid_properties(event, context,
['DatabaseName', 'DatabasePort', 'MasterUsername', 'MasterUserPassword',
'RedshiftCluster', 'BucketName']):
raise RuntimeError("Missing one of the custom lambda properties..")
is_processed = insert_records(event)
if not is_processed:
raise RuntimeError("Failed to create or load data")
if is_processed:
response_data['Message'] = "dataloading creation successful"
send(event, context, SUCCESS, response_data, None)
else:
response_data['Message'] = "dataloading creation failed"
send(event, context, FAILED, response_data, None)
elif event['RequestType'] == 'Delete':
try:
response_data['Message'] = 'Delete redshift cluster'
send(event, context, SUCCESS, response_data, event['PhysicalResourceId'])
except Exception as ex:
is_processed = False
logger.info("Exception during get database details, failed to delete..." + str(ex))
send(event, context, FAILED, response_data, event['PhysicalResourceId'])
return
except Exception as e:
response_data['Message'] = "Unexpected error: " + str(type(e)) + ": " + str(e.args)
print(response_data['Message'])
send(event, context, FAILED, response_data, None)
return