在S3存储桶中的子文件夹中的图像上调用index_faces

时间:2019-09-17 07:56:47

标签: amazon-s3 amazon-rekognition

我正在尝试使用index_faces从图像中提取面孔。图像位于s3存储桶“ wedinjoy-events-images”内的文件夹中。

bucket = 'wedinjoy-events-images'
my_bucket = s3.Bucket(bucket) 
try:

        random_id = str(uuid.uuid1())
        create_collection(random_id)
        for i, s3_object in enumerate(my_bucket.objects.all()):
        if s3_object.key.startswith("45c48cce2e2d7fbdea1afc51c7c6ad26"):
            path, filename = os.path.split(s3_object.key)
            print (s3_object)
            print (path, filename)
            face_result, unface_result = index_faces(random_id, bucket, 
                                         str(s3_object.key), str(s3_object.key).split("/")[1])

except Exception as e:
         print("It has error", str(e))
         pass

我收到以下错误,因为我的图像位于存储桶中的文件夹中,因此具有正斜杠。 示例图片网址:https://wedinjoy-events-images.s3.ap-south-1.amazonaws.com/45c48cce2e2d7fbdea1afc51c7c6ad26/f2346e354a4e398fdf322956eefe4889

  调用IndexFaces操作时

(ValidationException):1   检测到验证错误:值   “ 45c48cce2e2d7fbdea1afc51c7c6ad26/7d52f78a8de4a8689e4a803686485d74”位于   'externalImageId'无法满足约束:成员必须满足   正则表达式模式:[a-zA-Z0-9_.\-:]+

1 个答案:

答案 0 :(得分:0)

来自Boto 3文档:

  

ExternalImageId 字符串)-您要分配给图像中检测到的所有面部的ID。

这不应该是S3对象的键,但是您已将其设置为str(s3_object.key)。该ID不能包含反斜杠字符。查看文档Skim