Подтвердить что ты не робот

Исключение Amazon S3: "указанный ключ не существует"

Я использую AmazonS3Client в приложении для Android, используя запрос getObject для загрузки изображения из своего ковша Amazon S3.

В настоящее время я получаю это исключение:

com.amazonaws.services.s3.model.AmazonS3Exception: 
The specified key does not exist.
 (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey;

Даже если я могу видеть объект с указанным ключом в своем ведре S3.

4b9b3361

Ответ 1

Ну, эта ошибка на самом деле довольно прямолинейна. это просто означает, что ваш файл не существует в корзине S3. Несколько вещей могут быть неправильными:

  1. Возможно, вы пытаетесь сослаться не на тот файл. Дважды проверьте путь, который вы пытались получить.

  2. Всякий раз, когда файл был загружен, он должен был потерпеть неудачу. Проверьте журналы для вашего процесса S3Sync, чтобы увидеть, можете ли вы найти какой-либо соответствующий вывод

Источник

Ответ 2

Для меня объект определенно существовал и был загружен правильно, однако его s3-url все равно бросает ту же ошибку:

<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>

Я узнал, что причина в том, что мое имя файла содержало символ #, и я думаю, что некоторые символы или символы также вызовут эту ошибку.

Удаление этого символа и создание нового s3-url разрешили мою проблему.

Ответ 3

Обратите внимание, что это может произойти, даже если путь к файлу указан правильно из-за возможной модели согласованности s3 eventual. В принципе, может быть некоторая задержка в возможности прочитать объект после его записи. Смотрите эту документацию для получения дополнительной информации.

Ответ 4

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

Я решил его, переместив все файлы за пределы папки прямо в контейнер.

Ответ 5

Причина ошибки неправильная или опечатка в названии Bucket/Key. Проверьте, существует ли ведро или имя ключа, которое вы предоставляете.

Ответ 6

Не забывайте, что ведра зависят от региона. Это может быть проблемой.

Также попробуйте с помощью консоли S3 перейти к реальному объекту, а затем нажмите Copy Path, вы получите что-то вроде:

s3://<bucket-name>/<path>/object.txt

Пока все, что вы передаёте на правильные разборы, я считаю, что это безопаснее всего.