Funciones Serverless en PHP: AWS Lambda — guía práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Funciones Serverless en PHP: AWS Lambda — de la teoría a la práctica



El desarrollo web moderno se aleja cada vez más de los servidores monolíticos tradicionales en favor de la computación en la nube. La arquitectura Serverless (o "sin servidor") permite a los desarrolladores centrarse exclusivamente en el código, sin preocuparse por la gestión de la infraestructura. AWS Lambda es uno de los servicios más populares para implementar este enfoque. Sin embargo, durante mucho tiempo se creyó que PHP no era adecuado para serverless. Esto es un mito. En este artículo, analizaremos cómo ejecutar funciones PHP en AWS Lambda, qué herramientas se necesitan para ello y cómo optimizar el rendimiento.



¿Qué es AWS Lambda y cómo encaja PHP en él?



AWS Lambda es un servicio informático que ejecuta su código en respuesta a eventos y gestiona automáticamente los recursos informáticos. Usted paga solo por el tiempo de ejecución real y la cantidad de solicitudes. Lambda es compatible de forma nativa con Node.js, Python, Java, Go y .NET, pero PHP no está en esta lista "de fábrica". Sin embargo, esto no es un problema: podemos usar entornos de ejecución personalizados (Custom Runtime) o envoltorios ya preparados, como Bref.



Bref es un proyecto opensource que proporciona un Runtime listo para PHP en AWS Lambda, así como integración con frameworks (Laravel, Symfony). Con él, puede escribir manejadores de eventos, endpoints de API o incluso aplicaciones web completas que funcionen en modo serverless.



Componentes principales para ejecutar PHP en Lambda:

  • Bref Runtime — capa que contiene el intérprete de PHP y las extensiones necesarias.
  • Evento (Event) — desencadenante que ejecuta la función (solicitud HTTP, carga de archivo en S3, cambio en DynamoDB).
  • Manejador (Handler) — función PHP o método de clase que recibe y procesa el evento.


Configuración del entorno y primer ejemplo



Para trabajar necesitaremos Composer, Docker (para la compilación) y una cuenta de AWS. Instalemos Bref:



composer require bref/bref


Bref utiliza una imagen de Docker para pruebas locales y compilación. Después de la instalación, crearemos el archivo serverless.yml — la configuración para el despliegue en AWS Lambda.



Ejemplo de configuración serverless.yml:

service: my-php-function

provider: name: aws region: us-east-1 runtime: provided.al2

plugins: - ./vendor/bref/bref

functions: hello: handler: index.php layers: - ${bref:layer.php-81} events: - httpApi: 'GET /hello'


Ahora escribamos el manejador más simple — el archivo index.php:



<?php

require __DIR__ . '/vendor/autoload.php';

return function ($event) { $name = $event['queryStringParameters']['name'] ?? 'World'; return [ 'statusCode' => 200, 'body' => "Hello, $name!", ];};


Este código devuelve una respuesta JSON con un saludo. Para ejecutarlo localmente, usamos el comando:



vendor/bin/bref local hello


Despliegue y desencadenantes: de HTTP a S3



Después de la verificación local, podemos desplegar la función en la nube. Asegúrese de tener configuradas las credenciales de AWS (a través de AWS CLI o variables de entorno). Ejecute:



serverless deploy


En la consola verá la URL de su API Gateway (si configuró un desencadenante HTTP). Ahora puede acceder a la función a través del navegador o curl.



Otros desencadenantes populares para funciones PHP:

  • S3 Events — procesamiento de carga/eliminación de archivos.
  • SQS/SNS — procesamiento asíncrono de colas de mensajes.
  • CloudWatch Events — ejecución programada (cron).
  • DynamoDB Streams — reacción a cambios en

Blogs

Book Recommendations