2017-10-10 4 views
0

Mir ist bewusst, dass ich, um die detaillierten Kosten eines AWS-Kontos zu erhalten, den programmatischen Abrechnungszugriff aktivieren und den Abrechnungsbericht an einen S3-Bucket im entsprechenden AWS-Konto senden muss.Wie erhalten Sie AWS-Konto-/Servicekosten mit der CloudWatch-API?

Dieser Ansatz funktioniert gut für mich. Das Problem ist jedoch, dass die zu ladende und zu verarbeitende Rechnungsgröße riesig ist, um nur die Konto- und Service-Kosten aller verknüpften AWS-Konten der letzten Monate zu erhalten.

Ich versuche, die AWS CloudWatch-APIs zu untersuchen, um die verknüpften Kosten auf Kontoebene zu erhalten. Ich versuche, die Liste aller verknüpften Konten zu erhalten und die Dienstleistungen, die von ihnen mit dem folgenden Befehl verbraucht werden:

aws cloudwatch list-metrics --namespace "AWS/Billing" 

, die genau wie erwartet funktioniert und gibt das Ergebnis korrekt. Wenn jedoch die Kosten für diese Konten mit dem folgenden Befehl zu erhalten versuchen:

aws cloudwatch get-metric-statistics --namespace "AWS/Billing" 
--dimensions "Name=LinkedAccount,Value=<linked-account-id>" --metric-name=EstimatedCharges --start-time=2017-10-01T19:30:00Z --end-time=2017-10-10T19:30:00Z --period=3600 --statistics=Sum 

ich eine fast leere JSON der folgenden Form erhalten:

{ 
    "Datapoints": [], 
    "Label": "EstimatedCharges" 
} 

Ich habe dafür gesorgt, dass ich die richtige bin mit Die verknüpfte Konto-ID und die anderen bereitgestellten Parameter sind wie oben erwähnt. Was fehlt mir hier, um die Konto- oder Service-Level-Kosten zu erhalten?

Edit 1: Ich habe die Region in meiner Konfigurationsdatei auf us-east-1 eingestellt, da die Region ein Pflichtfeld für die Befehle ist. Ist das irgendwie die Ursache? Wenn ja, was ist der Fix/Workaround?

Update 1: Ich bin in der Lage, die gesamten AWS-Konto Kosten (primäre Konto Kosten + verknüpfte Konto Kosten), mit der oben genannten API, nur durch die Anpassung der Dimensionen, aber immer noch nicht in der Lage, das individuelle Konto zu erhalten/Servicekosten (individuelle Kosten für primäre und verknüpfte Konten).

Update 2: Ich kann verknüpfte Kontokosten erhalten, wenn ich einen IAM-Benutzer von dem Konto verwende, dessen Kosten ich benötige. Die LinkedAccount-Dimension funktioniert jedoch immer noch nicht: Wenn ich den IAM-Benutzer des primären Kontos verwende, um die Kosten seiner verknüpften Konten unter Verwendung der LinkedAccount-Dimension zu ermitteln, wird immer noch ein leeres Ergebnis zurückgegeben. Meine Erwartung war, da ich die Kosten der verknüpften Konten in den Rechnungen des primären Kontos abrufen kann und die Kosten der verknüpften Konten bei der Anmeldung beim AWS-Portal sehen kann, sollte ich die Kosten der verknüpften Konten mithilfe der CloudWatch abrufen können APIs. Ich versuche immer noch, eine Lösung zu finden, um die Kosten verknüpfter Konten zu erhalten, indem ich den IAM-Benutzer des primären Kontos mit CW-APIs verwende.

Antwort

0

Unter Rechnungseinstellungen Sie Programmatischer Zugriff,

aktivieren https://aws.amazon.com/blogs/aws/new-programmatic-access-to-aws-billing-data/

Fakturierung -> S3 (Trigger) CSV Datei -> Lambda -> S3 (Billing für bestimmte Konten)

Sie können Lambda alarmieren und die generierte CSV-Datei für alle verknüpften Konten verarbeiten.

Ich hoffe, es hilft.

EDIT1:

Wenn Sie Umfrage für diese Gebühren durchführen möchten,

aws Cloudwatch get-Metrik-Statistiken --metric-name EstimatedCharges --start Zeit 2017-04 -08T23: 18: 00 - Endzeit 2017-04-09T23: 18: 00 --Zeitspanne 3600 - Namensraum AWS/Abrechnung - Statistik Summe - Abmessungen Name = LinkedAccount, Wert = accoalid --dimensions Name = Währung, Wert = USD

Sie müssen auch zusätzliche Währungsdimension erwähnen.

Wenn Cloudwatch keine Daten enthält, erhalten Sie keine Ergebnisse.

Hier ist Ergebnis, das ich für das verknüpfte Konto bekam,

{ 
    "Datapoints": [ 
     { 
      "Timestamp": "2017-04-09T06:00:00Z", 
      "Sum": 70.34, 
      "Unit": "None" 
     }, 
     { 
      "Timestamp": "2017-04-09T22:00:00Z", 
      "Sum": 76.4, 
      "Unit": "None" 
     }, 
     { 
      "Timestamp": "2017-04-09T10:00:00Z", 
      "Sum": 73.37, 
      "Unit": "None" 
     }, 
     { 
      "Timestamp": "2017-04-09T14:00:00Z", 
      "Sum": 73.37, 
      "Unit": "None" 
     }, 
     { 
      "Timestamp": "2017-04-09T02:00:00Z", 
      "Sum": 70.34, 
      "Unit": "None" 
     }, 
     { 
      "Timestamp": "2017-04-09T18:00:00Z", 
      "Sum": 76.4, 
      "Unit": "None" 
     } 
    ], 
    "Label": "EstimatedCharges" 
} 
+0

Nein, das ist nicht, was ich suche. Ich habe erwähnt, dass mir bewusst ist, wie man die Kosten aus den im S3-Eimer gelandeten Rechnungen bekommt. Ich brauche eine API, die mir die Kosten für das Konto und seine Dienste gibt, ohne diese Rechnungen herunterzuladen und zu verarbeiten. – jobin

+0

Der Befehl cli wurde aktualisiert, um die Metriken zu erhalten. Ich hoffe es hilft. – Kannaiyan

+0

Nein, auch nachdem ich die Dimensionen für die Währung und das verknüpfte Konto angegeben habe, bekomme ich immer noch ein leeres JSON, wie es in der Frage steht. – jobin

Verwandte Themen