def check_for_detectors()

in aws_sra_examples/solutions/guardduty/guardduty_org/lambda/src/app.py [0:0]


def check_for_detectors(session, available_regions: list) -> bool:
    """
    Check to see if the GuardDuty detectors exist before configuring
    :param session:
    :param available_regions:
    :return: True or False
    """
    detectors_exist = False

    for region in available_regions:
        try:
            guardduty = get_service_client("guardduty", region, session)
            paginator = guardduty.get_paginator("list_detectors")

            for page in paginator.paginate():
                if "DetectorIds" in page and page["DetectorIds"]:
                    detectors_exist = True
                else:
                    detectors_exist = False
                    logger.info(f"Detector Does Not Exist in {region}")
        except botocore.exceptions.ClientError as ce:
            if "AccessDeniedException" in str(ce):
                logger.debug(f"Detector not found in {region}")
                detectors_exist = False
                break
            else:
                logger.info(f"Unexpected Client Exception for {region}: {ce}")
        except Exception as exc:
            logger.error(f"GuardDuty Exception {region}: {exc}")
            raise ValueError(f"GuardDuty API Exception: {exc}")

    return detectors_exist