Files
aws-inventory/projectlib/aws.py
T
2026-01-23 10:23:45 +08:00

40 lines
921 B
Python

#!/usr/bin/python3
r"""
Documentation
License: This program is released under the MIT License
"""
# Imports
import boto3
import pickle
import os
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:
return cache[cache_key]
# Fetch from AWS and cache it
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