in source/customresources/custom-resource-py/lambda.py [0:0]
def handler(event, context):
#Each resource returns a promise with a json object to return cloudformation.
try:
request =event['RequestType']
resource = event['ResourceProperties']['Resource']
config = event['ResourceProperties']
responseData = {}
print('Request::{} Resource:: {}'.format(request,resource))
if request == 'Create':
if resource == 'MediaLiveInput':
responseData = MediaLive.create_input(config)
id = responseData['Id']
elif resource == 'MediaLiveChannel':
responseData = MediaLive.create_channel(config)
id = responseData['ChannelId']
elif resource == 'MediaLiveChannelStart':
MediaLive.start_channel(config)
id = 'MediaLiveChannelStart'
elif resource == 'MediaPackageChannel':
responseData = MediaPackage.create_channel(config)
id = responseData['ChannelId']
elif resource == 'MediaPackageEndPoint':
responseData = MediaPackage.create_endpoint(config)
id = responseData['Id']
elif resource == 'DemoConsole':
Demo.s3_deploy(config)
id = 'DemoConsole'
elif resource == 'UUID':
responseData = {'UUID':str(uuid.uuid4())}
id = responseData['UUID']
elif resource == 'AnonymousMetric':
Metrics.send_metrics(config)
id = 'Metrics Sent'
else:
print('Create failed, {} not defined in the Custom Resource'.format(resource))
cfn.send(event, context, 'FAILED',{},context.log_stream_name)
cfn.send(event, context, 'SUCCESS', responseData, id)
elif request == 'Delete':
if resource == 'MediaLiveChannel':
MediaLive.delete_channel(event['PhysicalResourceId'])
elif resource == 'MediaPackageChannel':
MediaPackage.delete_channel(event['PhysicalResourceId'])
elif resource == 'DemoConsole':
Demo.s3_delete(config)
else:
#medialive inputs and mediapackage endpoints are deleted as part of
#the the channel deletes so not included here, sending default success response
print('RESPONSE:: {} : delte not required, sending success response'.format(resource))
cfn.send(event, context, 'SUCCESS',{})
else:
print('RESPONSE:: {} Not supported'.format(request))
except Exception as e:
print('Exception: {}'.format(e))
cfn.send(event, context, 'FAILED',{},context.log_stream_name)
print (e)