Wie konfiguriere ich eine Lambda-Funktion so, dass sie eine IAM-Rolle in einem anderen AWS-Konto übernimmt?
Ich möchte, dass meine AWS-Lambda-Funktion eine AWS Identity and Access Management (IAM)-Rolle in einem anderen AWS-Konto übernimmt.
Kurzbeschreibung
Gehen Sie wie folgt vor, damit Ihre Lambda-Funktion eine IAM-Rolle in einem anderen Konto übernimmt:
- Konfigurieren Sie die Ausführungsrolle Ihrer Lambda-Funktion so, dass die Funktion eine IAM-Rolle in einem anderen AWS-Konto übernehmen kann.
- Ändern Sie die Vertrauensrichtlinie Ihrer kontoübergreifenden IAM-Rolle, damit Ihre Lambda-Funktion die Rolle übernehmen kann.
- Fügen Sie den AssumeRole-API-Aufruf von AWS Security Token Service (AWS STS) zum Code Ihrer Lambda-Funktion hinzu.
Hinweis: Eine Lambda-Funktion kann eine IAM-Rolle in einem anderen Konto übernehmen, um auf Ressourcen wie einen Amazon Simple Storage Service (Amazon S3)-Bucket zuzugreifen. Die Lambda-Funktion kann auch Aufgaben übernehmen, wie das Starten und Stoppen von Instances.
Lösung
Hinweis: Die folgende Beispielprozedur bezieht sich auf zwei Arten von Konten:
- Ein Home-Konto, dass die Lambda-Funktion hostet, 111111111111
- Ein Cross-Konto, dass die IAM-Rolle enthält, die die Lambda-Funktion annimmt, 222222222222
Voraussetzung
Erstellen Sie die IAM-Rolle, die Sie im Cross-Konto verwenden möchten.
Konfigurieren Sie die Ausführungsrolle Ihrer Lambda-Funktion so, dass die Funktion eine IAM-Rolle in einem anderen Konto übernehmen kann
Fügen Sie die folgende Richtlinienanweisung zur IAM-Rolle Ihrer Lambda-Funktion im Konto 111111111111 hinzu:
Hinweis: Ersetzen Sie 222222222222 durch die Konto-ID der kontoübergreifenden Rolle, die Ihre Funktion annimmt, und role-on-source-account durch den Namen der übernommenen Rolle.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/role-on-source-account" } }
Ändern Sie die Vertrauensrichtlinie Ihrer kontoübergreifenden IAM-Rolle, damit Ihre Lambda-Funktion die Rolle übernehmen kann
Fügen Sie die folgende Richtlinienanweisung zur Vertrauensrichtlinie Ihrer kontoübergreifenden IAM-Rolle in Konto 222222222222 hinzu:
Hinweis: Ersetzen Sie 111111111111 durch die Konto-ID des Kontos, in dem sich Ihre Lambda-Funktion befindet, und my-lambda-execution-role durch den Namen der IAM-Rolle Ihrer Funktion.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:role/my-lambda-execution-role" }, "Action": "sts:AssumeRole" } ] }
Fügen Sie den AWS STS AssumeRole-API-Aufruf zum Code Ihrer Lambda-Funktion hinzu
Um den AWS STS AssumeRole-API-Aufruf zum Code Ihrer Funktion hinzuzufügen, führen Sie die Schritte unter Konfigurieren der Lambda-Funktionsoptionen aus.
Hinweis: Der AWS STS AssumeRole-API-Aufruf gibt Anmeldeinformationen zurück, die Sie verwenden können, um einen Service-Client zu erstellen. Wenn Sie den Service-Client verwenden, verfügt Ihre Lambda-Funktion über die Berechtigungen, die Ihnen die übernommene Rolle gewährt hat. Weitere Informationen finden Sie unter assume\ _role auf der AWS Boto 3-Website.
Beispiel für einen Python-Funktionscode, der den AWS STS AssumeRole-API-Aufruf beinhaltet
Hinweis: Ersetzen Sie 222222222222 durch die AWS-Konto-ID der kontoübergreifenden Rolle die Ihre Funktion annimmt, und role-on-source-account durch den Namen der übernommenen Rolle.
import boto3 def lambda_handler(event, context): sts_connection = boto3.client('sts') acct_b = sts_connection.assume_role( RoleArn="arn:aws:iam::222222222222:role/role-on-source-account", RoleSessionName="cross_acct_lambda" ) ACCESS_KEY = acct_b['Credentials']['AccessKeyId'] SECRET_KEY = acct_b['Credentials']['SecretAccessKey'] SESSION_TOKEN = acct_b['Credentials']['SessionToken'] # create service client using the assumed role credentials, e.g. S3 client = boto3.client( 's3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY, aws_session_token=SESSION_TOKEN, ) return "Hello from Lambda"
Weitere Informationen
Verwenden ressourcenbasierter Richtlinien für AWS Lambda
Zugriffsberechtigungen für Lambda-Ressourcen
Zu einer IAM-Rolle wechseln (AWS API)
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren