Fonctions Serverless en PHP : AWS Lambda — guide pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Fonctions Serverless en PHP : AWS Lambda — de la théorie à la pratique



Le développement web moderne abandonne de plus en plus les serveurs monolithiques traditionnels au profit du cloud computing. L'architecture Serverless permet aux développeurs de se concentrer uniquement sur le code, sans se soucier de la gestion de l'infrastructure. AWS Lambda est l'un des services les plus populaires pour mettre en œuvre cette approche. Cependant, on a longtemps pensé que PHP n'était pas adapté au serverless. C'est un mythe. Dans cet article, nous allons voir comment exécuter des fonctions PHP sur AWS Lambda, quels outils sont nécessaires et comment optimiser les performances.



Qu'est-ce qu'AWS Lambda et comment y intégrer PHP ?



AWS Lambda est un service de calcul qui exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul. Vous ne payez que pour le temps d'exécution réel et le nombre de requêtes. Lambda prend en charge nativement Node.js, Python, Java, Go et .NET, mais PHP ne fait pas partie de cette liste « prête à l'emploi ». Cependant, ce n'est pas un problème : nous pouvons utiliser des environnements d'exécution personnalisés (Custom Runtime) ou des wrappers prêts à l'emploi, comme Bref.



Bref est un projet open-source qui fournit un Runtime prêt à l'emploi pour PHP sur AWS Lambda, ainsi qu'une intégration avec les frameworks (Laravel, Symfony). Grâce à lui, vous pouvez écrire des gestionnaires d'événements, des points de terminaison API ou même des applications web complètes fonctionnant en mode serverless.



Composants principaux pour exécuter PHP sur Lambda :

  • Bref Runtime — une couche contenant l'interpréteur PHP et les extensions nécessaires.
  • Événement (Event) — le déclencheur qui lance la fonction (requête HTTP, téléchargement de fichier dans S3, modification dans DynamoDB).
  • Gestionnaire (Handler) — une fonction PHP ou une méthode de classe qui reçoit et traite l'événement.


Configuration de l'environnement et premier exemple



Pour travailler, nous aurons besoin de Composer, Docker (pour la construction) et d'un compte AWS. Installons Bref :



composer require bref/bref


Bref utilise une image Docker pour les tests locaux et la construction. Après l'installation, créons un fichier serverless.yml — la configuration pour le déploiement sur AWS Lambda.



Exemple de configuration 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'


Écrivons maintenant un gestionnaire très simple — le fichier index.php :



<?php

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

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


Ce code renvoie une réponse JSON avec un message de bienvenue. Pour l'exécuter localement, utilisez la commande :



vendor/bin/bref local hello


Déploiement et déclencheurs : de HTTP à S3



Après les tests locaux, vous pouvez déployer la fonction dans le cloud. Assurez-vous d'avoir configuré vos credentials AWS (via AWS CLI ou des variables d'environnement). Exécutez :



serverless deploy


Dans la console, vous verrez l'URL de votre API Gateway (si un déclencheur HTTP est configuré). Vous pouvez maintenant accéder à la fonction via un navigateur ou curl.



Autres déclencheurs populaires pour les fonctions PHP :

  • S3 Events — traitement du téléchargement/suppression de fichiers.
  • SQS/SNS — traitement asynchrone des files d'attente de messages.
  • CloudWatch Events — exécution planifiée (cron).
  • DynamoDB Streams — réaction aux modifications dans

Blogs

Book Recommendations