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