part_000X.csv.gz to its own Object
Storage. The Object Store integration reads any of them: the rows are already
FOCUS when they arrive, so nothing is normalized - the exporter reads, repairs
the deviations it knows about, and pushes.
This integration runs in your environment via the
exporter - your storage credentials never
reach CostGraph, and only the finished FOCUS records do.
Where the bill can live
.csv, .csv.gz and .parquet are all read. Credentials are read-only by
intent: the exporter never writes to your bucket, so give it a key that cannot
either.
Which files make up a period
OBJECTSTORE_LAYOUT answers one question: given all the files in the bucket,
which ones belong to a billing period?
Prefer
manifest where the export publishes one: nothing is guessed from file
names, and a run that lands while the exporter is reading cannot be read
half-written.
Connect
- Open Settings -> Integrations and choose Object Store. Pick the
tenant the charges belong to and copy the connection id (
fpc_...). - Create an API key with the
focus:writescope - anddeployment:registerif you will run the exporter’s container. - Run the exporter where the bill is reachable:
--month the current month is read, which is what a schedule
wants; a month can be pushed again at any time - a push replaces the window it
covers rather than doubling it.