Невозможно получить метаданные объекта от S3. Проверьте ключ объекта, регион и / или права доступа в aws Rekognition

import boto3

if __name__ == "__main__":

    bucket='MyBucketName'
sourceFile='pic1.jpg'
targetFile='pic2.jpg'

client=boto3.client('rekognition','us-east-1')

response=client.compare_faces(SimilarityThreshold=70,
                              SourceImage={'S3Object':{'Bucket':bucket,'Name':sourceFile}},
                              TargetImage={'S3Object':{'Bucket':bucket,'Name':targetFile}})

for faceMatch in response['FaceMatches']:
    position = faceMatch['Face']['BoundingBox']
    confidence = str(faceMatch['Face']['Confidence'])
    print('The face at ' +
           str(position['Left']) + ' ' +
           str(position['Top']) +
           ' matches with ' + confidence + '% confidence')

Я пытаюсь сравнить два изображения, присутствующие в моем ведре, но независимо от того, какой регион я выбираю, я всегда получаю следующую ошибку: -

botocore.errorfactory.InvalidS3ObjectException: произошла ошибка (InvalidS3ObjectException) при вызове операции CompareFaces: невозможно получить метаданные объекта из S3. Проверьте ключ объекта, регион и / или права доступа.

Регион моего ведра - us-east-1, и я настроил то же самое в своем коде. Что я делаю неправильно?


person Harsh Vardhan Parashar    schedule 04.05.2018    source источник
comment
Вы нашли решение этого? Я получаю ту же ошибку с моей корзиной, хотя та же лямбда успешно работает с другой корзиной, созданной с помощью aws rekognition.   -  person Noura    schedule 02.07.2018
comment
Этот код у меня сейчас работает, я ничего не менял, он просто начал работать, когда я его развернул.   -  person Harsh Vardhan Parashar    schedule 05.07.2018
comment
Я подумал, что роль была назначена другому ведру. Теперь работает.   -  person Noura    schedule 10.07.2018
comment
Не могли бы вы подробнее рассказать, как вы ее решили? Это своего рода общая проблема   -  person Juan    schedule 01.11.2018


Ответы (8)


У меня такая же проблема. Чтобы исправить это, я переставил свое ведро и папки. Убедитесь, что ваше изображение находится прямо в вашем ведре, а не в папке в вашем ведре. Также дважды проверьте правильность названий изображений и все в порядке.

person Sean Li    schedule 25.11.2018
comment
Да, я обнаружил, что имена ведра, а также файлы, хранящиеся в нем, чувствительны к регистру, т.е. hello! = Hello. Глупая ошибка. - person Harsh Vardhan Parashar; 08.01.2019
comment
Или, если у вас есть папка, укажите полный путь к объекту: path/to/my/object.ext - person Guillermo Gutiérrez; 10.12.2019

Убедитесь, что S3 и Image Rekognition находятся в одном регионе, я знаю, это некрасиво или задокументировано (я думаю), но эти ребята говорят об этом здесь и здесь

person Italo José    schedule 11.05.2020

Убедитесь, что регион bucket совпадает с регионом вызывающего абонента. Если вы используете AWS CLI, обязательно укажите профиль с соответствующим регионом.

person Tejas Mahale    schedule 23.04.2020

Мне кажется, что у вас недостаточно прав с этими access_key и secret_key! Если учетные данные относятся к пользователю IAM, убедитесь, что у пользователя IAM есть разрешение на выполнение операций чтения Rekognition compare_faces и операций чтения s3! Также проверьте правильность ключей исходного и целевого объекта s3. И лучше создать роли с необходимыми разрешениями и предположить, что эта роль запрашивает временные учетные данные безопасности вместо использования постоянных ключей доступа.

person Manoj Acharya    schedule 04.05.2018
comment
Я предоставил пользователю доступ с правами администратора и Rekognition. Я создал роли, но не уверен в них. Пожалуйста, направь меня - person Harsh Vardhan Parashar; 05.05.2018

Это случилось со мной, используя sdk AWS rekognition для Android, проблема заключалась в том, что область ведра S3 не совпадает в моем запросе, поэтому мне пришлось указать правильный регион в запросе (так же, как корзина S3):

 rekognitionClient.setRegion(Region.getRegion(Regions.US_WEST_1));//replace with your S3 region
person Mohammed Fathi    schedule 16.09.2020

Перед компиляцией убедитесь, что конфигурация переменной среды AWS AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY в вашем скрипте

person Venkatesh Kuppusamy    schedule 04.05.2018
comment
не могли бы вы уточнить? я новичок - person Harsh Vardhan Parashar; 04.05.2018
comment
хорошо, я установил учетные данные, получив правильные ключи доступа от aws, но он все еще показывает ту же проблему. - person Harsh Vardhan Parashar; 04.05.2018
comment
как вы запускаете свой скрипт python.? Что выводят ваши строки ниже ..? Пожалуйста, проверьте print(os.environ['AWS_SECRET_ACCESS_KEY']) print(os.environ['AWS_ACCESS_KEY_ID']) - person Venkatesh Kuppusamy; 04.05.2018
comment
я просто изменил значения ключей через командную строку, используя aws configure - person Harsh Vardhan Parashar; 04.05.2018
comment
Это хорошо. Затем проверьте роли s3 в консоли AWS. Доступ к сегменту S3 для определенной роли IAM - person Venkatesh Kuppusamy; 04.05.2018

Также столкнулся с этой проблемой, заметил, что моя роль IAM имела имя корзины в качестве ресурса, мне пришлось добавить косую черту и подстановочный знак в конце. изменил его на "Ресурс": "arn: aws: s3 ::: / *"

person Jeffrey DeMuth    schedule 04.03.2020

Для меня сработало изменение прав доступа к файлам в ведре S3.

person Gennaro    schedule 15.03.2021