одна вещь, которую вы можете сделать, это вместо прямого вызова Rekognition api через ваш код javascript, загрузить свое изображение на s3 и сделать это загрузкой триггера для лямбда-функции, написанной на python, лямбда-функция будет содержать код сравнения, а затем сохранить Ответ в таблице DynamodB в качестве места буфера, затем получить данные из DynamodB и использовать их, как вы хотите.
это выглядит длительной процедурой, но поверьте мне, я тоже ее использую, и она довольно проста и дает нам преимущество в том, что обработка выполняется в бэкэнде в стороне от наивного пользователя.
вот пример кода сравнения:
импорт boto3
импорт io
из PIL import Image
rekognition = boto3.client('rekognition', region_name='eu-west-1')
dynamodb = boto3.client('dynamodb', region_name='eu-west-1')
image = Image.open("group1.jpeg")
stream = io.BytesIO()
image.save(stream,format="JPEG")
image_binary = stream.getvalue()
response = rekognition.search_faces_by_image(
CollectionId='family_collection',
Image={'Bytes':image_binary}
)
for match in response['FaceMatches']:
print (match['Face']['FaceId'],match['Face']['Confidence'])
face = dynamodb.get_item(
TableName='family_collection',
Key={'RekognitionId': {'S': match['Face']['FaceId']}}
)
if 'Item' in face:
print (face['Item']['FullName']['S'])
else:
print ('no match found in person lookup')