不同用例的相同例外-Boto3

时间:2018-11-08 20:29:45

标签: amazon-web-services boto3 botocore

使用boto3 IAM,我试图停用连接到指定用户的MFA设备。我遇到了一些需要处理的例外情况。

我在运行时传递了用户名。

1-在运行时传递已禁用的用户名

python mfa.py John 

botocore.errorfactory.NoSuchEntityException: An error occurred (NoSuchEntity) when calling the DeactivateMFADevice operation: MFA Device invalid for user.

2。传递了错误的用户名

python mfa.py John.d  

botocore.errorfactory.NoSuchEntityException: An error occurred (NoSuchEntity) when calling the DeactivateMFADevice operation: The user with name John.d cannot be found.

如何处理这两个错误,因为两个异常都是

的一部分

botocore.errorfactory.NoSuchEntityException

我该如何在不同的异常中处理这两者,以便我可以

  

打印(“ MFA已被禁用”)

OR

  

print(“无效的用户名”)

1 个答案:

答案 0 :(得分:0)

这可以通过遍历异常响应字典来实现。

尝试:

 except client.exceptions.NoSuchEntityException as e:
      print(dir(e))

您可以找到可传递以处理异常的值集:

  

['MSG_TEMPLATE','原因','课程','上下文',   ' delattr ',' dict ',' dir ',' doc ',' eq < / strong>,   “ 格式”,“ ge ”,“ 获取属性”,“ gt ”,“ 哈希< / strong>,   ' init ',' init_subclass ',' le ',' lt ','模块< / strong>,   “ ne ”,“ ”,“ 减少”,“ reduce_ex ”,“ 重复< / strong>,   ' setattr ',' setstate ',' sizeof ',' str ',   “ 子类挂钩”,“ suppress_context ”,“ 回溯”,   '弱引用”,“ _ get_retry_info”,“ args”,“ operation_name”,   'response','with_traceback']

以上情况可以通过以下方法处理:

 except client.exceptions.NoSuchEntityException as e:

   if e.response['Error']['Message'] == 'MFA Device invalid for user.':

       print('#something')

   elif e.response['Error']['Message'] == 'The user with name {} cannot be found.'.format(UserName):

       print('#something')

因此处理了该异常。