python boto3: AWS Rekognition не может получить доступ к корзине S3

Я пытаюсь загрузить изображение на S3, а затем заставить AWS Rekognition получить его с S3 для распознавания лиц, но Rekognition не может этого сделать.

Вот мой код - загрузка, а затем обнаружение:

import boto3

s3 = boto3.client('s3')
s3.put_object(
    ACL='public-read',
    Body=open('/Users/1111/Desktop/kitten800300/kitten.jpeg', 'rb'),
    Bucket='mobo2apps',
    Key='kitten_img.jpeg'
)

rekognition = boto3.client('rekognition')

response = rekognition.detect_faces(
    Image={
        'S3Object': {
            'Bucket': 'mobo2apps',
            'Name': 'kitten_img.jpeg',
        }
    }

)

это выдает ошибку:

Unable to get object metadata from S3. Check object key, region and/or access permissions.

Это почему?

О разрешениях: я авторизован ключами корневого доступа AWS, поэтому у меня есть полный доступ ко всем ресурсам.


person kurtgn    schedule 31.08.2019    source источник
comment
kitten_img.jpeg успешно загружается в корзину mobo2apps?   -  person LiuChang    schedule 31.08.2019
comment
@LiuChang, да, вот оно: mobo2apps.s3.amazonaws.com/kitten_img.jpeg   -  person kurtgn    schedule 31.08.2019
comment
Поскольку объект существует, если вы попробуете запустить на нем rekognition.detect_faces сейчас (т.е. прокомментируете часть загрузки вашего кода), сработает ли он?   -  person hephalump    schedule 01.09.2019
comment
@kurtgn, если вам понравился ответ, и он сработал для вас, пожалуйста, одобрите его и проголосуйте за него, а также за рекомендации Stack Overflow. Спасибо.   -  person abdullahkhawer    schedule 23.09.2020


Ответы (2)


Вот несколько вещей, которые вы можете сделать:

  1. Убедитесь, что область корзины S3 совпадает с областью распознавания. В противном случае это не сработает. Служба S3 является глобальной, но каждая корзина создается в определенном регионе. Тот же регион должен использоваться клиентами AWS.
  2. Убедитесь, что ключи доступа к ресурсу имеют правильный набор разрешений.
  3. Убедитесь, что файл действительно загружен.
  4. Убедитесь, что не применяется политика корзины, которая отменяет доступ.
  5. Вы можете включить ведение журнала в своей корзине S3, чтобы увидеть ошибки.
  6. Убедитесь, что ведро не версионное. Если используется версия, укажите версию объекта.
  7. Убедитесь, что для объекта определен правильный набор ACL.
  8. Если объект зашифрован, убедитесь, что у вас есть разрешение на использование этого ключа KMS для расшифровки объекта.
person abdullahkhawer    schedule 02.09.2019
comment
разные регионы для меня - person Jacob Solawetz; 28.05.2020

Вам нужно немного подождать, пока загрузка изображения не будет завершена.

Код работает без сбоев, поэтому ваш jpeg начинает загружаться, и еще до того, как загрузка будет завершена, Rekognition начинает обнаруживать лицо на изображении. Поскольку загрузка не завершена, когда код запускается, он не может найти объект с вашего S3. Поставьте немного времени ожидания.

person Lamanus    schedule 01.09.2019
comment
я ждал уже 24 часа, и это не помогло - person kurtgn; 02.09.2019
comment
ваш файл виден на S3? - person Lamanus; 02.09.2019