Boto3 InvalidParameterException

时间:2017-01-25 23:30:00

标签: python python-3.x boto3

我有一些调用AWS的Rekognition服务的代码。有时会抛出这个异常:

An error occurred (InvalidParameterException) when calling the DetectLabels operation: Request has Invalid Parameters

但是,我无法在文档或代码中的任何位置找到InvalidParameterException,因此我无法在发生这种情况时编写特定的处理程序。有谁知道该例外的库模块是什么?

5 个答案:

答案 0 :(得分:3)

我在boto/cognito/identity/exceptions.py找到了它:

from boto.exception import BotoServerError

class InvalidParameterException(BotoServerError):
    pass

答案 1 :(得分:0)

在Python3中使用boto3,你可以这样做:

from botocore.exceptions import ClientError

catch ClientError as e:

答案 2 :(得分:0)

这是AWS的一个误导性错误,当源图像不包含任何可检测到的脸部时会发生此错误。确保您的源图像有可检测到的面孔。

答案 3 :(得分:0)

如果您在响应调用search_faces_by_image时看到了此异常,则可能表明您提供的图像中没有可检测到的面孔。您可以在API_SearchFacesByImage上查看可能的例外列表。

要处理此异常,可以编写如下代码:

import boto3
rek = boto3.client('rekognition')

def lookup_faces(image, collection_id):
    try:
        faces = rek.search_faces_by_image(
            CollectionId=collection_id,
            Image=image,
            FaceMatchThreshold=95
        )
        logger.info('faces detected: {}'.format(faces))
        return faces
    except rek.exceptions.InvalidParameterException as e:
        logger.debug('no faces detected')
        return None

答案 4 :(得分:0)

jarmod 的答案应该很完美,如果你使用 boto3。

要更明确地回答有关 InvalidParameterException 所在位置(在 boto3 中)的问题:可以通过 boto3 rekognition 客户端的类实例访问它:

import boto3
client = boto3.client('rekognition')

现在,可以通过 client.exceptions.InvalidParameterException 访问异常(具体示例请参见 jarmod 的回答)。

Stéphane Bruckert 建议使用从 boto 导入的建议对我不起作用,因为使用此导入的特定处理程序似乎没有捕获异常(但我没有对其进行广泛测试)。