Files

43 lines
1.2 KiB
Python

r"""
Documentation
License: This program is released under the MIT License
"""
# Imports
import boto3
import pickle
import os
# import logging
#
# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# logger = logging.getLogger(__name__)
PICKLE_FILE = 'cache.pkl'
def getRegions(all_regions=False) -> list[str]:
"""
Returns all aws regions, cached in pickle file to avoid repeated AWS calls.
:param all_regions:
:return:
"""
cache_key = "aws_regions"
if os.path.exists(PICKLE_FILE):
with open(PICKLE_FILE, 'rb') as f:
cache = pickle.load(f)
if cache_key in cache:
# logger.info("Return aws regions from cache...")
return cache[cache_key]
# Fetch from AWS and cache it
# logger.info("Getting AWS regions and cache them...")
ec2 = boto3.client('ec2', region_name='us-east-1')
response = ec2.describe_regions(AllRegions=all_regions)
regions = [region['RegionName'] for region in response['Regions']]
cache = {cache_key: regions}
with open(PICKLE_FILE, 'wb') as f:
pickle.dump(cache, f)
return regions