【发布时间】:2017-09-12 10:46:09
【问题描述】:
我正在开发一个与多个亚马逊网络服务通信的 django 应用程序。
到目前为止,我无法处理和捕获 boto3 客户端抛出的异常。我正在做的事情似乎不必要地乏味:
例子:
client = boto3.client('sns')
client.create_platform_endpoint(PlatformApplicationArn=SNS_APP_ARN, Token=token)
这可能会抛出botocore.errorfactory.InvalidParameterException,例如令牌坏了。
client.get_endpoint_attributes(EndpointArn=endpoint_arn)
可能会抛出botocore.errorfactory.NotFoundException。
首先,我在代码中的任何地方都找不到这些错误,因此它们可能是在某处生成的。底线:我无法像往常一样导入并捕获它。
其次,我找到了一种捕获错误here的方法:
try:
# boto3 stuff
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == 'NotFound':
# handle exception
else:
raise e
但我必须删除错误名称的Exception 部分。似乎很随机,如果我想抓住那个,我不知道是否会删除botocore.exceptions.ParamValidationError 中的Error。所以很难一概而论。
捕获错误的另一种方法是使用我得到的 boto3 客户端对象:
try:
# boto3 stuff
except client.exceptions.NotFoundException as e:
# handle exception
这似乎是迄今为止最干净的方式。但我并不总是手头有想要捕获错误的 boto3 客户端对象。此外,我仍然只是在尝试,所以主要是猜测工作。
有人知道应该如何处理 boto3 错误吗?
或者可以向我指出一些提到上述错误的连贯文档?谢谢
【问题讨论】:
-
这是我看的第一个地方,请再读一遍我的第一点。错误不会出现在代码中的任何地方!
-
已有关于非常相似主题的讨论,可能有用:stackoverflow.com/questions/33068055/…
-
这能回答你的问题吗? How to handle errors with boto3?
标签: python amazon-web-services exception boto3