in src/inventory/readers.py [0:0]
def get_resources_from_all_accounts(self) -> List[InventoryData]:
_logger.info("starting retrieval of inventory from AWS Config")
all_inventory : List[InventoryData] = []
accounts = json.loads(os.environ["ACCOUNT_LIST"])
for account in accounts:
_logger.info(f"retrieving inventory for account {account['id']}")
for resource_list_page in self._get_resources_from_account(account["id"]):
_logger.debug(f"current page of inventory contained {len(resource_list_page)} items from AWS Config")
for raw_resource in resource_list_page:
resource : dict = json.loads(raw_resource)
# One line item returned from AWS Config can result in multiple inventory line items (e.g. multiple IPs)
# Mappers that do not support the resource type will return False
mapper: Optional[DataMapper] = next((mapper for mapper in self._mappers if mapper.can_map(resource["resourceType"])), None)
if not mapper:
_logger.warning(f"skipping mapping, unable to find mapper for resource type of {resource['resourceType']}")
continue
if len(inventory_items := mapper.map(resource)) > 0:
all_inventory.extend(inventory_items)
_logger.info(f"completed getting inventory, with a total of {len(all_inventory)}")
return all_inventory