in source/lambda/iot-dr-launch-solution/lambda_function.py [0:0]
def cfnresponse_send(event, context, responseStatus, responseData, physicalResourceId=None, noEcho=False):
logger.info("event: {}".format(event))
logger.info("context: {}".format(context))
responseUrl = event['ResponseURL']
responseBody = {}
responseBody['Status'] = responseStatus
responseBody['Reason'] = 'See the details in CloudWatch Log Stream: {}'.format(context.log_stream_name)
if 'Error' in responseData:
responseBody['Reason'] = responseData['Error']
responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name
responseBody['StackId'] = event['StackId']
responseBody['RequestId'] = event['RequestId']
responseBody['LogicalResourceId'] = event['LogicalResourceId']
responseBody['NoEcho'] = noEcho
responseBody['Data'] = responseData
json_responseBody = json.dumps(responseBody)
logger.info("Response body: {}\n".format(json_responseBody))
headers = {
'content-type' : '',
'content-length' : str(len(json_responseBody))
}
logger.info("responseUrl: {}".format(responseUrl))
try:
req = urllib.request.Request(url=responseUrl,
data=json_responseBody.encode(),
headers=headers,
method='PUT')
with urllib.request.urlopen(req) as f:
pass
logger.info("urllib request: req: {} status: {} reason: {}".format(req, f.status, f.reason))
except Exception as e:
logger.error("urllib request: {}".format(e))