Bucket-Export
Lassen Sie Costfluent die FOCUS-1.4-Kostenzeilen eines Workspaces täglich in Ihren eigenen Bucket in AWS S3, Google Cloud Storage, Azure Blob Storage oder einem europäischen Object Storage liefern, mit Zugangsdaten, die dort nur Dateien anlegen können.
In Planung: Bucket-Export
Ein Bucket-Export liefert die Kostenzeilen eines Workspaces in einen Bucket, der Ihnen gehört, als FOCUS-1.4-Dateien: ein Ordner je Abrechnungstag, als gzip-komprimiertes CSV oder als Parquet, mit einem Manifest, das sagt, was der Ordner enthält. Costfluent liefert jeden Tag, sobald die Daten des Workspaces ihn erreichen, und erneut, wann immer sich die Zeilen des Tages ändern. Um die Zahlen eines Berichts einmalig in eine Tabellenkalkulation zu holen, exportieren Sie ihn stattdessen; siehe Als CSV oder Excel exportieren.
Costfluent legt nur Dateien an. Es liest, listet oder löscht nie etwas im Bucket. Jede Anfrage geht an den Speicher-Host, den Costfluent aus der Region, dem Anbieter oder dem Speicherkonto des Ziels bildet; kein Ziel nimmt eine Adresse an, die Sie eingeben. Jedes Ziel hat eigene Zugangsdaten, getrennt von den Verbindungen, die Ihre Cloud-Kosten lesen:
| Ziel | Costfluent schreibt mit | Was es darf |
|---|---|---|
| AWS S3 | einer Rolle in Ihrem AWS-Konto, die dem Principal von Costfluent mit der externen ID Ihrer Organisation vertraut | s3:PutObject unter dem Ordner des Exports |
| Google Cloud Storage | dem Dienstkonto, das Costfluent für Ihre Organisation erstellt hat | Objekte im Bucket anlegen (Storage Object Creator) |
| Azure Blob Storage | einer SAS für den Container | Blobs anlegen und schreiben, sonst nichts |
| S3-kompatibler Object Storage von OVHcloud, STACKIT, Scaleway, IONOS oder Hetzner | einem eigenen Zugriffsschlüssel | s3:PutObject unter dem Ordner des Exports |
Bevor Sie beginnen
Enthalten im Pro-, Business- und Custom-Tarif. Tarife vergleichen
- Ein Ziel hinzuzufügen, zu ändern, zu testen oder zu löschen erfordert die Organisationsrolle Eigentümer oder Integrationsverantwortliche Person und Kosten exportieren für den Workspace, damit niemand einen Datenstrom von Kosten einrichtet, die er nicht auch selbst exportieren dürfte. Wer den Workspace sehen kann, sieht seine Ziele und wie weit die Lieferung reicht.
- Ein Bucket für den Datenstrom, in AWS S3, Google Cloud Storage, Azure Blob Storage oder im Object Storage von OVHcloud, STACKIT, Scaleway, IONOS oder Hetzner.
- Ein Präfix: der Ordner im Bucket, unter dem der Datenstrom liegt, etwa
finops. Costfluent schreibt alles unter<prefix>/costfluent/, oder untercostfluent/, wenn Sie das Präfix leer lässt, und jede Berechtigung unten nennt diesen Ordner. Ein Präfix hat bis zu 200 Zeichen aus Buchstaben, Ziffern und! - _ . * ' ( ), in Ordnern getrennt durch/, ohne... - Die ID des Workspaces, die seinen Ordner im Bucket benennt: Einstellungen, dann Arbeitsbereiche, listet sie in der Spalte ID.
Schreibzugriff gewähren
Geben Sie dem Ziel die eine Berechtigung, die es braucht, beschränkt auf den Ordner des Exports. Ersetzen Sie in
den Richtlinien unten <bucket> durch den Namen des Buckets und <prefix> durch Ihr Präfix; ohne
Präfix ist die Ressource arn:aws:s3:::<bucket>/costfluent/*.
AWS S3
Costfluent schreibt als Rolle in Ihrem Konto. Sein Principal-ARN und die externe ID Ihrer
Organisation sind dieselben, denen die Rolle einer AWS-Verbindung vertraut: Costfluent zeigt sie,
wenn Sie das Ziel hinzufügen, und unter
Über die IAM-Konsole verbinden, und die
Datenquelle costfluent_aws_provider_info des Terraform-Providers liest beide. Die
Vertrauensrichtlinie der Rolle:
Code
Die Berechtigungsrichtlinie der Rolle:
Code
- Erstellen Sie in der IAM-Konsole eine Rolle mit einer benutzerdefinierten Vertrauensrichtlinie und fügen Sie die Vertrauensrichtlinie oben ein, mit dem Principal-ARN von Costfluent und Ihrer externen ID.
- Geben Sie der Rolle die Berechtigungsrichtlinie oben als Inline-Richtlinie, mit Ihrem Bucket und Ihrem Präfix.
- Notieren Sie den ARN der Rolle, etwa
arn:aws:iam::123456789012:role/costfluent-export, und die Region des Buckets, etwaeu-central-1. Das Ziel fragt nach beidem.
Costfluent übergibt dieselbe Berechtigungsrichtlinie bei jeder Übernahme der Rolle auch als Sitzungsrichtlinie, sodass seine Sitzung nur Objekte unter dem Ordner ablegen kann, was auch immer die Rolle sonst erlaubt.
Belassen Sie die Standardverschlüsselung des Buckets bei von Amazon S3 verwalteten Schlüsseln (SSE-S3).
Die Sitzung darf nichts außer s3:PutObject aufrufen, daher lehnt ein Bucket, dessen
Standardverschlüsselung einen KMS-Schlüssel nutzt, das Schreiben ab.
Google Cloud Storage
Costfluent schreibt als das Dienstkonto, das es für Ihre Organisation erstellt hat, dasselbe, für
das eine Google-Cloud-Verbindung ihren Abrechnungsexport freigibt. Fügen Sie zuerst das Ziel hinzu
(Ziel hinzufügen): Das erstellt das Dienstkonto, falls Ihre Organisation noch
keines hat, und zeigt seine Adresse. Gewähren Sie dieser Adresse dann die Rolle Storage Object Creator
(roles/storage.objectCreator) auf dem Bucket, in den Berechtigungen des Buckets in der Google
Cloud Console oder mit:
Code
Die Rolle legt Objekte an, kann sie aber nicht lesen, listen, ersetzen oder löschen. Die Rolle gilt für den ganzen Bucket, während Costfluent nur unter dem Ordner des Exports schreibt; um auch die Berechtigung auf den Datenstrom zu beschränken, geben Sie dem Datenstrom einen eigenen Bucket. Beschränkt Ihre Organisation Freigaben auf bekannte Domains, erlauben Sie zuerst das Dienstkonto von Costfluent, wie es auch eine Google-Cloud-Verbindung braucht (GCP verbinden).
Azure Blob Storage
Costfluent schreibt mit einer Shared Access Signature (SAS) für den Container. Es nimmt nur eine SAS an, deren Berechtigungen es aus dem Token selbst lesen kann:
- eine Container-SAS (
sr=c), keine Konto-SAS und keine, die an eine gespeicherte Zugriffsrichtlinie gebunden ist; - die Berechtigungen Erstellen, Schreiben oder beide (
sp=c,sp=wodersp=cw) und sonst keine: Eine SAS, die auch lesen, hinzufügen, auflisten oder löschen darf, wird abgelehnt; - nur HTTPS und ein Ablaufdatum, das noch nicht erreicht ist.
Öffnen Sie im Azure-Portal die freigegebenen Zugriffstoken des Containers, wählen Sie als Berechtigungen nur
Erstellen und Schreiben, erlauben Sie nur HTTPS, wählen Sie das Ablaufdatum und generieren Sie das Token. Kopieren Sie
das Blob-SAS-Token, den Teil nach dem ?, nicht die SAS-URL. Mit der Azure CLI:
Code
Costfluent zeigt das Ablaufdatum der SAS neben dem Ziel. Ist es erreicht, scheitert die Lieferung, bis Sie eine neue SAS in das Ziel einfügen; eine mit dem Schlüssel des Speicherkontos signierte SAS hört außerdem auf zu funktionieren, wenn dieser Schlüssel rotiert wird.
S3-kompatibler Object Storage
Wählen Sie den Anbieter und geben Sie die Region des Buckets ein. Zusammen ergeben sie den einzigen Host, an den Costfluent schreibt:
| Anbieter | Host | Regionen |
|---|---|---|
| OVHcloud | s3.<region>.io.cloud.ovh.net | etwa gra, sbg, de oder eu-west-par |
| STACKIT | object.storage.<region>.onstackit.cloud | etwa eu01 oder eu02 |
| Scaleway | s3.<region>.scw.cloud | fr-par, nl-ams, pl-waw, it-mil |
| IONOS | s3.<region>.ionoscloud.com | eu-central-1 (die Region de), eu-central-2, eu-south-2 |
| Hetzner | <location>.your-objectstorage.com | fsn1, nbg1, hel1 |
Erstellen Sie einen Zugriffsschlüssel für den Datenstrom und beschränken Sie ihn darauf, Objekte unter dem Ordner des Exports abzulegen, mit dieser Richtlinie für den Benutzer des Schlüssels oder als Anweisung einer Bucket-Richtlinie, die diesen Benutzer als Principal nennt, je nachdem, was der Anbieter bietet:
Code
Costfluent kann nicht erkennen, was ein Schlüssel erlaubt, ohne damit zu schreiben, daher nimmt es einen Schlüssel, der auch lesen oder löschen darf, genauso an wie einen, der nur schreiben darf. Geben Sie dem Ziel einen eigenen Schlüssel, der nur Objekte unter dem Ordner ablegen kann. Kann der Anbieter einen Schlüssel nicht auf den Ordner eines Buckets beschränken, geben Sie dem Datenstrom einen eigenen Bucket oder ein eigenes Projekt.
Ziel hinzufügen
- Öffnen Sie Einstellungen, dann Arbeitsbereiche, und wählen Sie den Workspace, dessen Kosten der Bucket erhält.
- Fügen Sie ein Ziel für den Bucket-Export hinzu und wählen Sie, wohin es liefert: AWS S3, Google Cloud Storage, Azure Blob Storage oder S3-kompatibler Object Storage.
- Geben Sie den Bucket und das Präfix ein und das, womit das Ziel schreibt: den ARN der Rolle und die Region des Buckets für AWS; das Speicherkonto, den Container und das SAS-Token für Azure; den Anbieter, die Region, die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel für S3-kompatiblen Speicher. Cloud Storage braucht nur den Bucket und zeigt die Adresse des Dienstkontos, dem Sie die Rolle gewähren.
- Wählen Sie CSV oder Parquet.
- Testen Sie das Ziel. Costfluent schreibt ein kleines Objekt in den Ordner, das vor der ersten Lieferung zeigt, dass die Berechtigung greift; siehe Testobjekte.
Das Schlüsselpaar und die SAS werden verschlüsselt gespeichert und nie wieder angezeigt; um eines zu ändern, geben Sie ein neues ein. Ein Ziel in AWS oder Cloud Storage speichert kein Geheimnis.
Testobjekte
Jeder Test schreibt <prefix>/costfluent/_costfluent-check/<yyyyMMddTHHmmssZ>.txt, benannt nach dem
Zeitpunkt des Tests in UTC, sodass Tests sich nie gegenseitig oder eine Lieferung überschreiben. Das
Objekt enthält eine Zeile, die sagt, dass Costfluent es geschrieben hat, um den Ordner zu prüfen,
und dass es gefahrlos gelöscht werden kann. Costfluent löscht es nie; löschen Sie es, wann Sie wollen.
Bei AWS bittet der Test AWS außerdem, Costfluent die Rolle mit einer externen ID übernehmen zu lassen, die nicht die Ihrer Organisation ist. Die Rolle muss das ablehnen: Eine Rolle, die Costfluent ohne Ihre externe ID einlässt, ließe jeden Kunden von Costfluent in Ihren Bucket schreiben, daher scheitert der Test, bis die Vertrauensrichtlinie sie verlangt.
Der Test läuft im Hintergrund, und sein Ergebnis erscheint nach kurzer Zeit am Ziel. Ein gescheiterter Test nennt seinen Grund: Das Schreiben wurde abgelehnt, der Bucket wurde nicht gefunden, die Zugangsdaten wurden abgelehnt, die Rolle verlangt Ihre externe ID nicht, die SAS ist abgelaufen, oder der Speicher hat nicht geantwortet.
Was im Bucket landet
Schlüsselaufbau
Code
- Der Ordner des Workspaces ist seine ID (
wsp_…), nie sein Name, daher verschiebt eine Umbenennung des Workspaces den Datenstrom nicht. billing-dateist der Tag, an dem der Leistungszeitraum der Zeilen beginnt (ChargePeriodStart), in UTC.- Ein Ziel mit Parquet schreibt
part-00000.parquetund so weiter statt.csv.gz. - Ein Teil enthält höchstens 1.000.000 Zeilen, nummeriert ab
part-00000. Das Manifest wird zuletzt geschrieben.
Versionen
Jede Lieferung eines Tages landet in einem neuen Ordner version=, benannt nach dem Zeitpunkt in
UTC, den Costfluent vor ihrem ersten Upload für sie reserviert hat. Um den Datenstrom zu lesen, nehmen Sie
je Abrechnungstag den neuesten Ordner version=, der ein manifest.json enthält, und lassen Sie die
anderen weg:
- Ein Ordner ohne Manifest ist noch nicht vollständig. Bricht ein Lauf mittendrin ab, vervollständigt der nächste Lauf denselben Ordner mit denselben Schlüsseln, statt einen neuen anzufangen.
- Ein Tag wird nur dann unter einer neueren Version erneut geliefert, wenn sich seine Zeilen geändert haben: Ein Anbieter hat den Tag neu ausgewiesen, oder die Integrationen oder Konten des Workspaces haben sich geändert. Ein Tag, dessen Zeilen sich nicht geändert haben, wird nicht erneut geschrieben.
- Ein Tag, der auf nichts neu ausgewiesen wurde, erhält eine neuere Version, deren Manifest keine
Teile und
"rows": 0nennt.
Costfluent löscht nie eine ältere Version. Behalten Sie sie als Verlauf oder entfernen Sie sie selbst.
Das Manifest
manifest.json sagt, was der Versionsordner enthält:
Code
formatistcsvoderparquet, undcolumnslistet jede Spalte der Teile in ihrer Reihenfolge.rowsist die Zeilenzahl des Tages, die Summe der Zeilen seiner Teile.- Das
sha256jedes Teils ist der SHA-256 der hochgeladenen Bytes in Hexadezimal mit Kleinbuchstaben, bei CSV der komprimierten Datei, sodass ein Verbraucher prüfen kann, dass er den ganzen Teil gelesen hat.
Die Dateien
Die Zeilen sind die Kostenzeilen des Workspaces für den Tag, so wie Costfluent sie speichert: aus
den Integrationen, die der Workspace enthält, innerhalb der Konten, die er abdeckt. Die Spalten sind
die Spalten von FOCUS 1.4, so benannt, wie FOCUS sie benennt (BilledCost, ChargePeriodStart),
gefolgt von den eigenen Spalten von Costfluent, die das Präfix x_ tragen, das FOCUS eigenen
Spalten gibt (x_AmortizedCost). Beträge stehen in den Abrechnungs- und Preiswährungen, die FOCUS
definiert; die Währungseinstellungen, Segmente und virtuellen Tags des Workspaces gelten nicht.
- CSV: gzip-komprimiertes UTF-8 nach RFC 4180: eine Kopfzeile mit den Spaltennamen, Zeilen
enden mit CRLF, ein Feld steht nur in Anführungszeichen, wenn es ein Komma, ein Anführungszeichen
oder einen Zeilenumbruch enthält, mit verdoppelten Anführungszeichen. Beträge stehen exakt wie
gespeichert, mit bis zu 12 Nachkommastellen, Zeitstempel als
yyyy-MM-ddTHH:mm:ssZin UTC,TagsundAllocatedTagsals JSON-Objekte. Ein leeres Feld ist ein fehlender Wert. - Parquet: dieselben Spalten, typisiert: Beträge als
DECIMAL(38, 12), Zeitstempel als UTC-Zeitstempel, alles andere als Zeichenketten, die Tag-Spalten als ihre JSON-Objekte. Eine Zeilengruppe enthält höchstens 100.000 Zeilen.
Die Dateien sind ein Datenstrom, keine Tabellenkalkulation. Werte stehen exakt wie gespeichert,
daher bleibt ein Wert, der mit =, +, - oder @ beginnt, wie er ist, während der CSV-Export aus
Cost Reports ihm einen Apostroph voranstellt, damit eine Tabellenkalkulation ihn nicht als Formel
ausführt. Laden Sie die Dateien in ein Data Warehouse oder ein Skript; um Kosten in einer
Tabellenkalkulation zu öffnen, nutzen Sie Als CSV oder Excel
exportieren.
Wie es sich verhält
- Die Lieferung läuft alle vier Stunden. Jeder Lauf liefert einem Ziel höchstens 31 Tage, die ältesten zuerst, daher füllt ein neues Ziel seinen Verlauf über mehrere Läufe.
- Die Tage reichen vom ersten Tag, den der Verlauf des Plans aufbewahrt, bis zum Tag, bis zu dem die Daten des Workspaces reichen: dem letzten Tag, den jede Verbindung des Workspaces geliefert hat, den Berichte als „Daten bis“ zeigen. Ein Tag danach wartet, bis jede Verbindung ihn geliefert hat, und ein Tag, dessen Zeilen noch verarbeitet werden, wartet auf den nächsten Lauf, sodass ein Tag nie halb geliefert wird.
- Ein Tag ohne Kostenzeilen erhält keinen Ordner: Ein fehlender Tag bedeutet, dass Costfluent für ihn keine Kosten hat, nicht Kosten von null.
- Das Ziel zeigt, wie weit die Lieferung reicht: noch nicht geliefert; geliefert, mit dem Tag, bis zu dem geliefert ist; im Rückstand, wenn dieser Tag mehr als zwei Tage vor heute liegt, etwa während einer Nachlieferung oder solange die Daten einer Verbindung ausbleiben; oder fehlerhaft, mit dem Grund des zuletzt abgelehnten Schreibens. Ein fehlerhaftes Ziel wird beim nächsten Lauf erneut versucht.
- Ein geändertes Präfix oder Format beginnt die Lieferung vom ersten Tag an neu, unter dem neuen Ordner oder im neuen Format. Die schon gelieferten Dateien bleiben, wo sie sind. Ein anderer Bucket ist ein anderes Ziel: Löschen Sie dieses und fügen Sie ein neues hinzu.
- Ein gelöschtes Ziel liefert nicht mehr, und sein gespeichertes Schlüsselpaar oder seine SAS wird gelöscht. Die Dateien bleiben im Bucket. Entfernen Sie auch auf Ihrer Seite die Rolle, die Berechtigung oder den Schlüssel; das Dienstkonto von Costfluent für Cloud Storage besteht, solange Ihre Organisation besteht, daher überdauert seine Berechtigung ein gelöschtes Ziel, bis Sie sie entfernen.