So erhalten Sie Informationen von Organisationen, Cost Explorer eines anderen AWS-Kontos bei Lambda (Python)

Fazit

Siehe das Dokument unten. .. .. .. .. https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-assume-iam-role/

Ich verstehe das überhaupt nicht, selbst wenn ich es lese Mit dem Konto (Konto A), das die Informationen enthält, die Sie erhalten möchten Ich habe es mit dem Konto (Konto B) versucht, an das ich es weitergeben möchte

Verarbeitung auf der Seite des Kontos A.

1. Erstellen Sie eine Rolle für Lambda in Konto A.

2. Fügen Sie die erforderliche Richtlinie hinzu, um die Informationen für die Rolle abzurufen

CostExplorerFullAccess, AWSOrganizationsFullAccess usw.

3. Klicken Sie auf der Registerkarte Vertrauensstellungen für Rollenzusammenfassungen auf Vertrauenswürdigkeit bearbeiten.

キャプチャ.PNG

4. Fügen Sie die folgende Richtlinie ein und aktualisieren Sie sie.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::Kontonummer des Kontos B.:role/service-role/Rollenname von Konto B."
        ],
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Verarbeitung auf der Seite des Kontos B (IAM)

1. Erstellen Sie eine Rolle für Konto B und erteilen Sie ihm die erforderlichen Berechtigungen.

Gewähren Sie dem Administrator vorerst Zugriff

2. Klicken Sie auf der Registerkarte Rollenzusammenfassungsberechtigungen auf Inline-Richtlinie hinzufügen

3. Klicken Sie auf die Registerkarte Json, fügen Sie Folgendes als Inline-Richtlinie ein und klicken Sie zum Anwenden auf Richtlinie bestätigen

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::Kontonummer des Kontos A.:role/Konto Ein Rollenname"
    }
}

Verarbeitung auf Konto B Seite (Lambda)

In der boto3-Dokumentation wird beschrieben, wie Sie es erhalten. Siehe unten für Details. https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts.html https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/organizations.html https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ce.html#CostExplorer.Client.get_cost_forecast https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetCostAndUsage.html

import boto3

def lambda_handler(event, context):
    
  #Rufen Sie eine Reihe von Sicherheitsanmeldeinformationen ab, die für den Zugriff auf AWS-Ressourcen anderer Konten verwendet werden
  sts_connection = boto3.client('sts')
    acct_b = sts_connection.assume_role(
        RoleArn="arn:aws:iam::Kontonummer des Kontos A.:role/Konto Ein Rollenname",
        RoleSessionName="cross_acct_lambda"
    )
    ACCESS_KEY = acct_b['Credentials']['AccessKeyId']
    SECRET_KEY = acct_b['Credentials']['SecretAccessKey']
    SESSION_TOKEN = acct_b['Credentials']['SessionToken']

  #Informationen zu Organisationen in Konto A abrufen
    organizations = boto3.client(
        'organizations',
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        aws_session_token=SESSION_TOKEN,
    )

    responses = []
    res = {}
    while True:
        if 'NextToken' in res:
            res = organizations.list_accounts(NextToken = res['NextToken'])
        else:
            res = organizations.list_accounts()
        responses += res['Accounts']
        if 'NextToken' not in res:
            break
    
    print(responses)
    
    #Informationen zu CostExplorer für Konto A abrufen
    ce = boto3.client(
        'ce', 
        region_name='us-east-1',
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        aws_session_token=SESSION_TOKEN,
    )
    response = ce.get_cost_and_usage(
        TimePeriod = {"Start": "2020-10-01", "End": "2020-11-01"},
        Granularity = 'MONTHLY', 
        Metrics = ["UnblendedCost"],
        GroupBy=[{'Type': 'DIMENSION','Key': 'LINKED_ACCOUNT'}]
    ) 
    
    print(response)
  

Recommended Posts

So erhalten Sie Informationen von Organisationen, Cost Explorer eines anderen AWS-Kontos bei Lambda (Python)
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Mit Python + Selenium erhalten Sie Informationen, die der Registerkarte "Netzwerk" der Chrome-Entwicklertools entsprechen
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
So erhalten Sie die Python-Version
Erste Schritte mit Python
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Zusammenfassung des Schreibens von AWS Lambda
[Yahoo! Weather Replacement Version] So erhalten Sie Wetterinformationen mit LINE Notify + Python
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Wie man mit dem Problem umgeht, dass die Erstellung fehlschlägt, wenn CI / CD von Python Function mit AWS Amplify
Holen Sie sich die neuesten AMI-Informationen mit der AWS CLI
So legen Sie Attribute mit Mock of Python fest
So erhalten Sie Elemente vom Typ Wörterbuch von Python 2.7
So erhalten Sie die Dateien im Ordner [Python]
[AWS / Lambda] Laden einer externen Python-Bibliothek
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Python-Skript zum Abrufen von Notizinformationen mit REAPER
So erhalten Sie den Variablennamen selbst in Python
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Ich möchte Lambda mit Python auf Mac AWS!
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Erste Schritte mit Visual Studio Online ~ Das Ende der Ära der Umgebungskonstruktion ~
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich möchte eine andere Version von Python mit pyvenv angeben
Führen Sie das Programm aus, ohne eine Python-Umgebung zu erstellen! !! (Erste Schritte mit Google Colaboratory)
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
[AWS] Versuchen Sie, die Python-Bibliothek mit SAM + Lambda (Python) zur Ebene hinzuzufügen.
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
So kratzen Sie mit Python den Aktienkurs einer einzelnen Aktie von der Nikkei Shimbun-Website
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Versuchen Sie, in die Datenbank zu importieren, indem Sie ShapeFile mit numerischen Informationen zum nationalen Land mit Python bearbeiten
Wie benutzt man Python Lambda?
Holen Sie sich Alembic-Informationen mit Python
Verarbeiten Sie die mit Redshift entladene gzip-Datei mit Python of Lambda, gzipen Sie sie erneut und laden Sie sie in S3 hoch
Ein Memo eines Programms, das ein zweistelliges Datum mit Javascript, Ruby, Python oder einem Shell-Skript abruft.