gpt4 book ai didi

python - 捕获 boto3 ClientError 子类

转载 作者:太空狗 更新时间:2023-10-29 16:52:59 24 4
gpt4 key购买 nike

使用如下代码片段,我们可以捕获 AWS 异常:

from aws_utils import make_session

session = make_session()
cf = session.resource("iam")
role = cf.Role("foo")
try:
role.load()
except Exception as e:
print(type(e))
raise e

返回的错误类型为 botocore.errorfactory.NoSuchEntityException。但是,当我尝试导入此异常时,我得到了:

>>> import botocore.errorfactory.NoSuchEntityException
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named NoSuchEntityException

我能找到的捕获此特定错误的最佳方法是:

from botocore.exceptions import ClientError
session = make_session()
cf = session.resource("iam")
role = cf.Role("foo")
try:
role.load()
except ClientError as e:
if e.response["Error"]["Code"] == "NoSuchEntity":
# ignore the target exception
pass
else:
# this is not the exception we are looking for
raise e

但这看起来很“hackish”。有没有办法在boto3中直接导入并捕获ClientError的特定子类?

编辑:请注意,如果您以第二种方式捕获错误并打印类型,它将是 ClientError

最佳答案

如果您使用的是 client你可以像这样捕获异常:

import boto3

def exists(role_name):
client = boto3.client('iam')
try:
client.get_role(RoleName='foo')
return True
except client.exceptions.NoSuchEntityException:
return False

关于python - 捕获 boto3 ClientError 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com