Lo que estoy tratando de hacer es capturar cualquier solicitud de archivo de imagen y verificar si esa imagen no existe, devolver una imagen diferente.
Estoy echando un vistazo a Lambda y Serverless Framework, pero no pude encontrar mucha información al respecto. ¿Es posible?
No hay ningún evento GetObject. Por favor, siga este enlace para obtener una lista de los eventos admitidos. S3 solo le notificará (o activará una función Lambda) cuando se cree, elimine o pierda un objeto debido a la redundancia reducida.
Por lo tanto, no es posible hacer exactamente lo que desea, pero tiene algunas alternativas.
Utilice Lambda@Edge para interceptar sus llamadas a una distribución de CloudFront que utilice un S3 como origen. Este interceptor podría ser capaz de enviar otro archivo si falta el solicitado. Esta no es una buena solución ya que aumentaría la latencia y los costos de su operación.
En lugar de ofrecer un punto final de S3 a sus clientes, ofrezca un punto final de API Gateway. En este caso, TODAS las solicitudes de imágenes serían procesadas por una función Lambda con la posibilidad de proporcionar otro archivo si falta el solicitado. Esta no es una buena solución ya que aumentaría la latencia y los costos de su operación.
Y la mejor opción , que puede funcionar, pero no lo he probado, es configurar una regla de redirección del depósito S3. Este es un caso de uso común para el alojamiento de sitios web estáticos donde una página no encontrada (código de estado 404) redirige a otra página (como page-not-found.html). En tu caso, podrías intentar redirigir a una dirección de una imagen predeterminada. Esta solución no usaría funciones de Lambda.