如何导入boto3 ssm ParameterNotFound异常?

zal*_*314 14 python amazon-web-services botocore boto3 moto

我想importexception是,当发生boto3 ssm不与发现的参数get_parameter.我正在尝试为库添加一些额外的ssm功能moto,但我在这一点上很难过.

>>> import boto3
>>> ssm = boto3.client('ssm')
>>> try:
        ssm.get_parameter(Name='not_found')
    except Exception as e:
        print(type(e))
<class 'botocore.errorfactory.ParameterNotFound'>
>>> from botocore.errorfactory import ParameterNotFound
ImportError: cannot import name 'ParameterNotFound'
>>> import botocore.errorfactory.ParameterNotFound
ModuleNotFoundError: No module named 'botocore.errorfactory.ParameterNotFound'; 'botocore.errorfactory' is not a package
Run Code Online (Sandbox Code Playgroud)

但是,Exception无法导入,并且似乎不存在于botocore代码中.如何导入此例外?

小智 17

mc = boto3.client('ssm')
try:
  ...
except mc.exceptions.ParameterNotFound:
  ...
Run Code Online (Sandbox Code Playgroud)


hel*_*loV 13

来自Botocore错误处理

import boto3
from botocore.exceptions import ClientError

ssm = boto3.client('ssm')
try:
    ssm.get_parameter(Name='not_found')
except ClientError as e:
    print e.response['Error']['Code']
Run Code Online (Sandbox Code Playgroud)

  • 从代码角度看,这并不难理解。从设计角度很难理解的是,您无法直接在boto3中从其调用堆栈名称中导入或命名错误。导入botocore.errorfactory.ResourceNotFoundException或botocore.errorfactory.ResourceNotFoundException除外。但是两者都是收到上述错误后立即想要尝试的。令人费解。 (2认同)