使用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(“无效的用户名”)
答案 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')
因此处理了该异常。