Cuando hago una solicitud a Amazon Simple Storage Service (Amazon S3), Amazon S3 devuelve un error de estado 5xx.
Descripción corta
Al realizar una solicitud a Amazon S3, es posible que recibas un mensaje de error similar al de los siguientes ejemplos:
- "AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D)"
- "AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D)"
El mensaje de error "500 Internal Error" aparece cuando Amazon S3 no puede administrar la solicitud en ese momento. El mensaje de error "503 Slow Down" suele aparecer cuando el bucket de S3 recibe un número elevado de solicitudes. Puedes enviar 3500 solicitudes PUT/COPY/POST/DELETE o 5500 solicitudes GET/HEAD por segundo por cada prefijo particionado de Amazon S3. Sin embargo, Amazon S3 podría enviar una respuesta "503 Slow Down" si tus solicitudes superan el ancho de banda disponible para copiar en todas las regiones de AWS.
Para resolver o evitar los errores de estado 5xx, haz lo siguiente:
- Para la aplicación que realiza las solicitudes, utiliza un mecanismo de reintento.
- Configura la aplicación para aumentar gradualmente las tasas de solicitudes.
- Distribuye los objetos entre varios prefijos.
- Supervisa el número de respuestas de error 5xx.
Nota: Cuando creas un prefijo, Amazon S3 no asigna automáticamente recursos adicionales para la tasa de solicitudes admitida. Amazon S3 escala en función de los patrones de solicitud. A medida que aumenta la tasa de solicitudes, Amazon S3 se optimiza dinámicamente para la nueva tasa de solicitudes.
Resolución
Usar un mecanismo de reintento
Debido a la naturaleza distribuida de Amazon S3, puedes volver a intentar las solicitudes que devuelven los errores 500 o 503. Se recomienda crear una lógica de reintento en las aplicaciones que realizan solicitudes a Amazon S3. Los SDK de AWS tienen un mecanismo de reintento incorporado.
Nota: En algunos casos, las solicitudes rápidas y simultáneas a la misma clave pueden generar una respuesta 503. En estos casos, se recomienda volver a intentar las solicitudes fallidas.
Configuración de la aplicación para aumentar las tasas de solicitudes de forma gradual
Una tasa de solicitudes alta o un aumento repentino de la tasa de solicitudes de un objeto pueden provocar el mensaje de error "503 Slow Down". Configura tu aplicación para mantener la tasa de solicitudes e implementar un reintento con un retraso exponencial. El retroceso exponencial implementa tiempos de espera cada vez más prolongados entre reintentos para las respuestas de error consecutivas. Esta configuración le da tiempo a Amazon S3 para supervisar los patrones de solicitudes y desescalar horizontalmente el backend para administrar la tasa de solicitudes.
En primer lugar, configura tu aplicación para que comience con una tasa de solicitudes de transacciones por segundo más baja. A continuación, aumenta exponencialmente la tasa de solicitudes de la aplicación. Amazon S3 escala automáticamente para administrar una tasa de solicitudes más alta.
Distribución de los objetos entre varios prefijos
Las tasas de solicitud se aplican por prefijo en un bucket de Amazon S3. Para configurar tu bucket para administrar tasas de solicitudes más altas, distribuye los objetos en varios prefijos. Por ejemplo, si usas un bucket de Amazon S3 para almacenar imágenes y vídeos, distribuye los archivos en dos prefijos:
- mybucket/images
- mybucket/videos
Si la tasa de solicitudes de los prefijos aumenta gradualmente, Amazon S3 se escala verticalmente para administrar las solicitudes de cada prefijo por separado. Como resultado, el bucket puede administrar el doble de la tasa de solicitudes.
Supervisión del número de respuestas de error de estado 5xx
Para controlar el número de respuestas de error de estado 5xx que recibes, usa una de estas opciones:
Solución de otros problemas
Al usar la opción Acelerada para recuperar objetos archivados, es posible que recibas uno de los siguientes mensajes de error:
- "GlacierExpeditedRetrievalNotAvailable"
- "Glacier expedited retrievals are currently not available, please try again later"
Estos problemas se producen si no hay suficiente capacidad para procesar la solicitud RestoreObject acelerada. Durante un periodo de alta demanda sostenida, Amazon S3 podría denegar las solicitudes de recuperación acelerada y arrojar un mensaje de error 503. Usa unidades de capacidad aprovisionadas para asegurarte de que haya capacidad de recuperación acelerada disponible bajo demanda. Puedes realizar al menos tres recuperaciones aceleradas cada 5 minutos para cada unidad. Cada unidad proporciona hasta 150 MBps de rendimiento de recuperación. También puedes usar las opciones de recuperación Estándar o Masiva.
Puedes volver a intentar la recuperación. Sin embargo, es posible que aún tengas problemas. Excepto en casos de demanda extrema, las recuperaciones aceleradas son posibles sin capacidad aprovisionada. Debido al cambio constante y a la alta demanda de disponibilidad de recuperación acelerada a partir de capacidad no aprovisionada, no existe un SLA de recuperación acelerada.
Si sigues recibiendo un porcentaje elevado de errores de estado 5xx, ponte en contacto con AWS Support. Incluye varios pares de identificadores de solicitud de Amazon S3 para las solicitudes que fallaron con un código de error de estado 5xx.
Información relacionada
Uso de métricas de S3 Storage Lens para mejorar el rendimiento
Supervisión de métricas con Amazon CloudWatch