2016-07-01 8 views
1

Ich kann nicht scheinen, eine wirklich gute Möglichkeit zu finden, mehrere Sitzungen mit Boto3 zu initiieren. Wenn ich 10 Konten habe und sagen möchte, einen neuen IAM-Benutzer zu erstellen, kann ich die boto3.session.Session nicht mit neuen Anrufen ändern.Looping über mehrere AWS-Profile mit Boto3

So Beispielcode:

for user in usernames: 
     for acct in accounts: 
      boto3.session.Session(profile_name=acct) 
      print 'trying account: %s' % acct 
      try: 
       uname = IAM.create_user(UserName=user) 
       uname 
       print uname 
       print row_template % header 
       print row_template % tuple(['-' * len(h) for h in header]) 
       print row_template % (user, acct) 
      except botocore.exceptions.ClientError as e: 
       print e 

Es wird jedoch nur eine Sitzung für die Standardsitzung erstellen und es wird sich nicht ändern. Ich finde auch keinen Weg, die Sitzung zu beenden.

Jede Hilfe würde sehr geschätzt werden.

Antwort

4

Sie verwenden nicht die Sitzung, die Ihre boto3.session() zurückgibt. Stattdessen verwenden Sie dieselbe Standardsitzung. Sie können aus dem folgenden Code-Schnipsel entwickeln:

for acct in accounts: 
     session = boto3.Session(profile_name=acct) 
     iam = session.client('iam') 
     for user in usernames: 
      iam.create_user(UserName=user) 
+0

Doh! Danke. –