Mit DoiT Console, Amazon Price API und dem KI-Assistenten Amazon Q die Kostenschätzung für AWS-Cloud-Infrastruktur in einer Zielregion beschleunigen

Wer Infrastrukturänderungen plant, sollte die Kostenunterschiede zwischen AWS-Regionen kennen. Je nach Anwendungsfall zeigt sich dann, welche Region preislich attraktiver ist – etwa bei der Wahl einer Region für Disaster Recovery, für die geografische Expansion oder für die Migration der bestehenden Infrastruktur.
In diesem Artikel zeige ich Ihnen, wie ich die Kosten für die Verlagerung meiner AWS-Infrastruktur von Virginia (us-east-1) in zwei europäische Regionen abgeschätzt habe: Frankfurt (eu-central-1) und Irland (eu-west-1). Für die Analyse habe ich drei zentrale Tools genutzt: die DoiT Console, Amazon Q und die AWS Price API.
Mit der DoiT Console die aktuelle Nutzung in Virginia ermitteln.
Die DoiT Console ist eine webbasierte Anwendung, über die Kunden mit der DoiT-Produktsuite arbeiten. Sie enthält Reports, die Ihre Cloud-Abrechnung detailliert und flexibel visualisieren.
Im ersten Schritt habe ich über einen DoiT-Report die aktuellen Cloud-Nutzungsdaten aus Virginia abgerufen, denn diese bilden die Grundlage für meine Kostenschätzung. Dafür habe ich den Report "Services Breakdown" der DoiT Console verwendet und folgendermaßen angepasst:
• Wechsel zur Tabellenansicht
• Metrik von Kosten auf Nutzung umgestellt
• Zeitraum auf monatlich gesetzt
• Daten gruppiert nach Account, Service, SKU, SKU ID und Unit
Die Konfiguration sehen Sie in der folgenden Abbildung:

Anpassung des vordefinierten DoiT-Reports "Services Breakdown"
Diesen Report habe ich anschließend heruntergeladen; die CSV-Datei diente als Eingabe für die Schätzung:

