मैंने अभी अपनी स्क्रिप्टिंग भाषा के रूप में पायथन उठाया है और मैं यह समझने की कोशिश कर रहा हूं कि boto3 के साथ उचित त्रुटि कैसे करें।बोटो 3, पायथन और त्रुटियों को कैसे संभालना है
मैं एक IAM उपयोगकर्ता बनाने के लिए कोशिश कर रहा हूँ:
def create_user(username, iam_conn):
try:
user = iam_conn.create_user(UserName=username)
return user
except Exception as e:
return e
जब create_user करने के लिए कॉल सफल होता है, मैं एक साफ वस्तु जिसमें API कॉल के HTTP स्थिति कोड और नव निर्मित उपयोगकर्ता के डेटा शामिल हो जाओ ।
उदाहरण:
{'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'
}
}
यह महान काम करता है। लेकिन जब यह विफल हो जाता है (जैसे कि उपयोगकर्ता पहले से मौजूद है), तो मुझे बस botocore.exceptions.bientError का एक ऑब्जेक्ट मिलता है जो मुझे बताता है कि क्या गलत हुआ।
उदाहरण: ClientError ('कोई त्रुटि हुई (EntityAlreadyExists) जब CreateUser आपरेशन बुला:। पहले से ही छोड़े गए नाम के साथ उपयोगकर्ता मौजूद है',)
यह (AFAIK) बहुत मुश्किल से निपटने त्रुटि बनाता है क्योंकि मैं नहीं कर सकता केवल परिणामी http स्थिति कोड पर स्विच करें (उपयोगकर्ता के लिए 40 9 आईएएम के लिए एडब्ल्यूएस एपीआई दस्तावेज़ों के अनुसार पहले से मौजूद है)। इससे मुझे लगता है कि मुझे कुछ गलत तरीके से करना होगा। इष्टतम तरीका boto3 के लिए कभी अपवाद नहीं फेंकने के लिए होगा, लेकिन juts हमेशा एक ऑब्जेक्ट लौटाता है जो दर्शाता है कि एपीआई कॉल कैसे चला गया।
क्या कोई मुझे इस मुद्दे पर प्रबुद्ध कर सकता है या मुझे सही दिशा में इंगित कर सकता है?
बहुत बहुत धन्यवाद!
एडब्ल्यूएस दस्तावेज़ http://botocore.readthedocs.io/en/latest/client_upgrades.html#error-handling –