Ho appena preso Python come mio linguaggio di scripting e sto cercando di capire come gestire correttamente gli errori con boto3.Boto3, python e come gestire gli errori
Sto cercando di creare un utente IAM:
def create_user(username, iam_conn):
try:
user = iam_conn.create_user(UserName=username)
return user
except Exception as e:
return e
Quando la chiamata a create_user riesce, ottengo un oggetto pulito che contiene il codice di stato HTTP della chiamata API ei dati del nuovo utente .
Esempio:
{'ResponseMetadata':
{'HTTPStatusCode': 200,
'RequestId': 'omitted'
},
u'User': {u'Arn': 'arn:aws:iam::omitted:user/omitted',
u'CreateDate': datetime.datetime(2015, 10, 11, 17, 13, 5, 882000, tzinfo=tzutc()),
u'Path': '/',
u'UserId': 'omitted',
u'UserName': 'omitted'
}
}
Questa grande opera. Ma quando questo fallisce (come se l'utente già esistesse), ottengo solo un oggetto di tipo botocore.exceptions.ClientError con solo testo per dirmi cosa è andato storto.
Esempio: ClientError ('Si è verificato un errore (EntityAlreadyExists) quando si chiama l'operazione CreateUser:. Esiste un utente con nome già omesso',)
Questa (AFAIK) rende molto difficile la manipolazione errore perché non posso è sufficiente attivare il codice di stato HTTP risultante (409 per l'utente già esistente in base ai documenti API AWS per IAM). Questo mi fa pensare che devo fare qualcosa nel modo sbagliato. Il modo ottimale sarebbe che boto3 non generasse mai eccezioni, ma juts restituisce sempre un oggetto che riflette come è andata la chiamata all'API.
Qualcuno può illuminarmi su questo tema o indicarmi la giusta direzione?
Grazie mille!
Documenti AWS http://botocore.readthedocs.io/en/latest/client_upgrades.html#error-handling –