をboto3キャッチする、私たちは、AWSの例外をキャッチすることができます:ClientErrorサブクラス以下のスニペットのようなコードで
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
しかし、これは非常に「ハック」と思われます。 boto3にClientError
という特定のサブクラスを直接インポートして捕捉する方法はありますか?
EDIT:2番目の方法でエラーを検出し、そのタイプを印刷すると、ClientError
になることに注意してください。あなたはclientあなたはこのような例外をキャッチすることができます使用している場合