def get_enabled_regions()

in aws_sra_examples/solutions/common/common_prerequisites/lambda/src/app.py [0:0]


def get_enabled_regions() -> list:  # noqa: CCR001
    """Query STS to identify enabled regions.

    Raises:
        EndpointConnectionError: region is not valid.

    Returns:
        Enabled regions
    """
    # available_regions = management_account_session.get_available_regions("sts") # noqa: E800
    default_available_regions = [
        "eu-central-1",
        "ap-northeast-1",
        "sa-east-1",
        "ap-southeast-1",
        "us-east-1",
        "us-east-2",
        "ca-central-1",
        "us-west-2",
        "us-west-1",
        "ap-northeast-3",
        "ap-northeast-2",
        "ap-south-1",
        "eu-west-2",
        "eu-north-1",
        "eu-west-1",
        "ap-southeast-2",
        "eu-west-3",
    ]
    LOGGER.info({"Default_Available_Regions": default_available_regions})

    enabled_regions = []
    disabled_regions = []
    region_session = boto3.Session()
    for region in default_available_regions:
        try:
            sts_client = region_session.client("sts", endpoint_url=f"https://sts.{region}.amazonaws.com", region_name=region)
            sts_client.get_caller_identity()
            enabled_regions.append(region)
        except EndpointConnectionError:
            LOGGER.error(f"Region: '{region}' is not valid.")
            raise
        except ClientError as error:
            if error.response["Error"]["Code"] == "InvalidClientTokenId":
                disabled_regions.append(region)
                continue
            raise

    LOGGER.info({"Disabled_Regions": disabled_regions})
    return enabled_regions