Ein AWS-Konto mit einer einzigen Person behält man mit einem Blick auf die Rechnung im Griff. Mit vier oder fünf Personen, die Dinge anlegen, nicht mehr. Jede erstellt "eine kleine Maschine zum Testen", "eine Kopie für alle Fälle", "mal kurz eine Datenbank", und keine sieht, was die anderen anlegen. Niemand gibt viel aus; zusammen verdoppelt sich die Rechnung in drei Monaten. Und wenn sie kommt, lässt sich nicht mehr sagen, von wem welcher Euro stammt.
Die Lösung ist nicht, etwas zu verbieten, sondern jeder Person eine Zahl pro Monat zu geben und sichtbar zu machen, wie viel sie schon ausgegeben hat. Es ist dasselbe wie eine Firmenkarte mit Limit: Niemand nimmt es übel, und es verhindert 90 % der bösen Überraschungen.
AWS hat kein "Budget pro Benutzer" als solches. Man kann es mit drei Bausteinen nachbilden: ein Pflicht-Tag mit dem Namen der Person, die etwas anlegt, ein Budget (Budgets), das nach diesem Tag filtert, und eine IAM-Richtlinie, die das Anlegen ohne Tag verhindert. Die Schritte unten setzen es auf; die folgenden Abschnitte erklären, wie Sie die Zahlen festlegen und was Sie mitzählen.
Bevor Sie anfangen: was die Begriffe bedeuten
- Tag
- Ein Paar Name = Wert, das Sie an alles hängen, was Sie in AWS anlegen (zum Beispiel Propietario = ana), um die Kosten später danach zu gruppieren.
- Kostenzuordnungs-Tag
- Ein Tag, das Sie in Billing aktiviert haben, damit Cost Explorer und Budgets danach filtern können. Ohne Aktivierung existiert das Tag, taugt aber nicht für Kosten.
- Budgets
- Das Werkzeug von AWS, um eine Zahl pro Monat festzulegen und eine E-Mail zu bekommen, wenn die tatsächlichen oder prognostizierten Kosten sie überschreiten. Es warnt; es blockiert nicht.
- IAM
- Das Benutzer- und Rechtesystem von AWS. Jede Person hat einen Benutzer und Rechte, die festlegen, was sie anlegen, sehen oder löschen darf.
- Richtlinie
- Ein Text im JSON-Format, der in IAM Rechte gewährt oder verweigert. Eine Verweigerungsrichtlinie gewinnt immer gegen jedes gewährte Recht.
- Cost Explorer
- Der AWS-Bildschirm, der die Kosten in Diagrammen zeigt und sie nach Dienst, Region, Konto oder Tag gruppieren lässt.
- Tatsächliche Kosten und Prognose
- Was in diesem Monat schon verbraucht wurde und was AWS berechnet, dass Sie bei gleichbleibendem Tempo bis Monatsende verbraucht haben werden.
- Snapshot
- Eine Kopie einer Festplatte oder einer Maschine. Wird pro GB und Monat berechnet, solange sie existiert; es ist das Objekt, das sich am meisten ansammelt, ohne dass es jemand merkt.
- Bucket
- Ein "Ordner" in S3, in dem Dateien abgelegt werden. Berechnet werden der Speicherplatz und das, was heruntergeladen wird.
Schritt für Schritt
Legen Sie das Tag fest und sagen Sie es allen
Wählen Sie einen Tag-Namen und ein Format für den Wert, und ändern Sie beides nie wieder: zum Beispiel
Propietariomit dem IAM-Benutzernamen jeder Person (Propietario = ana). Schreiben Sie es an eine Stelle, die alle sehen. Ab jetzt trägt alles, was angelegt wird (Maschinen, Festplatten, Snapshots, Datenbanken, Buckets), dieses Tag.Aktivieren Sie das Tag als Kostenzuordnungs-Tag
In der AWS-Konsole, Menü Ihres Kontos, Billing and Cost Management, Bereich Cost allocation tags. Suchen Sie
Propietarioin der Liste der benutzerdefinierten Tags und klicken Sie auf Aktivieren. Solange es nicht aktiviert ist, können Cost Explorer und Budgets nicht danach filtern. Es dauert bis zu 24 Stunden, bis es erscheint, und gezählt werden nur die Kosten ab der Aktivierung, nicht die davor.Erstellen Sie in Budgets ein Budget pro Person
Gehen Sie unter Billing and Cost Management auf Budgets und klicken Sie auf Budget erstellen. Wählen Sie Anpassen, Typ Kostenbudget, Zeitraum Monatlich, fester Betrag (zum Beispiel
60Dollar). Unter Filter wählen Sie die Dimension Tag, SchlüsselPropietario, Wertana. Nennen Sie espresupuesto-ana.Fügen Sie zwei Benachrichtigungen hinzu: wenn die tatsächlichen Kosten 80 % überschreiten und wenn die Prognose 100 % überschreitet, mit der E-Mail-Adresse dieser Person und Ihrer eigenen. Wiederholen Sie das Budget für jede Person. Die ersten beiden Budgets des Kontos sind kostenlos; danach kostet jedes ein paar Cent pro Tag.
Verhindern Sie das Anlegen von Maschinen ohne Tag
In IAM, Richtlinien, Richtlinie erstellen, JSON-Editor. Eine Verweigerungsrichtlinie wie diese verhindert, dass eine EC2-Instanz oder ein Volume ohne das Tag
Propietarioangelegt wird:{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": ["ec2:RunInstances", "ec2:CreateVolume"], "Resource": ["arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*"], "Condition": { "Null": { "aws:RequestTag/Propietario": "true" } } }] }Hängen Sie die Richtlinie an die Benutzergruppe an. Mit einer ähnlichen Bedingung (
StringNotEqualsaufaws:RequestTag/Propietariound der Variablen${aws:username}) können Sie erzwingen, dass der Wert der eigene Benutzername ist, damit niemand seine Maschinen auf jemand anderen schreibt. Jeder Dienst hat seine eigenen Aktionen (rds:CreateDBInstance,lightsail:CreateInstances); fangen Sie mit EC2 und RDS an, dort steckt das Geld.Begrenzen Sie, welche Größen angelegt werden dürfen
Ein Budget warnt, aber es bremst keine Maschine für 2 Dollar die Stunde, die an einem Freitagnachmittag angelegt wurde. Fügen Sie eine weitere Verweigerungsrichtlinie für
ec2:RunInstanceshinzu, mit der Bedingung, dassec2:InstanceTypeaußerhalb einer Liste liegt (t3.micro,t3.small,t3.medium...). Wer etwas Größeres braucht, fragt danach. In RDS ist das Gegenstückrds:DatabaseClass.Prüfen Sie einmal im Monat
Gruppieren Sie im Cost Explorer nach dem Tag
Propietario. Sie sehen einen Balken pro Person und einen weiteren, "Ohne Tag", mit allem, was unter Umgehung der Regel oder vor ihrer Einführung angelegt wurde. Dieser Balken ist Ihre Aufgabenliste: taggen oder löschen. Nehmen Sie sich zu Beginn jedes Monats zehn Minuten und besprechen Sie die Zahlen mit dem Team. Transparenz bewirkt mehr als jede Richtlinie.
Warum die Kosten mit mehreren Personen aus dem Ruder laufen
Es ist weder böse Absicht noch Nachlässigkeit; die AWS-Konsole gibt schlicht kein Signal, was jeder Klick kostet. Beim Anlegen einer Maschine wird nicht der Monatspreis angezeigt, nur der Typ. Ein Snapshot warnt nicht davor, dass er für immer berechnet wird. Und jede Person sieht das Konto als "ihres": Sie weiß nicht, dass schon drei Testmaschinen anderer Kollegen dasselbe tun.
Die drei Muster, die am meisten Geld kosten:
- Anlegen und vergessen. Eine Maschine für einen zweitägigen Test, die drei Monate lang eingeschaltet bleibt. Das ist mit Abstand die Ursache Nummer eins.
- Kopien "für alle Fälle". Snapshots vor jeder Änderung, die danach niemand löscht.
- Größe aus Bequemlichkeit. Eine viermal größere Maschine als nötig wählen, "damit es gut läuft", ohne zu wissen, dass sie viermal so viel kostet.
Wie Sie die Zahl festlegen
Gehen Sie von dem aus, was heute schon ausgegeben wird. Schauen Sie sich im Cost Explorer die letzten drei Monate an und teilen Sie sie gedanklich auf die Personen auf (wenn es keine Tags gibt, fragen Sie nach). Normalerweise haben ein oder zwei Personen fast die gesamten berechtigten Kosten (Produktion) und der Rest sind Tests und Entwicklung.
Trennen Sie zwei Dinge: das Gemeinsame (die Produktionsserver, die Datenbank des Unternehmens) und das Persönliche (was jede Person für ihre Arbeit anlegt). Das Budget pro Benutzer gilt nur für das Zweite. Für eine Person in der Entwicklung liegt eine vernünftige Zahl zwischen 30 und 100 Dollar im Monat: Das reicht für ein oder zwei kleine Maschinen, die zu Bürozeiten laufen, und ein paar Snapshots. Für jemanden, der nur nachschaut, null.
Setzen Sie die Zahl etwas über das, was heute die Person mit den höchsten vernünftigen Ausgaben verbraucht, und senken Sie sie nach zwei Monaten, wenn etwas übrig bleibt.
Was im Budget jeder Person mitzählt
Alles, was diese Person anlegt und laufende Kosten verursacht:
- Maschinen in EC2 und Lightsail, nach Stunden oder nach Monatsplan. Denken Sie daran, dass in Lightsail auch die gestoppte Maschine berechnet wird.
- Festplatten dieser Maschinen, einschließlich derer, die beim Löschen der Maschine übrig bleiben.
- Datenbanken in RDS und Lightsail, meist das teuerste Objekt, das eine Person anlegt.
- Snapshots, pro GB und Monat, solange sie existieren.
- Buckets in S3: Speicherplatz und vor allem, was daraus heruntergeladen wird.
- IPs, die reserviert und nicht zugewiesen sind.
Was Sie am Anfang nicht mitzählen müssen: Datenübertragung, CloudWatch-Protokolle, DNS-Abfragen. Sie sind klein und schwer zuzuordnen. Konzentrieren Sie sich auf das, was per Knopfdruck angelegt und dann vergessen wird.
Eine Falle: Budgets zählt die im Monat aufgelaufenen Kosten. Was jemand am 2. angelegt und am 3. gelöscht hat, zählt weiter mit, auch wenn das Objekt nicht mehr existiert.
Was AWS nicht kann
Man sollte bei den Grenzen dieses Aufbaus ehrlich sein:
- Budgets warnt, blockiert aber nicht. Es gibt die "Budget-Aktionen", die beim Überschreiten einer Schwelle eine Verweigerungsrichtlinie anwenden, aber sie sind grob und kommen zu spät: Die Kosten sind schon entstanden.
- Tags hängen davon ab, dass die Leute sie setzen. Die IAM-Richtlinie erzwingt es in EC2 und RDS, aber nicht alle Dienste erlauben das Taggen beim Anlegen, und automatische Snapshots erben das Tag der Festplatte nicht.
- Lightsail taggt, aber seine Konsole erzwingt es nicht, und was vor der Aktivierung des Kosten-Tags angelegt wurde, zählt nicht mit.
- Es kostet Pflege: Jede neue Person bedeutet ein Budget, einen Tag-Wert und eine Prüfung; jede Person, die geht, bedeutet aufräumen.
Trotzdem ist es viel besser als nichts.
Was schiefgehen kann
Das Budget zeigt keine Kosten an
Fast immer ist das Tag nicht als Kostenzuordnungs-Tag aktiviert, oder Sie haben es vor weniger als einem Tag aktiviert. Prüfen Sie es unter Billing. Und denken Sie daran, dass nur ab der Aktivierung gezählt wird: Die Kosten der letzte Woche getaggten Maschinen erscheinen nicht rückwirkend.
Es gibt viele Kosten "Ohne Tag"
Im ersten Monat ist das normal. Gruppieren Sie im Cost Explorer innerhalb von "Ohne Tag" nach Dienst, um zu sehen, was es ist: meist alte Maschinen, lose Festplatten und Snapshots. Taggen Sie sie (in EC2 können Sie mehrere auswählen und auf einmal Tags hinzufügen) oder löschen Sie sie. Wenn die Kosten ohne Tag gemeinsame Produktion sind, geben Sie ihnen das Tag Propietario = compartido und fertig.
Jemand kann keine Maschine anlegen
Die Verweigerungsrichtlinie funktioniert: Die Person versucht, ohne Tag oder mit einer nicht erlaubten Größe anzulegen. In der Konsole lautet der Fehler "not authorized ... with an explicit deny". Sie soll das Tag beim Anlegen hinzufügen (Bereich Tags im EC2-Assistenten) oder eine Größe aus der Liste wählen. Wenn sie wirklich etwas Größeres braucht, nehmen Sie es in die Liste der Richtlinie auf.
Die automatischen Snapshots tragen kein Tag
Snapshots, die AWS Backup oder Data Lifecycle Manager erstellen, erben Tags, wenn Sie es in der Regel einstellen; die automatischen Snapshots von Lightsail lassen sich nicht taggen. Zählen Sie diese Kosten als gemeinsam oder rechnen Sie gesondert aus, wie viel sie ausmachen (sie sind in der Rechnung leicht als "snapshot" zu erkennen).
In Simplio
In Simplio ist das Budget pro Benutzer ein Feld in der Karteikarte jeder Person: eine Zahl pro Monat. Alles, was diese Person über Simplio anlegt (Maschinen, Datenbanken, Snapshots, Buckets), wird mit seinen ungefähren Kosten auf ihren Namen gebucht und, wenn sie es im selben Monat löscht, wieder abgezogen. Jeder Benutzer sieht, wie viel er schon ausgegeben hat und wie viel ihm bleibt, bevor er etwas anlegt, und erhält eine E-Mail, wenn er sich der Grenze nähert; der Administrator sieht alle Personen auf dem Bildschirm Kosten. Es muss nichts getaggt, nichts in Billing aktiviert und keine Richtlinie geschrieben werden.
Zusammen mit den Rechten pro Benutzer und pro Objekt (wer anlegen darf, wer nur sehen, wer was löschen darf) und dem Aktivitätsprotokoll wissen Sie jederzeit, wer was wann angelegt hat.
Dasselbe, in AWS und in Simplio
| In der AWS-Konsole | In Simplio | |
|---|---|---|
| Jeder Person eine monatliche Obergrenze geben | Pflicht-Tag, in Billing aktivieren, ein Budget pro Person, IAM-Richtlinien: 6 Schritte und Pflege | Eine Zahl in der Karteikarte jedes Benutzers |
| Wissen, was jeder angelegt hat | Cost Explorer nach Tag, nur das Getaggte und erst ab der Aktivierung | Was über Simplio angelegt wird, wird dem zugeschrieben, der es angelegt hat, mit ungefähren Kosten |
| Verhindern, dass zu viel angelegt wird | Verweigerungsrichtlinien nach Maschinengröße | Rechte pro Benutzer und pro Objekt, und Warnung beim Annähern an das Budget |