Introducción
El 30 de junio de 2026, Amazon Linux 2 (AL2) llegó a su fin de vida, leaving sin soporte oficial a las funciones de AWS Lambda que aún lo utilicen. Para los equipos que ejecutan runtime de Java 8, 11 o 17 en AL2, esto representaba un problema: migrar a Amazon Linux 2023 (AL2023) implicaba, hasta ahora, actualizar también la versión de Java. AWS resolvió este conflicto anunciando soporte para Java 8, 11 y 17 sobre AL2023, tanto como runtimes gestionados como imágenes base para contenedores.
Qué ocurrió
AWS habilitó los runtime de Java 8, 11 y 17 en Amazon Linux 2023 para Lambda, permitiendo que las funciones existentes migren desde AL2 a AL2023 sin cambiar la versión de Java. Esta actualización está disponible en todas las regiones donde opera Lambda, incluyendo GovCloud (US) y China. La medida busca facilitar la transición antes del fin de soporte de AL2, que ya no recibe parches de seguridad ni actualizaciones.
La recomendación oficial de AWS es migrar a Java 21 o Java 25 sobre AL2023, por las mejoras en rendimiento y características del lenguaje. Sin embargo, para equipos que no pueden actualizar el versionado de Java en el corto plazo, los nuevos runtime (8, 11, 17) en AL2023 ofrecen una vía intermedia. Además, AWS extendió el soporte para los runtime basados en AL2 de Java 8, 11 y 17 hasta el 30 de junio de 2027, dando un año adicional para completar la migración.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para los equipos de DevOps e Infraestructura, este cambio reduce la complejidad de migrar funciones Lambda desde AL2 a AL2023. Antes, la actualización de la base del sistema operativo requería coordinar con los equipos de desarrollo para subir la versión de Java, lo que podía introducir riesgos de compatibilidad en aplicaciones legacy. Ahora, la migración a AL2023 puede hacerse de forma independiente, usando el mismo runtime de Java.
Desde el punto de vista de Seguridad, el fin de vida de AL2 implica que, a partir del 1 de julio de 2026, no se publicarán parches para vulnerabilidades críticas en el sistema operativo. Las funciones que permanezcan en AL2 quedarán expuestas a riesgos como CVE-2021-4034 (pkexec) o CVE-2023-32615 (kernel), que afectaron a versiones anteriores de Amazon Linux. Al migrar a AL2023, las funciones se benefician de parches de seguridad continuos y del kernel 5.14, con mitigaciones para vulnerabilidades como Spectre y Meltdown.
Para Cloud, la uniformidad en AL2023 simplifica la gestión de imágenes y dependencias. AL2023 incluye versiones más recientes de packages (como OpenSSL 3.0.7 y glibc 2.34), lo que puede resolver problemas de compatibilidad con librerías nativas. Además, las imágenes base para contenedores (disponibles en Amazon ECR Public) permiten personalizar el entorno de ejecución sin mantener infraestructura adicional.
Detalles técnicos
Los nuevos runtime de Java en AL2023 son identificados por los siguientes sufijos en la configuración de Lambda:
java8.al2023java11.al2023java17.al2023
Estos replace a los anteriores java8, java11 y java17, que están basados en AL2. La tabla below detalla las versiones específicas de Java incluidas:
| Runtime | Versión de Java | Versión de Amazon Corretto |
|---|---|---|
| Java 8 | 8.0.402 | 1.35.19.1 |
| Java 11 | 11.0.20 | 1.18.22.1 |
| Java 17 | 17.0.10 | 19.0.26.1 |
public.ecr.aws/lambda/java:8public.ecr.aws/lambda/java:11public.ecr.aws/lambda/java:17
Estas imágenes incluyen el runtime de Lambda y el JRE de Amazon Corretto, optimizado para entornos serverless. El tamaño de las imágenes es aproximadamente 30% menor que las basadas en AL2, gracias a la limpieza de packages obsoleto.
Para verificar la versión de Amazon Linux en una función Lambda, se puede usar el siguiente código en el handler:
import java.io.IOException;
import java.util.Map;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaRuntimeCheck implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
String osName = System.getProperty("os.name");
String osVersion = System.getProperty("os.version");
return String.format("OS: %s (Version: %s)", osName, osVersion);
}
}Al ejecutar la función, el resultado será OS: Linux (Version: 5.10.203) para AL2 o OS: Linux (Version: 5.14.0) para AL2023.
Qué deberían hacer los administradores y equipos técnicos
1. Inventariar funciones afectadas
Identifiquen todas las funciones Lambda que usen Java 8, 11 o 17 en AL2. Pueden hacerlo con la AWS CLI:
aws lambda list-functions --query "Functions[?Runtime=='java8' || Runtime=='java11' || Runtime=='java17']"Incluyan en el inventario las funciones que usen imágenes personalizadas basadas en AL2.
2. Planificar la migración
- Opción recomendada: Migrar a Java 21 o 25 en AL2023. AWS ofrece la herramienta AWS Transform para automatizar la actualización de código. Java 21 incluye mejoras como Virtual Threads (JEP 444) y Performance Optimizations for Java (JEP 469), que pueden reducir el costo de Lambda entre un 10% y 20% por mejora en cold starts.
- Opción intermedia: Migrar a Java 8, 11 o 17 en AL2023. Esto requiere solo cambiar el runtime en la configuración de la función:
aws lambda update-function-configuration \
--function-name mi-funcion \
--runtime java11.al2023
Para funciones con imágenes personalizadas, reconstruyan el contenedor usando las nuevas imágenes base.
3. Validar compatibilidad
Testeen las funciones migradas en un entorno de staging. Presten atención a:
- Dependencias nativas (como
.sofiles) que puedan ser incompatibles con AL2023. - Librerías que asuman paths específicos de AL2 (ej: `/usr/lib/jvm/java-11-amazon-corretto/x86_64/dyn560/)。
- Comportamiento de seguridad: AL2023 deshabilita TCP timestamp por defecto (mitigación para CVE-2022-2485), lo que puede afectar aplicaciones que dependan de esta feature.
4. Actualizar herramientas de CI/CD
Modifiquen los pipelines de despliegue para usar los nuevos runtime o imágenes base. Por ejemplo, en un template.yaml de AWS SAM:
Resources:
MiFuncion:
Type: AWS::Serverless::Function
Properties:
Runtime: java11.al2023
# ...5. Monitorear y depurar
Tras la migración, configuren alarmas para métricas clave como errores, throttles y duración de ejecución. Usen AWS X-Ray para identificar posibles regressions en rendimiento.
6. Planificar la actualización a Java 21/25
Even si optan por la migración intermedia, programen la actualización a Java 21 o 25. AWS podría dejar de soportar Java 8, 11 y 17 en AL2023 en el futuro. Java 8, en particular, no recibirá parches públicos después de junio de 2027 (fin de soporte extendido de Amazon Corretto).
Conclusión
La Soporte de Java 8, 11 y 17 en Amazon Linux 2023 elimina una barrera clave para migrar funciones Lambda desde AL2, permitiendo separar la actualización del sistema operativo de la del lenguaje. Para los equipos, esto significa más flexibilidad y menos riesgos de compatibilidad. Sin embargo, la recomendación a largo plazo es claro: migrar a Java 21 o 25 para aprovechar las mejoras en rendimiento, seguridad y características del lenguaje. Con el soporte de AL2 extendido hasta julio de 2027, hay tiempo para planificar la transición, pero no hay excusas para postergar la migración a AL2023.
Fuentes
- https://aws.amazon.com/about-aws/whats-new/2026/07/aws-lambda-java-amazon-linux/
- https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html