Saltar al contenido

¿Cómo puedo solucionar el error 404 NoSuchKey de Amazon S3?

4 minutos de lectura
0

Cuando los usuarios intentan acceder a los objetos de mi bucket de Amazon Simple Storage Service (Amazon S3), reciben un error 404 NoSuchKey.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Amazon S3 puede devolver errores 404 si el bucket no contiene el objeto solicitado. Antes de que los usuarios realicen solicitudes GET o HEAD para un objeto, comprueba que el objeto esté disponible en tu bucket de directorio de S3 o en tu bucket de uso general.

Nota: La solución que se describe en este artículo solo se aplica a los buckets de directorio de Amazon S3 y a los buckets de uso general.

Para comprobar si un objeto está disponible en un bucket, revisa el contenido del bucket en cuestión desde la consola de Amazon S3. También puedes usar el comando head-object de la Interfaz de la línea de comandos de AWS (AWS CLI):

aws s3api head-object --bucket awsexamplebucket --key object.jpg

Nota: Sustituye awsexamplebucket por el nombre de tu bucket y object.jpg por el nombre de tu objeto.

Amazon S3 ofrece una sólida coherencia de lectura después de escritura para todas las aplicaciones. Tras escribir, sobrescribir o eliminar un objeto, cualquier solicitud de lectura recibe inmediatamente la versión más reciente del objeto. Amazon S3 también proporciona una gran coherencia para las operaciones de lista. Después de escribir, puedes obtener una lista de los objetos de un bucket. Para obtener más información sobre la coherencia de Amazon S3, consulta Amazon S3 Strong Consistency (Gran coherencia de Amazon S3).

Si el objeto solicitado está disponible en el bucket de S3 y vuelve a aparecer el error "404 NoSuchKey", comprueba lo siguiente:

  • Confirma que la solicitud coincida exactamente con el nombre del objeto. Las solicitudes de objetos de S3 distinguen entre mayúsculas y minúsculas. Por ejemplo, si un objeto se llama myimage.jpg, pero se solicita Myimage.jpg, el solicitante recibe un error "404 NoSuchKey".

  • Confirma que la ruta solicitada coincida con la ruta del objeto. De lo contrario, el solicitante recibirá un error "404 NoSuchKey".

  • Si la ruta del objeto contiene espacios, asegúrate de que la solicitud utilice la sintaxis correcta para reconocer la ruta. Por ejemplo, si utilizas AWS CLI para descargar un objeto a tu equipo Windows, deberás utilizar comillas en la ruta del objeto. La ruta del objeto debe ser similar a la del ejemplo siguiente:

    aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk"

    Nota: Sustituye la ruta del objeto por la ruta del objeto.

  • Comprueba si el nombre del objeto contiene caracteres especiales o codificados en URL que sean difíciles de ver, como saltos de línea (\r) o líneas nuevas (\n). Por ejemplo, el nombre de objeto test con un salto de línea al final aparece como test%0A en la consola de Amazon S3. Para comprobar si hay caracteres especiales en los nombres de los objetos, usa el comando list-objects-v2 con el parámetro --output json. La salida JSON hace visibles caracteres como los saltos de línea (\r). Si el nombre de un objeto tiene un carácter especial que no está visible, elimínalo del nombre del objeto. Intenta volver a acceder al objeto.

  • (Opcional) Puedes activar el registro de acceso al servidor para revisar los registros de solicitudes con más detalle y detectar problemas que puedan provocar un error "404 NoSuchKey".

Nota: Si falta un objeto en el bucket y el solicitante no tiene acceso a s3:ListBucket, el solicitante recibirá un error "403 Access Denied". Si recibes un error "403 Access Denied", resuelve el problema relacionado con el objeto que falta.

Información relacionada

Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3