def send()

in source/cfn-global-table/cfnresponse.py [0:0]


def send(event, context, logLevel, responseStatus, responseData, failureReason=None, physicalResourceId=None):
    log_level = logLevel
    logger = logging.getLogger()
    log_handler = logger.handlers[0]
    if log_level == 30:
       log_handler.setFormatter(logging.Formatter("%(message)s"))
    else:
       log_handler.setFormatter(logging.Formatter("[%(levelname)s]: %(message)s"))
    logger.setLevel(log_level)

    responseUrl = event['ResponseURL']
    responseBody = {}
    responseBody['Status'] = responseStatus
    responseBody['Reason'] = failureReason or 'See the details in CloudWatch Log Stream: ' + context.log_stream_name
    responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name
    responseBody['StackId'] = event['StackId']
    responseBody['RequestId'] = event['RequestId']
    responseBody['LogicalResourceId'] = event['LogicalResourceId']
    responseBody['Data'] = responseData

    json_responseBody = json.dumps(responseBody)

    logger.info("Response body:\n"+json_responseBody)

    headers = {
        'content-type' : '',
        'content-length' : str(len(json_responseBody))
    }

    try:
        response = requests.put(responseUrl,
                                data=json_responseBody,
                                headers=headers)
        logger.warning("Status code: " + response.reason)
    except Exception as e:
        logger.error("send(..) failed executing requests.put(..): " + str(e))