def lambda_handler()

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')