Serverless-Funktionen in PHP: AWS Lambda – praktische Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Serverless-Funktionen in PHP: AWS Lambda – von der Theorie zur Praxis



Die moderne Webentwicklung entfernt sich zunehmend von traditionellen monolithischen Servern hin zum Cloud Computing. Die Serverless-Architektur ermöglicht es Entwicklern, sich ausschließlich auf den Code zu konzentrieren, ohne sich um die Verwaltung der Infrastruktur kümmern zu müssen. AWS Lambda ist einer der beliebtesten Dienste zur Umsetzung dieses Ansatzes. Lange Zeit galt PHP jedoch als ungeeignet für Serverless. Das ist ein Mythos. In diesem Artikel schauen wir uns an, wie man PHP-Funktionen auf AWS Lambda ausführt, welche Werkzeuge dafür benötigt werden und wie man die Leistung optimiert.



Was ist AWS Lambda und wie passt PHP hinein?



AWS Lambda ist ein Rechendienst, der Ihren Code als Reaktion auf Ereignisse ausführt und die Rechenressourcen automatisch verwaltet. Sie zahlen nur für die tatsächliche Ausführungszeit und die Anzahl der Anfragen. Lambda unterstützt nativ Node.js, Python, Java, Go und .NET, aber PHP gehört nicht zu dieser "Out-of-the-Box"-Liste. Das ist jedoch kein Problem: Wir können benutzerdefinierte Laufzeitumgebungen (Custom Runtime) oder vorgefertigte Wrapper wie Bref verwenden.



Bref ist ein Open-Source-Projekt, das eine fertige Runtime für PHP auf AWS Lambda sowie eine Integration mit Frameworks (Laravel, Symfony) bereitstellt. Damit können Sie Event-Handler, API-Endpunkte oder sogar vollwertige Webanwendungen schreiben, die im Serverless-Modus laufen.



Hauptkomponenten für die Ausführung von PHP auf Lambda:

  • Bref Runtime – eine Schicht, die den PHP-Interpreter und notwendige Erweiterungen enthält.
  • Ereignis (Event) – ein Auslöser, der die Funktion startet (HTTP-Anfrage, Datei-Upload in S3, Änderung in DynamoDB).
  • Handler – eine PHP-Funktion oder Klassenmethode, die das Ereignis empfängt und verarbeitet.


Einrichtung der Umgebung und erstes Beispiel



Für die Arbeit benötigen wir Composer, Docker (für den Build) und ein AWS-Konto. Installieren wir Bref:



composer require bref/bref


Bref verwendet ein Docker-Image für lokale Tests und den Build. Nach der Installation erstellen wir eine Datei serverless.yml – die Konfiguration für das Deployment auf AWS Lambda.



Beispielkonfiguration 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'


Jetzt schreiben wir einen einfachen Handler – die Datei index.php:



<?php

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

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


Dieser Code gibt eine JSON-Antwort mit einer Begrüßung zurück. Um ihn lokal auszuführen, verwenden wir den Befehl:



vendor/bin/bref local hello


Deployment und Trigger: Von HTTP bis S3



Nach dem lokalen Test kann die Funktion in der Cloud bereitgestellt werden. Stellen Sie sicher, dass Ihre AWS Credentials konfiguriert sind (über die AWS CLI oder Umgebungsvariablen). Führen Sie aus:



serverless deploy


In der Konsole sehen Sie die URL Ihres API Gateway (falls ein HTTP-Trigger konfiguriert ist). Jetzt können Sie über den Browser oder curl auf die Funktion zugreifen.



Weitere beliebte Trigger für PHP-Funktionen:

  • S3 Events – Verarbeitung von Datei-Uploads/-Löschungen.
  • SQS/SNS – asynchrone Verarbeitung von Nachrichtenwarteschlangen.
  • CloudWatch Events – zeitgesteuerter Start (cron).
  • DynamoDB Streams – Reaktion auf Änderungen in

Blogs

Buchempfehlungen