Welcome to eraXplor
Cost Export Tool for automated cost reporting and analysis.
eraXplor is an automated cost reporting tool designed for assist DevOps and FinOps teams fetching and sorting AWS and Azure Cost Explorer.
it extracts detailed cost data by calling natively cloud provider APIs directly and Transform result into CSV file.
eraXplor gives you the ability to sort the cost with wide range of options:
- For AWS you able to sort cost by Account, Service, Usage Type or even By Purchase Type; as well as format and separate the result by Monthly or Daily.
- For Azure you able to sort cost by Subscription, as well as format and separate the result by Monthly or Daily.
Key Features
- Cloud provider Separated tools: Separated tool for each cloud provider (e.g. AWS and Azure) avoiding complexity.
- Flexible Date Ranges: Custom start/end dates with validation.
- Multi-Profile Support: Works with all configured AWS profiles.
- Multi-Subscription Support: Works to list all configured Azure subscriptions.
- Enhanced Grouping Options: Advanced grouping for AWS (Account+Service, Account+Purchase Type, Account+Usage Type) and Azure (Subscriptions, Services, Resource groups).
- REST API Support: FastAPI-based REST API for programmatic cost data access with JSON responses.
- CSV Export: Ready-to-analyze reports in CSV format.
- Cross-platform CLI Interface: Simple terminal-based command-line, and Cross OS platform.
- Documentation Ready: Well explained documentations assist you kick start rapidly.
- Open-Source: the tool is open-source under Apache 2.0 license, which enables your to enhance it for your purpose.
Table Of Contents
Quickly find what you're looking for depending on your use case by looking at the different pages.
AWS
Azure
How-To Guides
Check installed Python version
- Ensure you Python version is >= 3.12.3 by:
python --version
# Consider update Python version if less than 3
Install eraXplor
- Install eraXplor too by:
pip install eraXplor
REST API
eraXplor includes a FastAPI-based REST API that allows you to programmatically export cost data from both AWS and Azure.
Start the API Server
# From the repository root
uvicorn api.main:app --app-dir src --reload --host 0.0.0.0 --port 8000
The API will be available at http://localhost:8000
Interactive API test Swagger UI under http://localhost:8000/docs
API Endpoints
AWS FOCUS Workflow
POST /aws/focus/run
curl -X POST "http://localhost:8000/aws/focus/run" \
-H "Content-Type: application/json" \
-d '{
"command": "configure",
"profile": "default",
"region": "us-east-1",
"stack_name": "CID-DataExports-Source",
"granularity": "MONTHLY"
}'
GET /aws/focus/run
curl "http://localhost:8000/aws/focus/run?command=download&profile=default®ion=us-east-1&stack_name=CID-DataExports-Source"
Azure Cost Export
POST /azure/cost/export
curl -X POST "http://localhost:8000/azure/cost/export" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2025-01-01",
"end_date": "2025-03-30",
"granularity": "Monthly",
"group_by": "subscription"
}'
GET /azure/cost/export
curl "http://localhost:8000/azure/cost/export?start_date=2025-01-01&end_date=2025-03-30&granularity=Monthly&group_by=subscription"
API Response Format
{
"success": true,
"message": "AWS cost data exported successfully",
"total_records": 5,
"cost_data": [...],
"request_parameters": {
"start_date": "2025-01-01",
"end_date": "2025-03-30",
"profile": "default",
"group_by": "LINKED_ACCOUNT",
"granularity": "MONTHLY"
}
}
API Documentation (Swagger UI)
Visit http://localhost:8000/docs for interactive API documentation.
How-To-Guide - AWS
AWS profile configuration
- Install AWS CLI - Command line tool.
- Create an AWS AMI user then extract Access ID & key.
- Configure AWS CLI profile by:
aws configure <--profile [PROFILE_NAME]>
# ensure you set a defalut region.
How-To use - AWS
eraXplor-aws now supports two separate commands for AWS FOCUS workflow.
# Step 1: Configure data export stack
eraXplor-aws --command configure --profile default --region us-east-1 --stack-name CID-DataExports-Source --granularity MONTHLY
# Step 2: Download parquet files later (after export data is available)
eraXplor-aws --command download --profile default --region us-east-1 --stack-name CID-DataExports-Source
Argument Reference - AWS
--command,-c: (Not Required) Default value isconfigure. Available options:configure,download--profile,-p: (Not Required) Default value isdefault.--region,-r: (Not Required) Default value isus-east-1.--stack-name,-s: (Not Required) Default value isCID-DataExports-Source.--granularity,-g: (Not Required) Default value isMONTHLY. Available options:HOURLY,DAILY,MONTHLY
Example Usage - AWS
eraXplor-aws
How-To-Guide - Azure
Azure CLI Authentication
- Install Azure CLI - Command line tool by specifing your attended OS.
- ensure your account have sufficient permission as
Billing ReaderorUsage Billing Contributorto manage Azure billing. - Check installed package by:
az --version
- Authenticate using your Azure account:
az login
This will open the portal in your default browser to authenticate.
How-To use - Azure
eraXplor-azure have multiple arguments set with a default values -explained below-, Adjsut these arguments as required.
eraXplor_az <--start-date [yyyy,MM,DD]> <--end-date [yyyy,MM,DD]> \
<--subscription_id [SUBSCRIPTION_ID]> \
<--group-by [subscription | ServiceName | ResourceGroupName]> \
<--granularity [DAILY | MONTHLY]> \
<--output [FILE_NAME.CSV]>
Argument Reference - Azure
--start-dateor-s: (Optional) Default value set as three months before.--end-dateor-e: (Optional) Default value set as Today date.--group-byor-g: (Optional) Default value set assubscription. Available options: (subscription,ServiceName,ResourceGroupName)--outor-o: (Optional) Default value set asaz_cost_report.csv.--granularityor-G: (Optional) Default value set asMONTHLY. The available options are (MONTHLY,DAILY)
Azure Commands
Example Usage - Azure
eraXplor-azure
For Windows/PowerShell users restart your terminal, and you may need to use the following command:
python -m eraXplor-aws
# Or
python -m eraXplor-azure
# to avoid using this command, apend the eraXplor to your paths.
# Normaly its under: C:\Users\<YourUser>\AppData\Local\Programs\Python\Python<version>\Scripts\
About the Author
👋Show/Hide Author Details👋
Mohamed eraki
Cloud & DevOps Consultant
Project Philosophy
"I built eraXplor to solve real-world cloud cost visibility challenges — the same pain points I encounter daily in enterprise environments. This tool embodies my belief that financial accountability should be accessible to every technical team."
Metadata
Release files for eraXplor 4.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eraxplor-4.0.1.tar.gz | 33.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eraxplor-4.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.1 kB
Release files / eraxplor-4.0.1.tar.gz
| Download URL | eraxplor-4.0.1.tar.gz |
|---|---|
| Size | 33.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f72c77f6e18c84d00d70c73a67a7d81a71a30d8749c0f28f796fbd4de1e4e1a3
|
|
BLAKE2b-256 checksum How to use checksums |
b97c7bc6e9ff1d49ae304673cd1b62c82dfdb19ba67f8746111dc87a7a456422
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / eraxplor-4.0.1-py3-none-any.whl
| Download URL | eraxplor-4.0.1-py3-none-any.whl |
|---|---|
| Size | 35.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
060ebe39afcc1906dbd5d4a48bcf843c00c5ecaae9681ad29f6e4736b1513489
|
|
BLAKE2b-256 checksum How to use checksums |
10e13afcf76de49a09daaa27ad1aac245051af607ef8b86684313b1f18d2e38e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|