Export des DoiT-Reports
Die AWS Price API als Werkzeug zur Kostenschätzung in einer anderen Region.
Der Report enthält Nutzung, SKU IDs und Preise aller Services, die derzeit in Virginia laufen. Auf dieser Basis lassen sich die entsprechenden SKU IDs und Preise in Frankfurt und Irland ermitteln und die geschätzten Kosten je Region berechnen.
Die AWS Price API liefert Preisinformationen zu allen AWS-Services. Mit der Funktion GetProducts lassen sich Produkte gezielt anhand bestimmter Attribute suchen. Da die SKU IDs aus dem DoiT-Report vorliegen, kann ich darüber detaillierte Produktinformationen abrufen. Über die AWS CLI funktioniert das mit folgendem Befehl:
aws pricing get-products \
--service-code AmazonEC2 \
--region us-east-1 \
--filters Type=TERM_MATCH,Field=sku,Value="6C86BEPQVG73ZGGR"
{
"PriceList": [\
{\
"product": {\
"productFamily": "Compute Instance",\
"attributes": {\
"enhancedNetworkingSupported": "Ye\
"intelTurboAvailable": "Yes",\
"memory": "8 GiB",\
…\
"locationType": "AWS Region",\
"storage": "EBS only",\
"instanceFamily": "General purpose\
"operatingSystem": "Linux",\
"intelAvx2Available": "Yes",\
…\
"processorFeatures": "Intel AVX; I\
"servicecode": "AmazonEC2",\
"licenseModel": "No License required"\
"currentGeneration": "Yes",\
…\
"processorArchitecture": "64-bit",\
"marketoption": "OnDemand",\
},\
"sku": "6C86BEPQVG73ZGGR"\
},\
"serviceCode": "AmazonEC2",\
"terms": {\
"OnDemand": {\
"6C86BEPQVG73ZGGR.JRTCKXETXF": {\
"priceDimensions": {\
"6C86BEPQVG73ZGGR.JRTCKXET\
"unit": "Hrs",\
"endRange": "Inf",\
"description": "$0.096\
"appliesTo": [],\
"rateCode": "6C86BEPQV\
"beginRange": "0",\
"pricePerUnit": {\
"USD": "0.09600000\
}\
}\
},\
"sku": "6C86BEPQVG73ZGGR",\
"effectiveDate": "2025-07-01T0\
"offerTermCode": "JRTCKXETXF",\
"termAttributes": {}\
}\
},\
"Reserved": {\
…\
```\
Mit diesen Attributen lässt sich anschließend das passende Produkt samt SKU und Preis in der Zielregion finden – mit folgendem Befehl:\
```\
aws pricing get-products --service-code AmazonEC2 --region eu-central-1 \\
--filters 'Type=TERM_MATCH,Field="instanceType",Value="m5.large"' \\
'Type=TERM_MATCH,Field=productFamily,Value="Compute Instance"' \\
'Type=TERM_MATCH,Field="instanceFamily",Value="General purpose"' \\
'Type=TERM_MATCH,Field="operatingSystem",Value="Linux"' \\
'Type=TERM_MATCH,Field="licenseModel",Value="No License required"' \\
'Type=TERM_MATCH,Field="locationType",Value="AWS Region"'\
```\
Das Ergebnis liefert das passende Produkt:\
```\
{\
"product": {\
"productFamily": "Compute Instance",\
"attributes": {\
"enhancedNetworkingSupported": "Yes",\
…\
"gpuMemory": "NA",\
"vpcnetworkingsupport": "true",\
"instanceType": "m5.large",\
…\
"availabilityzone": "NA"\
},\
"sku": "223J7SG3VCFCDM9M"\
},\
"serviceCode": "AmazonEC2",\
"terms": {\
"OnDemand": {\
"223J7SG3VCFCDM9M.JRTCKXETXF": {\
"priceDimensions": {\
"223J7SG3VCFCDM9M.JRTCKXETXF.6YS6EN2CT7": {\
"unit": "Hrs",\
"endRange": "Inf",\
"description": "$0.112 per Unused Reservation Linux m5.large Instance Hour",\
"appliesTo": [],\
"rateCode": "223J7SG3VCFCDM9M.JRTCKXETXF.6YS6EN2CT7",\
"beginRange": "0",\
"pricePerUnit": {\
"USD": "0.1120000000"\
}\
}\
},\
"sku": "223J7SG3VCFCDM9M",\
"effectiveDate": "2025-07-01T00:00:00Z",\
"offerTermCode": "JRTCKXETXF",\
"termAttributes": {}\
}\
}\
},\
"version": "20250715014947",\
"publicationDate": "2025-07-15T01:49:47Z"\
```\
**Mit Amazon Q ein Skript erzeugen, das die passende SKU in der Zielregion findet.**\
Ein Skript zu schreiben, das die CSV-Datei verarbeitet, jede SKU in der aktuellen Region nachschlägt und die passende SKU in der Zielregion ermittelt, wäre zeitaufwendig. Amazon Q – der KI-gestützte Assistent von AWS – hat hier jedoch sehr gute Dienste geleistet.\
Join Medium for free to get updates from this writer.\
Subscribe\
Subscribe\
Remember me for faster sign in\
Zuerst habe ich Amazon Q CLI nach der Anleitung [hier](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html) installiert. Anschließend habe ich einen neuen Projektordner angelegt und die CSV-Datei mit dem DoiT-Report dort abgelegt. In diesem Ordner habe ich den Amazon-Q-Chat geöffnet und mein Vorhaben beschrieben. Die Anweisungen sahen ungefähr so aus:\
\
Kostenschätzung für eine Zielregion mit Amazon Q erzeugen\
```\
I want to create a python script that:\
- receives as input a file like costbyskuvirginia.csv with the current usage for different AWS services in the AWS region Virginia.\
- using the AWS price API this file should be able to find the current SKU in the AWS source region and using the attributes it should be able to find the corresponding SKU in the AWS target region.\
- The output should be a copy of the same input file plus the same information in including the price in the region of Frankfurt.\
```\
Mit dieser Eingabe hat Amazon Q einen guten Einstieg geliefert:\
- Es erstellt eine funktionierende Logik zum Einlesen und Verarbeiten der CSV-Datei.\
- Es legt das Mapping vom AWS-Service-Namen aus der Eingabedatei auf den von der AWS Price API erwarteten AWS-Service-Code an.\
- Es erstellt die Logik zum Abfragen der SKU in der Quellregion.\
- Es erstellt eine erste Logik zur Suche nach der SKU in Frankfurt.\
- Es erzeugt die neue Datei mit denselben Feldern für Frankfurt und ergänzt einige zusätzliche Felder.\
Die relevanten Felder meiner ursprünglichen Datei costbyskuvirginia.csv waren:\
\
CSV-Datei mit der Nutzungs- und Kostenaufschlüsselung pro SKU in Virginia\
Die Ausgabe des von Amazon Q erzeugten Python-Skripts sah etwa so aus:\
\
Die ersten Berechnungen waren für einige Zeilen korrekt, bei anderen sind mir jedoch Probleme aufgefallen. In manchen Fällen hat das Tool die Kosten geschätzt, anstatt die exakt passende SKU zu finden. Außerdem traten Kostenunterschiede auf, die nicht zu den erwarteten Preismustern passten. Beim Prüfen der Beschreibungen sind mir Abweichungen aufgefallen: So wurde etwa eine SKU für \"Amazon EKS cluster usage in US East (N. Virginia)\" zu 0,08928 USD pro Stunde mit \"EKS Auto Mode management of i3.2xlarge in EU (Frankfurt)\" gepaart.\
Ich habe versucht, Amazon Q zur Behebung dieser Diskrepanzen anzuweisen. Die vorgeschlagenen Ansätze haben das eigentliche Problem allerdings nicht gelöst. Daher habe ich die Strategie geändert und die Probleme zunächst manuell untersucht. So konnte ich Amazon Q präzisere Anweisungen geben.\
Bei der manuellen Analyse habe ich festgestellt, dass einige SKUs – etwa Spot-Instanzen – nicht in der AWS Price API enthalten sind. Diese habe ich daher von der Schätzung ausgenommen.\
Anschließend habe ich Amazon Q gebeten, die Zeilen mit abweichender Beschreibung zu identifizieren – also jene, in denen sich der Beschreibungstext ohne Berücksichtigung von Preis und Region unterscheidet. Für diese Aufgabe hat Amazon Q ein Python-Skript erstellt und die Unterschiede zuverlässig ausgegeben.\
Nach der Analyse der Unterschiede habe ich manuell geprüft und festgestellt, dass der Algorithmus für einige Produkte zusätzliche Attribute benötigt, um die korrekte SKU in der Zielregion zu finden. So enthielten die Attribute für die Produktfamilie \"Compute Instance\" beispielsweise kein licenseModel. Dadurch fand der Algorithmus die SKU für eine Windows-Instanz statt für eine Linux-Instanz.\
Manche Produkte haben mehrere Preise für dieselbe SKU ID. In diesem Fall fand der Algorithmus zwar die korrekte SKU in der Zielregion, wählte aber den ersten Preis aus der Liste. Das war problematisch, weil so abgestufte Preise (Tiered Pricing), bei denen sich der Preis nach dem Nutzungsumfang richtet, nicht berücksichtigt wurden.\
Mit Amazon Q habe ich dieses Problem gelöst. Auf detaillierte Anweisungen hin hat es die Logik erstellt, die je nach Nutzung die richtige Preisstufe auswählt. Nach diesen Änderungen konnte der Algorithmus für 108 von 140 Produkten erfolgreich Kosten schätzen. Für meine Analyse hat das ausgereicht.\
Nachdem die Berechnungen für Frankfurt sauber liefen, habe ich Amazon Q gebeten, Irland im Skript zu ergänzen. Die Schätzung für Irland wurde korrekt hinzugefügt und die Ausgabedatei entsprechend aktualisiert.\
Der mit Amazon Q erstellte initiale Code liegt in diesem öffentlichen GitHub-[Repository](https://github.com/dianibar/estimate-aws-region-cost).\
Die nächsten Schritte für dieses Projekt:\
- Den Algorithmus generalisieren, sodass er Eingabedateien aus beliebigen Quellregionen verarbeiten und Schätzungen für beliebige Zielregionen erstellen kann.\
- Erkennen, wenn ein neuer Service in der Schätzung angefragt wird, und den Algorithmus um die nötigen Filter erweitern.\
- Das kürzlich von AWS veröffentlichte Feature [AWS Pricing MCP Server](https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-price-list-gets-a-natural-language-upgrade-introducing-the-aws-pricing-mcp-server/) berücksichtigen.\
- Die Codequalität verbessern.\
Wer AWS-Cloud-Infrastrukturkosten zwischen Regionen vergleicht, braucht eine belastbare Schätzung als Grundlage für fundierte Entscheidungen. Die **DoiT Console spielt dabei eine zentrale Rolle, weil sie die aktuellen Nutzungsdaten** der Quellregion als Fundament liefert. In Kombination mit der AWS Price API für regionsspezifische Preise und Amazon Q für die Automatisierung lässt sich daraus eine zuverlässige Kostenschätzung ableiten.\