Serverless-Funktionen in PHP: AWS Lambda von A bis Z – vollständige 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

Einleitung: Warum Serverless und PHP kein Widerspruch sind



Lange Zeit galt PHP als inkompatibel mit Serverless-Architekturen. PHP wurde mit dauerhaften Prozessen wie Apache oder Nginx assoziiert, Serverless hingegen mit Node.js oder Python. Doch mit dem Aufkommen von Tools wie Bref und der offiziellen Unterstützung von Custom Runtimes in AWS Lambda hat PHP neuen Auftrieb erhalten.



Serverless-Funktionen ermöglichen die Ausführung von PHP-Code ohne Serververwaltung. Sie zahlen nur für die tatsächliche Ausführungszeit (auf die Millisekunde genau). Dies ist die ideale Lösung für:

  • Webhook-Handler (Telegram, Stripe, Slack);
  • Mikroservices mit geringer Last;
  • Periodische Aufgaben (Cron) über CloudWatch Events;
  • API-Proxys und leichte Backends.


In diesem Artikel zeigen wir Ihnen, wie Sie PHP von Grund auf in AWS Lambda zum Laufen bringen: von der Erstellung von IAM-Rollen bis zum Deployment einer funktionsfähigen Funktion.



1. Architektur von PHP in AWS Lambda



Wie Custom Runtime funktioniert

AWS Lambda unterstützt nativ nur Java, Go, PowerShell, Node.js, C#, Python und Ruby. Um PHP auszuführen, verwenden wir eine Custom Runtime – eine spezielle ausführbare Datei (Bootstrap), die mit der Lambda Runtime API kommuniziert.



Die beliebteste Methode ist das Framework Bref. Es wird mit einer fertigen Schicht (Layer) geliefert, die PHP 8.x, Composer und eine Reihe von Standarderweiterungen enthält.



// Projektstruktur für Brefproject/├── index.php          // Einstiegspunkt├── composer.json├── serverless.yml     // Deployment-Konfiguration└── vendor/


Drei Möglichkeiten des Deployments

  1. Bref (empfohlen) – die einfachste Methode. Verwendet serverless.yml und vorgefertigte Schichten.
  2. Manueller Build – Sie kompilieren PHP für Amazon Linux 2 und packen es in eine ZIP-Datei.
  3. Docker-Image – Sie verwenden ein Lambda-Container-Image (seit 2020 unterstützt).


Wir betrachten die erste Option – sie ist für 90 % der Aufgaben geeignet.



2. Schritt-für-Schritt-Einrichtung: Von der Installation bis zur ersten Anfrage



Schritt 1. Vorbereitung der Umgebung

Stellen Sie sicher, dass Folgendes installiert ist:

  • PHP 8.0+ (lokal)
  • Composer
  • Node.js und npm (für Serverless Framework)
  • Das Tool aws-cli mit konfigurierten Credentials


Installieren Sie das Serverless Framework global:

npm install -g serverless


Schritt 2. Projekt erstellen

composer create-project bref/bref my-php-lambdacd my-php-lambda


Nach der Initialisierung sehen Sie die Datei serverless.yml. Bearbeiten wir sie:



service: my-php-app

provider: name: aws region: eu-central-1 # Wählen Sie die nächstgelegene Region runtime: provided.al2 # Amazon Linux 2

plugins: - ./vendor/bref/bref

functions: hello: handler: index.php description: 'Einfache PHP-Funktion' layers: - ${bref:layer.php-80} # Schicht mit PHP 8.0


Schritt 3. Die Funktion selbst schreiben

Öffnen Sie index.php:



<?php

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

/** * Lambda-Funktions-Handler * @param array $event Eingabedaten von AWS (API Gateway, SQS usw.) * @return array Antwort im JSON-Format */function handler(array $event): array{ // In CloudWatch protokollieren error_log('Anfrage erhalten: ' . json_encode($event));

$name = $event['queryStringParameters']['name'] ?? 'Gast';

return [ 'statusCode' => 200, 'headers' => [ 'Content-Type' => 'application/json', ], 'body' => json_encode([ 'message' => "Hallo, {$name}!", 'timestamp' => time(), ]), ];}


Blogs

Buchempfehlungen