9
如何使用boto3处理错误?
我试图弄清楚如何使用boto3进行正确的错误处理。 我正在尝试创建一个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.ClientError的对象,其中只有文本可以告诉我出了什么问题。 示例:ClientError('调用CreateUser操作时发生错误(EntityAlreadyExists):名称省略的用户已经存在。',) 此(AFAIK)使得错误处理变得非常困难,因为我不能仅打开结果的http状态代码(根据IAM的AWS API文档,该用户的409已经存在)。这使我认为我必须以错误的方式做某事。最佳的方法是让boto3永远不会抛出异常,但是突出部分总是返回一个反映API调用进行方式的对象。 谁能在这个问题上启发我或为我指明正确的方向?