Heim >Backend-Entwicklung >PHP-Tutorial >Wie führe ich PHP auf einer AWS ServerLess-Architektur aus? Teil zur Einführung der Bref-Laufzeit

Wie führe ich PHP auf einer AWS ServerLess-Architektur aus? Teil zur Einführung der Bref-Laufzeit

DDD
DDDOriginal
2024-10-07 22:11:30401Durchsuche

Im vorherigen Beitrag dieser Serie habe ich serverlose Dienste und Lambda besprochen. Jetzt ist es an der Zeit zu zeigen, wie PHP-Skripte oder sogar vollständige Anwendungen auf AWS Lambda ausgeführt werden können.

In diesem Beitrag erkläre ich, wie man die Bref-Laufzeitumgebung verwendet und ein Repository mit einer Beispielimplementierung freigibt, indem ich die Symfony-Demoanwendung und Terraform verwende.

Hier kommt Bref!

Matthieu Napoli, ein unabhängiger Berater und AWS Serverless Hero, führte Bref im Jahr 2018 ein und seitdem floriert Bref und bediente im Juli mehr als 40.000.000.000 Aufrufe, mit einem Wachstum von 300 % im Jahresvergleich.

How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime

Wie funktioniert Bref?

Bref ist eine benutzerdefinierte Lambda-Laufzeit. Oder besser gesagt Laufzeiten, denn es gibt ihn in drei Geschmacksrichtungen.

  • Der erste ist für die Ausführung von Webanwendungen konzipiert. Bref fängt API-Gateway-Ereignisse ab und wandelt sie in FastCGI-Anfragen um (dieselbe Art von Anfragen, die Webserver wie Apaches httpd oder nginx an den PHP-FPM-Prozess stellen); Es führt auch den PHP-FPM-Prozess für Sie aus. Auf diese Weise kann Ihre Anwendung nahezu unverändert bleiben (Sie müssen lediglich das Bref/Bref Composer-Paket importieren). Alle Standard-PHP-Funktionen, wie z. B. der Zugriff auf Web-Anfrageinhalte mit der magischen Variablen $_POST, funktionieren.
  • Der zweite ist für die asynchrone Ausführung konzipiert. AWS Lambda-Funktionen können alle Arten von AWS-generierten oder benutzerdefinierten Ereignissen verarbeiten. In diesem Fall muss Ihre PHP-Funktion mit einer Handler-Methode geschrieben werden, also einem PHP-Callable, der $event als Argument verwendet.
  • Eine dritte Laufzeit ermöglicht die Ausführung von CLI-Befehlen, z. B. php bin/console doctrine:database:create

How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime

Welche Art von Anwendung kann ich mit Bref ausführen?

Fast jede Art von PHP-Anwendung läuft mit Bref. Die Dokumentation bietet schöne Tutorials basierend auf Laravel und Symfony.

Das Anpassen einer vorhandenen Anwendung ist recht einfach (Bref bietet beispielsweise eine nette bref/symfony-messenger-Bibliothek, um Symfony Messenger so anzupassen, dass es SQS anstelle seines internen Busses verwendet – zur Erinnerung: Ausführungsumgebungen verarbeiten nur eine Anfrage gleichzeitig und sind kurzlebig. Daher ist das Verschieben von Daten auf einen kurzlebigen internen Bus das Rezept für Datenverlust.

Die einzige Einschränkung besteht wirklich darin, dass Sie eine extreme Reaktionsfähigkeit benötigen (z. B. 100 % Ihrer Anfragen innerhalb von 10 ms bearbeitet). Tatsächlich fügt das Framework einen Kaltstart von 230 ms hinzu. Dennoch können Sie, wie im vorherigen Artikel dieser Serie erwähnt, dies durch die Verwendung bereitgestellter Parallelität abmildern (und wenn Sie dies tun möchten, ohne zu viel auszugeben, ist die automatische Skalierung von Anwendungen Ihre erste Wahl).

How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime

So stellen Sie eine Bref-basierte Anwendung bereit

Die oben genannten Symfony/Larevel-Dokumentationen verwenden das Serverless-Bereitstellungsframework, um Bref-basierte PHP-Anwendungen bereitzustellen.

Andere Artikel (hier und hier) untersuchen das CDK als Bereitstellungsoption.

Ich bin eher ein Terraform-Fan und freue mich daher, unten ein voll funktionsfähiges Repository mit Terraform als Bereitstellungsoption zu teilen.

Schritt-für-Schritt-Anleitung zum Erstellen und Bereitstellen einer PHP-Anwendung in Lambda mithilfe von Terraform

Dies erfordert nur 8 einfache Schritte

How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime

Ein GitHub-Repository

Im folgenden GitHub-Repository teile ich ein voll funktionsfähiges Setup zum Bereitstellen dieser App:

How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime Psantus / php-serverless-lambda-bref-terraform

PHP auf AWS Lambda mit Bref-Framework, bereitgestellt mit Terraform

Dieses Repository zeigt, wie es geht

  • Instruieren Sie eine Symfony-Demoanwendung mit Bref-Framework, das eine Lambda-Laufzeit für PHP bereitstellt.
  • Stellen Sie die Anwendung mit Terraform bereit.

Bereitstellung

Nachdem Sie sich mit Ihrer CLI bei AWS angemeldet haben, führen Sie es einfach aus

terraform apply

Die Datei data.sql enthält die notwendigen Daten zum Seeding der Aurora-Datenbank. Sie können es mit einer Bastion bereitstellen.

Ergebnis

How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime How to run PHP on AWS ServerLess architecture ? Part  introducing Bref runtime


Auf GitHub ansehen


Bleiben Sie gespannt auf meinen nächsten Beitrag zum Thema „Wie man PHP-Code auf Lambda mit dem Lambda Web Adaptor bereitstellt!“!

Das obige ist der detaillierte Inhalt vonWie führe ich PHP auf einer AWS ServerLess-Architektur aus? Teil zur Einführung der Bref-Laufzeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn