Mit CFL filtern
CFL, die Costfluent Filter Language, schreibt einen Kostenfilter als eine Zeile Text:
Code
CFL ist eine zweite Schreibweise desselben Filters, den die Bedingungen des Explorers bilden, und kann Bedingungen zusätzlich mit OR verbinden. Überall, wo ein Kostenfilter angenommen wird, wird auch CFL angenommen: im Explorer für Kostenberichte, in gespeicherten Berichten, Regeln virtueller Tags, gespeicherten Filtern, der Public API und dem Terraform-Provider. Costfluent speichert jeden Filter als sein JSON-Dokument und gibt ihn in dieser Form zurück. Die einzige Ausnahme ist ein gespeicherter Filter, der den Text so behält, wie du ihn geschrieben hast.
Bevor du beginnst
- Ein Workspace mit mindestens einer verbundenen Quelle, damit es Kostenwerte gibt, die passen können.
- Werte unterscheiden Groß- und Kleinschreibung und müssen den Werten entsprechen, die der Explorer auflistet. Füge im Explorer eine Bedingung hinzu, öffne ihre Werte und übernimm einen genau. Der Anbieter heißt zum Beispiel
Amazon Web Services, nichtaws.
Einen Filter im Explorer schreiben
- Öffne Kostenberichte und wähle CFL neben Filter hinzufügen.
- Das Feld Filter als CFL zeigt den aktuellen Filter als CFL-Text. Bearbeite ihn oder schreibe einen neuen Filter.
- Wähle Anwenden. Das Ergebnis wird aktualisiert, und der Filter bleibt wie jeder andere Filter in der Seitenadresse erhalten.
Lässt sich der Text nicht lesen, zeigt das Feld den Grund und nennt die Zeichenposition, etwa Unknown field 'costs.colour' mit (at position 34) am Ende, und der aktuelle Filter bleibt bestehen. CFL-Referenz im Feld öffnet diese Seite.
Ein Filter mit OR hat keine Form als Bedingungen. Für einen solchen Filter treten die Bedingungen zurück, und das Feld Filter als CFL ist der Editor. Eine Bedingung mit mehreren Mustern, geschrieben als LIKE ANY (...), zeigt ihre Werte nur lesend, weil das einzelne Wertefeld der Bedingung nur das erste behalten würde.
Felder
| CFL | Feld im Explorer |
|---|---|
costs.provider | Anbieter |
costs.account_id | Unterkonto |
costs.service | Dienst |
costs.region | Region |
costs.resource_name | Ressource |
costs.charge_category | Kostenkategorie |
costs.cluster | Cluster |
costs.namespace | Namespace |
tags->>'key' | Tag, mit seinem Tag-Schlüssel |
virtual_tags->>'vtag_...' | Virtueller Tag, benannt durch seine ID |
Operatoren
| Schreibweise | Bedeutung |
|---|---|
f = 'v' | ist eines von v |
f != 'v' oder f <> 'v' | ist keines von v |
f IN ('a', 'b') / f NOT IN ('a', 'b') | ist eines von / ist keines von |
f LIKE '%v%' / 'v%' / '%v' | enthält / beginnt mit / endet mit |
f NOT LIKE '%v%' / 'v%' / '%v' | enthält nicht / beginnt nicht mit / endet nicht mit |
f LIKE 'v' / f NOT LIKE 'v' | ist eines von / ist keines von v |
f LIKE ANY ('a%', 'b%') | passt auf mindestens ein Muster |
f NOT LIKE ALL ('a%', 'b%') | passt auf keines der Muster |
f LIKE ALL (...) / f NOT LIKE ANY (...) | eine Bedingung je Muster, verbunden mit AND / OR |
Verbinde Bedingungen mit AND, OR und Klammern, so tief verschachtelt wie nötig. AND bindet stärker als OR. Schlüsselwörter und Feldnamen unterscheiden keine Groß- und Kleinschreibung, Werte schon.
Setze Werte in einfache Anführungszeichen und schreibe ein Anführungszeichen innerhalb eines Werts doppelt: tags->>'owner' = 'o''neil'. In einem LIKE-Muster ist % nur am Anfang oder Ende ein Platzhalter, _ ist ein gewöhnliches Zeichen, und \% ist ein wörtliches Prozentzeichen.
Beispiele
Kosten zweier Dienste außerhalb einer Region:
Code
Kosten mit Produktions-Tag oder alles in einem Kubernetes-Namespace, der mit payments beginnt:
Code
Ein Filter in Vantage VQL wie costs.provider = 'aws' AND tags.name = 'team' AND tags.value = 'platform' lautet in CFL:
Code
Wie es sich verhält
- OR wird zu Gruppen. Costfluent liest jede Verschachtelung von AND und OR als bis zu 10 Alternativen, jede eine mit AND verbundene Liste von Bedingungen:
a AND (b OR c)wird zu(a AND b) OR (a AND c). Ein Filter enthält höchstens 20 Bedingungen in einer Alternative und 50 insgesamt. Ein Filter, der diese Grenzen überschreiten würde, wird mit einer Meldung abgelehnt, die die Grenze nennt. - Grenzen. Der Text ist auf 100.000 Zeichen und 32 Klammerebenen begrenzt.
- Regeln virtueller Tags. Der Filter einer Regel kann kein OR verwenden, weil Regeln bereits Alternativen sind, die der Reihe nach geprüft werden. Schreibe jede Alternative als eigene Regel mit demselben Wert.
- Kanonischer Text. Costfluent zeigt einen Filter in einer kanonischen Schreibweise: Feldnamen klein, Schlüsselwörter groß, einfache Abstände. Die Public API gibt beide Schreibweisen jedes Filters über
GET /v1/cost-filters/translatezurück. - Kein Treffer. Ein Filter, dessen Werte auf nichts passen, zeigt das übliche leere Ergebnis des Explorers, keinen Fehler. Prüfe Schreibweise sowie Groß- und Kleinschreibung der Werte anhand der Werte, die der Explorer auflistet.
- Fehlermeldungen sind auf Englisch.
- Nicht unterstützt, mit einer Fehlermeldung, die das sagt:
- ein fehlender Wert, etwa
tags.name = NULL - flexible Suche mit
~* costs.allocation,costs.marketplace,costs.categoryundcosts.subcategory, für die Costfluent keine Spalte hatcosts.provider_account_id,costs.resource_idundcosts.charge_type: schreibecosts.account_id,costs.resource_nameundcosts.charge_categorytags.nameundtags.value: schreibetags->>'key' = 'value'
- ein fehlender Wert, etwa