def get_available_service_regions()

in aws_sra_examples/utils/aws_control_tower/helper_scripts/list_config_recorder_status.py [0:0]


def get_available_service_regions(user_regions: str, aws_service: str,
                                  control_tower_regions_only: bool = False) -> list:
    """
    Get the available regions for the AWS service
    :param: user_regions
    :param: aws_service
    :param: control_tower_regions_only
    :return: available region list
    """
    available_regions = []
    service_regions = []
    try:
        if user_regions.strip():
            LOGGER.info(f"USER REGIONS: {user_regions}")
            service_regions = [value.strip() for value in user_regions.split(",") if value != '']
        elif control_tower_regions_only:
            cf_client = SESSION.client('cloudformation')
            paginator = cf_client.get_paginator("list_stack_instances")
            region_set = set()
            for page in paginator.paginate(
                StackSetName="AWSControlTowerBP-BASELINE-CLOUDWATCH"
            ):
                for summary in page["Summaries"]:
                    region_set.add(summary["Region"])
            service_regions = list(region_set)
        else:
            service_regions = boto3.session.Session().get_available_regions(aws_service)
        LOGGER.info(f"SERVICE REGIONS: {service_regions}")
    except ClientError as ce:
        LOGGER.error(f"get_available_service_regions error: {ce}")
        exit(1)

    for region in service_regions:
        if is_region_available(region):
            available_regions.append(region)

    LOGGER.info(f"AVAILABLE REGIONS: {available_regions}")
    return available_regions