首页 > 解决方案 > Boto3 AWS 创建用户 Try catch 不允许 for 循环继续

问题描述

我有这个python脚本,它将遍历我的所有帐户并在每个帐户中创建一个用户,但是当用户已经存在'botocore.errorfactory.EntityAlreadyExistsException:'时出现错误,或者它只会在帐户中创建用户,直到它命中和错误 for 循环结束并且永远不会在数组中的现有帐户中创建用户。我已经尝试了 botocore 异常并将异常传递移动到代码中的其他行,但我没有得到任何输出。这也创建了第二组密钥。我是 Python 的新手...

import boto3
import pprint
import sys
from botocore.exceptions import ClientError, ParamValidationError
pp = pprint.PrettyPrinter(indent=4)
username='musicman'
Password = 'Welcome'
accounts = ["account1", "account2", "account3", "account4", "account5", "account6"]
try:
for account in accounts:
    boto3.setup_default_session(profile_name=account)
    #brooksprod = boto3.session.Session(profile_name='account1')
    iam = boto3.client('iam')

    # create a user
    iam.create_user( UserName=username)
except Exception:
       pass
response = iam.add_user_to_group(
    GroupName='Admin',
    UserName=username
)
response = iam.create_login_profile(
    UserName= username,
    Password= Password,
    PasswordResetRequired=True
)    
    #pp.pprint(response)
response = iam.get_user(UserName = username)
pp.pprint(response)

response = iam.create_access_key(
    UserName=username
)
#print(response.get('AccessKey','SecretAccessKey'))
pp.pprint(response)

标签: pythonboto3

解决方案


执行try/exceptfor 循环内部:

for account in accounts:
  try:
    boto3.setup_default_session(profile_name=account)
    #brooksprod = boto3.session.Session(profile_name='account1')
    iam = boto3.client('iam')

    # create a user
    iam.create_user( UserName=username)
  except Exception:
    pass

推荐阅读