# Änderungskosten

Änderungskosten stellt neben das, was eine Infrastrukturänderung im Monat kosten sollte, was sie nach dem Anwenden gemessen kostet. Die CI sendet die Schätzung jedes Pull Requests oder benannten Plans, etwa die von Infracost, über die Public API und meldet den Tag, an dem die Änderung angewendet wird. Sobald die 30 Tage ab diesem Tag Kostendaten haben, findet Costfluent jede Ressource, die die Änderung betrifft, über ihre IDs in deinen Abrechnungsdaten und misst sie. Eine Schätzung ist eine Aussage über einen Plan, keine Kosten: Costfluent speichert ihre Zahlen wie gesendet, bepreist selbst nichts und zählt sie in keinem Bericht, Budget, keiner Prognose und keiner Anomalie mit. Öffne **Änderungskosten** unter Planung.

## Bevor du beginnst

<PlanAvailability feature="ApiTokens" plan="Pro" />

- Jede Teamrolle kann die Seite ansehen und ihre Schätzungen öffnen.
- Schätzungen kommen nur über die Public API an, gesendet mit einem API-Token, das für den Workspace **Kostenschätzungen übermitteln** trägt; siehe [Schätzung senden](#schätzung-senden).
- Eine Schätzung wird an den Kosten der Verbindungen gemessen, die der Workspace nutzt, und ihrer Konten; siehe [Verbindungen verwalten](/de/connect/manage-connections).

## Die Liste lesen

<Framed caption="Jede Änderung mit ihren geplanten und tatsächlichen monatlichen Kosten, der Abweichung und ihrem Status.">
  ![Die Seite Änderungskosten mit Schätzungen nach Änderung, mit geplanten und tatsächlichen monatlichen Kosten, Abweichung und Status](/screenshots/de/cost-of-change-list.png)
</Framed>

Jede Zeile ist eine Schätzung, ihre Zahlen in der Währung, in der sie gesendet wurde:

- **Änderung** nennt den Pull Request, als Repository und Nummer wie `acme/infrastructure#42`, oder den Plan, für den die Schätzung gesendet wurde, und darunter das Schätzwerkzeug.
- **Geplant** ist die geschätzte Änderung der monatlichen Kosten, nachher weniger vorher, über die Ressourcen, die das Schätzwerkzeug bepreist hat, mit einem Pluszeichen, wenn die Änderung mehr kostet. Wurden einige nicht bepreist, zählt die Spalte sie darunter, etwa „… Ressourcen nicht bepreist“, statt sie als kostenlos zu lesen.
- **Tatsächlich** ist die gemessene Änderung der monatlichen Kosten, sobald die Schätzung abgeglichen ist. Bis dahin steht dort „Noch nicht angewendet“ bei einer vorgeschlagenen Schätzung und „Wartet auf Kostendaten“ bei einer angewendeten.
- **Abweichung** ist die tatsächliche Änderung weniger der geplanten: Über null kostet die Änderung im Monat mehr als geplant.
- **Status** sagt, wo die Schätzung steht:

| Status | Die Schätzung |
|---|---|
| „Vorgeschlagen“ | Wurde gesendet und ist noch nicht angewendet. Jedes Senden für denselben Pull Request oder Plan ersetzt sie. |
| „Angewendet“ | Hält den Tag fest, an dem die Änderung angewendet wurde, und wartet auf ihre Kostendaten. |
| „Abgeglichen“ | Wurde gemessen, daher stehen in **Tatsächlich** und **Abweichung** Zahlen. |
| „Nicht aussagekräftig“ | Ließ sich nicht messen und sagt, warum ([Nicht aussagekräftige Schätzungen](#nicht-aussagekräftige-schätzungen)). |
| „Abgelaufen“ | Wurde nicht innerhalb von 90 Tagen nach dem letzten Senden angewendet. |

## Eine Schätzung öffnen

Wähle die Änderung einer Schätzung, um sie zu öffnen. Ihre Seite zeigt die **Geplante Änderung**, die **Tatsächliche Änderung** und die **Abweichung**, warum die Schätzung so abgeschlossen wurde, sobald sie es ist, und, solange sie angewendet ist, „Wird gemessen, sobald Kostendaten die 30 Tage nach dem Anwenden abdecken“. Darunter stehen ihre **Quelle**, ihr **Commit**, der Tag unter **Angewendet am** und, wenn sie mit einer https-Adresse gesendet wurde, „Änderung öffnen“, ein Link zum Pull Request oder Plan. Unter **Ressourcen** steht eine Zeile je Ressource:

- **Ressource** ist ihre Terraform-Adresse und ihr Typ und **Änderung**, was die Änderung mit ihr tut: „Erstellt“, „Geändert“, „Ersetzt“ oder „Gelöscht“.
- **Geplant** sind die monatlichen Kosten, die das Schätzwerkzeug der Ressource vor und nach der Änderung gegeben hat. Eine erstellte Ressource hat vorher keine Kosten, eine gelöschte nachher keine. Kosten, die das Schätzwerkzeug nicht bepreisen konnte, zeigen „Nicht bepreist“, nie null, und lassen die Ressource aus den geplanten Summen heraus.
- **Tatsächlich** sind die monatlichen Kosten, die der Abgleich vor und nach der Änderung gemessen hat, für eine Ressource, die er gefunden hat; für eine, die er nicht gefunden hat, steht dort „Nicht gefunden“ oder „Keine Kosten gefunden“.
- **In der Abrechnung** sagt, wie der Abgleich die Ressource gefunden hat:

| In der Abrechnung | Die Ressource |
|---|---|
| „Gefunden“ | Wurde in der Abrechnung gefunden, in jedem Zeitraum, in dem das Schätzwerkzeug ihr andere Kosten als null gegeben hat. Ihre gemessenen Kosten zählen in den tatsächlichen Summen der Schätzung. |
| „Nicht gefunden“ | Hat unter ihren IDs keine Kosten in einem Zeitraum, in dem das Schätzwerkzeug ihr andere Kosten als null gegeben hat, oder hat keine IDs. Eine solche Ressource macht die Schätzung „Nicht aussagekräftig“. |
| „Keine Kosten“ | Sollte nichts kosten oder wurde nicht bepreist und hat in der Abrechnung keine Kosten. Sie hält den Abgleich nicht auf. |

Eine gelöschte Ressource, deren Kosten mit dem Anwenden aufhörten, ist danach mit null „Gefunden“; die Schätzung wird nur abgeglichen, solange die Konten, die ihre Kosten trugen, weiter Kosten melden ([Nicht aussagekräftige Schätzungen](#nicht-aussagekräftige-schätzungen)).

## Wie eine Schätzung abgeglichen wird

Costfluent prüft die offenen Schätzungen einmal am Tag.

- **Die Zeiträume.** Das Anwendungsdatum ist der Tag, an dem das Anwenden gemeldet wurde, in der Zeitzone des Workspace. Costfluent misst die 30 Tage davor und die 30 Tage ab ihm, das Anwendungsdatum eingeschlossen. Die Tage davor zählen nur für Ressourcen, die die Änderung ändert, ersetzt oder löscht, denn eine erstellte Ressource hatte vorher keine Kosten.
- **Die Ressourcen.** Vor der Änderung wird eine geänderte, ersetzte oder gelöschte Ressource unter den IDs gefunden, die mit der Schätzung gesendet wurden. Danach wird eine erstellte oder ersetzte Ressource unter den IDs gefunden, die mit dem Anwenden gemeldet wurden, eine geänderte unter ihren bisherigen IDs, und von einer gelöschten wird unter ihren alten IDs nichts mehr erwartet. Die IDs werden ohne Rücksicht auf Groß- und Kleinschreibung mit den Ressourcen-IDs in deinen Abrechnungsdaten verglichen, sodass eine Ressource, die unter einer anderen ID abgerechnet wird, „Nicht gefunden“ ist.
- **Die Kosten.** Tatsächliche Zahlen sind amortisierte Kosten, bei denen Commitments wie Reserved Instances und Savings Plans auf die Nutzung verteilt sind, die sie abdecken ([Berechnete oder effektive Kosten](/de/concepts/cost-amounts#berechnete-oder-effektive-kosten)), sodass eine Nutzung, die ein Commitment abdeckt, nicht als kostenlos erscheint.
- **Ein Monat.** Die Kosten eines Zeitraums werden durch seine 30 Tage geteilt und mit einem Monat von einem Zwölftel des Jahres, 365/12 Tagen, malgenommen. Das ist der Monat von 730 Stunden, mit dem Infracost bepreist, sodass geplante und tatsächliche Zahlen auf derselben Skala stehen.
- **Das Warten auf Daten.** Eine angewendete Schätzung wird gemessen, sobald die 30 Tage ab dem Anwendungsdatum vorbei sind und die Kostendaten jeder Verbindung mit Kosten in ihren Zeiträumen bis zum letzten dieser Tage reichen. Bis dahin bleibt sie „Angewendet“, höchstens 90 Tage ab dem Anwenden.
- **Abdeckung.** Ein Zeitraum, der laut Plan Kosten enthalten sollte, zählt nur mit Kosten an mindestens 24 seiner 30 Tage, 80 %, über die Ressourcen der Schätzung hinweg. Ein Zeitraum mit Kosten an weniger Tagen schließt die Schätzung als „Nicht aussagekräftig“; einer ohne Kosten lässt seine Ressourcen „Nicht gefunden“.
- **Währung.** Tatsächliche Zahlen stehen in der Währung der Schätzung. Kosten, die in einer anderen Währung abgerechnet wurden, werden zum Wechselkurs des Workspace am Anwendungsdatum umgerechnet, nach der Methode und Quelle, mit denen seine Berichte umrechnen ([Währungseinstellungen](/de/currency)): ein Kurs für beide Zeiträume, damit eine Kursbewegung zwischen ihnen nicht als Kostenänderung erscheint.
- **Die Summen.** Die geplanten Summen zählen die bepreisten Ressourcen, die tatsächlichen die Ressourcen, die „Gefunden“ sind. Eine Ressource, die das Schätzwerkzeug nicht bepreist hat, die aber in der Abrechnung steht, zählt in **Tatsächlich**, sodass ihre Kosten als Abweichung erscheinen.

:::note
Geplant und tatsächlich stehen auf verschiedenen Grundlagen, die die Seite jeder Schätzung nennt. Geplant ist der Listenpreis des Schätzwerkzeugs; tatsächlich sind die amortisierten Kosten nach deinen Rabatten. Ein ausgehandelter Rabatt oder ein Commitment, das eine von der Änderung erstellte Ressource abdeckt, erscheint daher als Abweichung, auch wenn die Änderung genau wie geplant verlief.
:::

### Nicht aussagekräftige Schätzungen

Eine nicht aussagekräftige Schätzung behält ihre geplanten Zahlen und sagt, warum sie sich nicht messen ließ:

| Grund | Wann |
|---|---|
| „Eine Ressource, die etwas kosten sollte, wurde in der Abrechnung nicht gefunden.“ | Eine Ressource, der das Schätzwerkzeug in einem Zeitraum andere Kosten als null gegeben hat, hat dort unter ihren IDs keine Kosten oder hat keine IDs, etwa eine erstellte Ressource, für die das Anwenden keine IDs genannt hat. |
| „Ihre Kosten wurden in mehr als einer Währung abgerechnet.“ | Die in den beiden Zeiträumen gefundenen Kosten kamen in mehr als einer Abrechnungswährung. |
| „Ihre Kosten wurden in einer Währung abgerechnet, für die der Arbeitsbereich keinen Wechselkurs hat.“ | Die Kosten kamen in einer anderen Währung als der der Schätzung, und die Kurse des Workspace enthalten am Anwendungsdatum keinen Kurs aus ihr in die Währung der Schätzung. |
| „Ein Zeitraum hatte an weniger als 24 seiner 30 Tage Kosten.“ | Ein Zeitraum, der laut Plan Kosten enthalten sollte, hat an einigen seiner Tage Kosten, aber an weniger als 24. |
| „Das Konto einer gelöschten Ressource meldete keine Kosten mehr, sodass sich ihre Löschung nicht davon unterscheiden ließ.“ | Eine gelöschte Ressource zeigt nach dem Anwenden keine Kosten, und ein Konto, das vorher ihre Kosten trug, meldet an weniger als 24 der 30 Tage ab dem Anwenden irgendwelche Kosten, sodass sich ihre Löschung nicht von Kosten unterscheiden lässt, die nicht mehr ankommen. |
| „Die Kostendaten deckten die 30 Tage nach dem Anwenden nicht innerhalb von 90 Tagen ab.“ | 90 Tage nach dem Anwenden reichten die Kostendaten noch nicht durch die 30 Tage ab ihm. |

## Schätzung senden

<Stepper>

1. Erstelle für den Workspace ein API-Token, das nur **Kostenschätzungen übermitteln** trägt, wie [API-Authentifizierung](/de/api/authentication) beschreibt, und bewahre es in den Secrets deiner CI auf.
2. Sende bei jedem Push in den Pull Request die Schätzung an `POST /v1/cost-estimates`: die ID des Workspace, `repository` und die Nummer unter `pullRequest` oder stattdessen einen Namen unter `plan`, das Schätzwerkzeug als `source`, die `currency` und unter `resources` einen Eintrag je Ressource. Jeder nennt ihre Terraform-`address`, ihren `type`, ihre `change` (`create`, `update`, `replace` oder `delete`) und ihre `monthlyCostBefore` und `monthlyCostAfter` als Dezimal-Strings oder `null`, wo das Schätzwerkzeug sie nicht bepreisen konnte. Eine geänderte, ersetzte oder gelöschte Ressource ergänzt bis zu drei `resourceIds`, die sie vor der Änderung hatte.
3. Melde nach dem Anwenden der Änderung mit `POST /v1/cost-estimates/apply`, dass sie angewendet wurde, mit demselben Repository und Pull Request oder Plan und unter `resources` den ein bis drei IDs, die jede erstellte oder ersetzte Ressource bekommen hat.

</Stepper>

Eine Schätzung, gespeichert als `estimate.json`:

```json
{
  "workspaceId": "wsp_example",
  "repository": "acme/infrastructure",
  "pullRequest": 42,
  "source": "infracost",
  "commit": "9f2c4e1",
  "url": "https://github.com/acme/infrastructure/pull/42",
  "currency": "USD",
  "resources": [
    {
      "address": "aws_instance.web",
      "type": "aws_instance",
      "change": "update",
      "monthlyCostBefore": "60.74",
      "monthlyCostAfter": "121.47",
      "resourceIds": ["i-0abc123def4567890"]
    },
    {
      "address": "aws_db_instance.main",
      "type": "aws_db_instance",
      "change": "create",
      "monthlyCostAfter": "248.20"
    },
    {
      "address": "aws_lambda_function.resize",
      "type": "aws_lambda_function",
      "change": "create",
      "monthlyCostAfter": null
    }
  ]
}
```

Sende sie:

```bash
curl -X POST \
  -H "Authorization: Bearer $COSTFLUENT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d @estimate.json \
  https://api.costfluent.com/v1/cost-estimates
```

Melde das Anwenden mit den IDs, die die neue Datenbank bekommen hat:

```bash
curl -X POST \
  -H "Authorization: Bearer $COSTFLUENT_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"workspaceId": "wsp_example", "repository": "acme/infrastructure", "pullRequest": 42, "resources": [{"address": "aws_db_instance.main", "resourceIds": ["arn:aws:rds:eu-central-1:123456789012:db:main"]}]}' \
  https://api.costfluent.com/v1/cost-estimates/apply
```

Das erste Senden für einen Pull Request oder Plan legt seine Schätzung an und antwortet mit `201`; jedes spätere ersetzt sie ganz und antwortet mit `200`, bis die Änderung angewendet ist. Beide Aufrufe antworten nur mit der `id` der Schätzung, ihrem `state` und, sobald sie angewendet ist, `appliedOn`, nie mit ihren Zahlen, sodass ein Token, das nur **Kostenschätzungen übermitteln** trägt, keine Kosten liest. Ein Token mit `viewCosts` listet Schätzungen über `GET /v1/cost-estimates` und liest eine mit ihren Ressourcen und gemessenen Zahlen über `GET /v1/cost-estimates/{estimateId}`; siehe die [API-Referenz](/api).

## Wie es sich verhält

- Sobald eine Schätzung nicht mehr „Vorgeschlagen“ ist, antwortet ein Senden für ihren Pull Request oder Plan mit `409`; sende die nächste Änderung unter ihrem eigenen Pull Request oder Plannamen. Ein wiederholtes Anwenden mit denselben IDs ändert nichts; mit anderen IDs antwortet es mit `409`. Ein Anwenden für einen Pull Request oder Plan, für den der Workspace keine Schätzung enthält, antwortet mit `404`.
- Ein Anwenden hält den Tag fest, an dem es gemeldet wird, in der Zeitzone des Workspace. Es übernimmt IDs nur für die Ressourcen, die die Schätzung erstellt oder ersetzt, und übergeht die übrigen Adressen, die es nennt, etwa kostenlose Ressourcen, die das Schätzwerkzeug ausgelassen hat.
- Eine vorgeschlagene Schätzung läuft 90 Tage nach ihrem letzten Senden ab, sodass ein Pull Request, in den weiter gepusht wird, seine Schätzung behält.
- Eine Schätzung nennt 1 bis 2.000 Ressourcen, jede mit höchstens drei IDs von höchstens 512 Zeichen, und ein Anfragekörper ist höchstens 5 MiB groß. Die `url` muss eine https-Adresse sein; Costfluent verlinkt sie und ruft sie nie ab.
- Ein Workspace enthält höchstens 1.000 Schätzungen, die „Vorgeschlagen“ oder „Angewendet“ sind. Eine neue Schätzung darüber hinaus wird mit `422` abgelehnt, während ein Senden für eine offene sie weiterhin ersetzt.
- Eine Schätzung, die statt mit Ressourcen-IDs mit einem `tag` gesendet wird, für eine Änderung, die diesen Tag an jeder Ressource trägt, die sie erstellt oder ändert, wird als Ganzes an diesem Tag gemessen: Ihre Summen bekommen tatsächliche Zahlen, ihre Ressourcen keine.

## Verwandte Seiten

- [Budgets](/de/planning/budgets)
- [Kostenbeträge](/de/concepts/cost-amounts)
- [Währungseinstellungen](/de/currency)
- [API-Authentifizierung](/de/api/authentication)
- [API-Referenz](/api)
