def lambda_handler()

in src/support_case.py [0:0]


def lambda_handler(event, context):
    logger.debug(f'Lambda event:{event}')

    event = event.get("Data") or event
    account = None
    status = Constant.StateMachineStates.WAIT
    company_name = event['CompanyName']
    support = boto3.client('support')

    try:
        if Constant.CREATE_SUPPORT_CASE == Constant.TRUE:
            account = get_master_account(company_name=company_name)[0]

            if account.get('SupportCaseId'):
                if support.describe_cases(caseIdList=[account.get('SupportCaseId')]).get('cases')[0].get(
                        'status').lower() == 'resolved':
                    account['SupportCaseStatus'] = 'resolved'
                    status = Constant.StateMachineStates.COMPLETED
                else:
                    status = Constant.StateMachineStates.WAIT
            else:
                account_id = account.get('AccountId')
                response = support.create_case(
                    subject=Constant.get_support_case_subject(account_id),
                    severityCode='normal',
                    categoryCode='update-billing-details',
                    serviceCode='billing',
                    language='en',
                    issueType='customer-service',
                    ccEmailAddresses=Constant.CASE_CC_EMAIL_ADDRESSES,
                    communicationBody=Constant.get_support_case_desc(account_id)
                )

                case_id = response['caseId']
                case = support.describe_cases(caseIdList=[case_id])
                case_display_id = case['cases'][0].get('displayId')
                case_status = case.get('cases')[0].get('status')
                account['SupportCaseId'] = case_id
                account['SupportCaseDisplayId'] = case_display_id
                account['SupportCaseStatus'] = case_status

                status = Constant.StateMachineStates.WAIT
        else:
            status = Constant.StateMachineStates.COMPLETED

    except ClientError as ce:
        msg = f"{ce.response['Error']['Code']}: {ce.response['Error']['Message']}"
        account['Error'] = log_error(logger=logger, account_id=account['AccountId'],
                                     company_name=account['CompanyName'],
                                     error_type=Constant.ErrorType.LOE, error=ce, msg=msg, notify=True,
                                     slack_handle=account['SlackHandle'])
    except Exception as ex:
        log_error(logger=logger, account_id=None,
                  company_name=event['CompanyName'],
                  error_type=Constant.ErrorType.LOE, notify=True, error=ex)
        raise ex
    finally:
        if account:
            update_item(Constant.DB_TABLE, account)

    return {'Status': status, 'CompanyName': company_name}