in source/anonymous-data-logger/anonymous-data-logger.py [0:0]
def handler(event, context):
print("We got this event:\n", event)
# Each resource returns a promise with a json object to return cloudformation.
try:
requestType = event['RequestType']
resource = event['ResourceProperties']['Resource']
config = event['ResourceProperties']
# Remove ServiceToken (lambda arn) to avoid sending AccountId
config.pop("ServiceToken", None)
config.pop("Resource", None)
# Add some useful fields related to stack change
config["CFTemplate"] = (
requestType + "d"
) # Created, Updated, or Deleted
responseData = {}
print('Request::{} Resource::{}'.format(requestType, resource))
if requestType == 'Create' or requestType == 'Update':
if resource == 'UUID':
responseData = {'UUID':str(uuid.uuid4())}
id = responseData['UUID']
cfn.send(event, context, 'SUCCESS', responseData, id)
elif resource == 'AnonymousMetric':
Metrics.send_metrics(config)
id = 'Metrics Sent'
cfn.send(event, context, 'SUCCESS', responseData, id)
else:
print('Create failed, {} not defined in the Custom Resource'.format(resource))
cfn.send(event, context, 'FAILED', {}, context.log_stream_name)
elif requestType == 'Delete':
print('RESPONSE:: {}: Not required to report data for delete request.'.format(resource))
cfn.send(event, context, 'SUCCESS', {})
else:
print('RESPONSE:: {} Not supported'.format(requestType))
except Exception as e:
print('Exception: {}'.format(e))
cfn.send(event, context, 'FAILED', {}, context.log_stream_name)
print(e)