in source/lambda/iot-dr-custom-launch-solution/lambda_function.py [0:0]
def lambda_handler(event, context):
logger.info('event: {}'.format(event))
responseData = {}
if event['RequestType'] == 'Update':
logger.info('update cycle')
responseData = {'Success': 'Update pass'}
cfnresponse_send(event, context, SUCCESS, responseData, 'CustomResourcePhysicalID')
if event['RequestType'] == 'Delete':
logger.info('delete cycle')
client = boto3.client('lambda')
response = client.list_tags(
Resource=event['ServiceToken']
)
if 'Tags' in response and 'STACK_POSTFIX' in response['Tags']:
iot_dr_primary_stack_name = 'IoTDRPrimary{}'.format(response['Tags']['STACK_POSTFIX'])
logger.info('iot_dr_primary_stack_name: {}'.format(iot_dr_primary_stack_name))
else:
logger.warn('no tag with name STACK_POSTFIX: delete stacks manually')
responseData = {'Success': 'Delete pass'}
cfnresponse_send(event, context, SUCCESS, responseData, 'CustomResourcePhysicalID')
if event['RequestType'] == 'Create':
cfn_result = FAILED
responseData = {}
try:
primary_region = event['ResourceProperties']['PRIMARY_REGION']
secondary_region = event['ResourceProperties']['SECONDARY_REGION']
date_time = datetime.now().strftime('%Y%m%d%H%M%S')
logger.info('primary_region: {} secondary_region: {} date_time: {}'.
format(primary_region, secondary_region, date_time))
lambda_arn = event['ServiceToken']
logger.info('lambda_arn: {}'.format(lambda_arn))
client = boto3.client('lambda')
response = client.tag_resource(
Resource=lambda_arn,
Tags={
'STACK_POSTFIX': date_time
}
)
responseData['STACK_POSTFIX'] = date_time
responseData['Success'] = 'Solution launch initiated'
logger.info('responseData: {}'.format(responseData))
cfn_result = SUCCESS
except Exception as e:
logger.error('{}'.format(e))
raise Exception(e)
cfnresponse_send(event, context, cfn_result, responseData, 'CustomResourcePhysicalID')