Fonctions Serverless en PHP : AWS Lambda de A à Z

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

Introduction : pourquoi Serverless et PHP ?

\n\n

Longtemps, on a cru que PHP et le calcul serverless étaient incompatibles. Cependant, avec l'apparition des runtimes personnalisés AWS Lambda et le développement d'outils comme Bref, la situation a radicalement changé. Aujourd'hui, vous pouvez exécuter des applications PHP dans une infrastructure entièrement gérée par AWS Lambda, en ne payant que pour le temps d'exécution réel du code.

\n\n

Dans cet article, nous allons voir comment créer, configurer et déployer une fonction Serverless en PHP en utilisant AWS Lambda. Vous découvrirez les concepts clés, les problèmes typiques et les meilleures pratiques. Ce contenu est destiné aux développeurs PHP familiers avec les bases d'AWS, mais nous essaierons d'expliquer tout cela le plus en détail possible.

\n\n

À la fin de ce guide, vous serez capable d'exécuter votre premier point de terminaison PHP dans le cloud sans aucun serveur dédié.

\n\n

1. Architecture Serverless PHP sur AWS Lambda

\n\n

1.1. Comment AWS Lambda exécute-t-il PHP ?

\n\n

L'environnement natif de Lambda ne supporte pas PHP directement. Pour exécuter du code PHP, on utilise une couche spéciale — le Custom Runtime. Il s'agit d'un fichier exécutable (généralement en Python ou Bash) qui lance l'interpréteur PHP, lui transmet l'événement (event) et retourne le résultat.

\n\n

L'outil le plus populaire pour cela est Bref (Bare-metal PHP for AWS Lambda). Il fournit une image PHP prête à l'emploi avec des paramètres optimisés pour l'environnement serverless.

\n\n

Le processus de base ressemble à ceci :

\n
    \n
  1. Le client envoie une requête HTTP à API Gateway.
  2. \n
  3. API Gateway convertit la requête en événement JSON et le transmet à Lambda.
  4. \n
  5. Lambda lance le Custom Runtime, qui initialise PHP-FPM.
  6. \n
  7. Le script PHP traite l'événement et retourne une réponse.
  8. \n
\n\n

1.2. Composants clés de la pile

\n
    \n
  • AWS Lambda — l'unité de calcul.
  • \n
  • API Gateway — l'interface HTTP pour appeler la fonction.
  • \n
  • Bref — le runtime PHP pour Lambda.
  • \n
  • Serverless Framework (optionnel) — l'outil de déploiement.
  • \n
  • Amazon S3 / DynamoDB — le stockage de données (si nécessaire).
  • \n
\n\n

2. Configuration étape par étape : du projet au déploiement

\n\n

2.1. Installation des outils

\n

Pour travailler, vous aurez besoin de :

\n
    \n
  • PHP 8.1+ avec les extensions mbstring, curl, json.
  • \n
  • Composer — le gestionnaire de dépendances.
  • \n
  • Node.js et npm (pour Serverless Framework).
  • \n
  • Un compte AWS avec un utilisateur IAM configuré.
  • \n
\n\n

Installez Serverless Framework globalement :

\n
npm install -g serverless
\n\n

2.2. Création du projet avec Bref

\n

Créez un répertoire de projet et initialisez-le :

\n
mkdir php-lambda-demo\ncd php-lambda-demo\ncomposer require bref/bref
\n\n

Créez le fichier index.php — ce sera notre fonction :

\n
<?php\nrequire __DIR__ . '/vendor/autoload.php';\n\nreturn function ($event) {\n    $name = $event['queryStringParameters']['name'] ?? 'World';\n    \n    return [\n        'statusCode' => 200,\n        'headers'    => ['Content-Type' => 'text/plain'],\n        'body'       => "Hello, {$name}! This is Serverless PHP on AWS Lambda."\n    ];\n};
\n\n

Notez que la fonction doit retourner un tableau avec les clés statusCode, headers et body. C'est le format de réponse standard pour l'intégration avec API Gateway.

\n\n

2.3. Configuration de serverless.yml

\n

Créez le fichier serverless.yml à la racine du projet :

\n
service: php-lambda-demo\n\nprovider:\n  name: aws\n  region: eu-central-1\n  runtime: provided.al2\n\nplugins:\n  - ./vendor/bref/bref\n\nfunction                

Blogs

Book Recommendations