Cloud Cost Focus
Read-only Azure cost governance — actual spend, tag allocation, forecast, and budget inspection via the Cost Management API, plus FOCUS cost export consumption for Azure blob storage and AWS S3, with findings reports.
First release.
Read-only multi-cloud cost governance. Three model types: the Azure Cost Management API for server-aggregated spend, and FOCUS cost exports read in place from Azure Blob Storage and Amazon S3.
FOCUS fixes both column names and the vocabulary of several columns, so one aggregation serves both clouds and cross-cloud comparison is valid rather than merely possible. Parquet is read over HTTP range requests with column projection, so a multi-gigabyte export summarizes while transferring roughly a quarter of it and writing nothing to disk.
Known limitations are recorded in the adversarial review rather than smoothed over: ranged reads have no retry, and peak memory is set by the largest Parquet row group.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| subscriptionId | string | Azure subscription ID. Use: ${{ vault.get('azure', 'SUBSCRIPTION_ID') }} |
| armEndpoint? | string | Override the ARM endpoint. Omit to auto-detect via `az cloud show` |
| Argument | Type | Description |
|---|---|---|
| groupBy | string | Dimension to group by (ServiceName, ResourceGroup, MeterCategory, …) |
| from? | string | Custom range start (YYYY-MM-DD) |
| to? | string | Custom range end (YYYY-MM-DD) |
| filterDimension? | string | Optional dimension to filter on, e.g. ServiceName. Pair with filterValues |
| filterValues? | string | Comma-separated values to keep, e.g. "Foundry Models,Foundry Tools" |
| groupByTag? | string | Optional second grouping on a tag key, e.g. project — cross-tabulates |
| Argument | Type | Description |
|---|---|---|
| tagKey | string | Tag key to allocate by (e.g. owner, project, stage) |
| from? | string | Custom range start (YYYY-MM-DD) |
| to? | string | Custom range end (YYYY-MM-DD) |
| Argument | Type | Description |
|---|---|---|
| includeFreshPartialCost | boolean | Include not-yet-finalized partial cost in the projection |
| from? | string | Window start (YYYY-MM-DD). Defaults to the first of this month |
| to? | string | Window end (YYYY-MM-DD). Defaults to the last day of this month |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| subscriptionId | string | Azure subscription ID owning the export. |
| scope? | string | Override the Cost Management scope path, e.g. |
| armEndpoint? | string | Override the ARM endpoint. Omit to auto-detect via `az cloud show` |
| Argument | Type | Description |
|---|---|---|
| exportName | string | Export name as shown by `az rest` on the exports collection, |
| apiVersion | string | Cost Management exports API version. The preview version is |
| Argument | Type | Description |
|---|---|---|
| filePath | string | Path to a Parquet file, e.g. a blob downloaded with |
| provider | string | Which provider's vendor-column expectations to check against |
| Argument | Type | Description |
|---|---|---|
| path | string | Parquet file, or a directory containing a run's `.parquet` files |
| costColumn | string | FOCUS cost column to sum. EffectiveCost is amortized spend; |
| tagKey | string | Tag key to allocate cost by, e.g. project or owner |
| extraAiPatterns? | string | Extra comma-separated regexes identifying AI services among rows the |
| groupColumn | string | Secondary grouping column. Azure: x_ResourceGroupName. AWS has no |
| groupLabel | string | Display label for groupColumn |
| foldCase | stringbool | Treat differently-cased values of groupColumn as one group. True |
| provider | string | Cloud that produced the rows, for cross-provider rendering |
| Argument | Type | Description |
|---|---|---|
| exportName | string | Export name. Its destination and current dataVersion come out of |
| apiVersion | string | Cost Management exports API version |
| storageAccount? | string | Override the destination account. Omit to take it from the export |
| container? | string | Override the destination container. Omit to take it from the export |
| prefix? | string | Override the blob prefix entirely. Omit to derive |
| period? | string | Billing period directory, e.g. 20260701-20260731. Omit to take the |
| costColumn | string | FOCUS cost column to sum |
| tagKey | string | Tag key to allocate cost by, e.g. project or owner |
| groupColumn | string | Secondary grouping column |
| groupLabel | string | Display label for groupColumn |
| foldCase | stringbool | Treat differently-cased values of groupColumn as one group |
| extraAiPatterns? | string | Extra comma-separated regexes identifying AI services among rows the |
| whereColumn? | string | Restrict to rows where this column equals whereValue, e.g. |
| whereValue? | string | Value whereColumn must equal, e.g. 'AI and Machine Learning' |
| Argument | Type | Description |
|---|---|---|
| manifestPath | string | Path to a downloaded manifest.json from an export run directory |
| dataDir? | string | Directory holding the run's data files, named exactly as the |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| bucket | string | S3 bucket holding the export, e.g. my-org-data-exports |
| exportPrefix | string | Key prefix above the data/ and metadata/ directories, e.g. |
| profile? | string | Named AWS CLI profile to read with. Set this rather than relying on |
| Argument | Type | Description |
|---|---|---|
| billingPeriod | string | Billing period partition, e.g. 2026-07 |
| costColumn | string | FOCUS cost column to sum. EffectiveCost is amortized spend; |
| tagKey | string | Tag key to allocate cost by. AWS keys are prefixed, e.g. |
| groupColumn | string | Secondary grouping column. AWS has no resource group; linked |
| groupLabel | string | Display label for groupColumn |
| extraAiPatterns? | string | Extra comma-separated regexes identifying AI services among rows the |
| whereColumn? | string | Restrict to rows where this column equals whereValue, e.g. |
| whereValue? | string | Value whereColumn must equal, e.g. Other |
Resources
Formats Azure cost data into a governance briefing with tagging,
Formats Azure FOCUS cost export data into a governance briefing with
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository0/2missing