
Teilen Sie:
Adam ist ein Entwickler und Berater, der gerne Ultraläufe absolviert, bloggt und anderen dabei hilft, Technologien zu zähmen, um erstaunliche Dinge zu erreichen, und der ein unstillbares Verlangen hat, Mentoren zu sein und zu helfen.
AWS Lambda mit PHP unter Verwendung von Bref und Serverless Framework
Die Verwendung von PHP in serverlosen Umgebungen war bisher eine Herausforderung, da die verschiedenen Cloud-Anbieter keine Standard-Laufzeiten zur Verfügung stellen. Dies hat sich jedoch in letzter Zeit mit zusätzlichen Bibliotheken und Funktionen geändert, die die Verwendung von PHP zugänglicher machen.
In diesem Beispiel wird ein AWS Lambda Funktion für PHP unter Verwendung von Bref. Der Zusatz von AWS Lambda Laufzeit-API und die Möglichkeit zum Hinzufügen von AWS Lambda-Schichten hat es einfacher gemacht, eine benutzerdefinierte PHP-Laufzeitumgebung zu erstellen. Daher sind Pakete wie Bref entstanden, die das Leben von PHP-Entwicklern einfacher machen.
Voraussetzungen
Hier sind die Dinge, die Sie für dieses Beispiel benötigen:
PHP lokal installiert (Version 7.3+ bevorzugt)
AWS-Konto und Zugriffsschlüssel für einen Benutzer mit Zugriff auf AWS S3 als auch AWS Lambda
Serverloses Framework
Die Bref Werkzeug nutzt das Serverless Framework das eine "Komplettlösung für die Erstellung und den Betrieb serverloser Applications" darstellt. Unser erster Schritt besteht also darin, dieses Framework auf dem von Ihnen verwendeten Entwicklungssystem zu installieren. Wir empfehlen, es global zu installieren, um die Nutzung von überall aus über CLI zu ermöglichen.
AWS-Anmeldeinformationen
Stellen Sie nach der Installation von Serverless sicher, dass Sie auch die AWS-Anmeldeinformationen eingerichtet haben, die Serverless für die Interaktion mit den verschiedenen AWS-Diensten benötigt. (S3, Lambda und möglicherweise EC2 oder Datenbanken nach Bedarf) In diesem Beispiel werden wir nur S3 und Lambda verwenden. Weitere Informationen dazu finden Sie unter serverless.com und bref.sh nachlesen, sodass wir hier nicht ins Detail gehen werden.
Bref installieren
Sie sollten Bref auch als Abhängigkeit in jedem Projekt installieren, das es verwendet. In diesem Sinne werden wir Composer verwenden, um es über die CLI aus dem Projektverzeichnis heraus zu installieren.
Init Bref Projekt
Nachdem der Composer das Hinzufügen von Bref zum Projekt abgeschlossen hat, ist der beste Weg, damit zu beginnen init Bref für die Verwendung. Durch die Eingabe von init wird dann abgefragt, ob Sie eine Funktions-, HTTP- oder Konsolenfunktion wünschen, was zur Erstellung von serverless.yml und möglicherweise index.php abhängig von Ihrer Auswahl, die Sie bearbeiten können, um sie an die Bedürfnisse der Anwendung anzupassen.
Beispiel YML-Datei
Im Folgenden finden Sie ein Beispiel für eine serverless.yml Datei:
service: app
provider:
name: aws
region: us-east-1
runtime: provided
plugins:
- ./vendor/bref/bref
functions:
function:
handler: index.php
description: ''
layers:
- ${bref:layer.php-73}
# Exclude files from deployment
package:
exclude:
- 'tests/**'Achten Sie in der Datei auf den Namen des Dienstes, den Sie an die gewünschten Namenskonventionen Ihrer Funktionen anpassen können. Standardmäßig heißt er app.
Anschließend sehen wir die Anbieterinformationen für AWS Lambda.
Es gibt einen Abschnitt für alle Plugins und die Einbeziehung von Bref.
Dann folgt der Abschnitt, in dem die Details der Funktion beschrieben werden. Dazu gehören der Handler, die gewünschte Beschreibung, die zu AWS hinzugefügt werden soll, und alle erforderlichen Schichten, wie PHP. Beachten Sie im obigen Beispiel, php-73 angegeben ist. Hätten Sie stattdessen HTTP ausgewählt, würde die Funktion php-73-fpm angeben und einen Webserver in der Ebene anstelle einer reinen CLI-Version von PHP bereitstellen. Das zu verwendende Bild ist der Grund, warum der init Prozess wichtig ist, um sicherzustellen, dass Lambda die richtige Schicht erstellt.
Bereitstellen auf AWS Lambda
Für Funktions- oder HTTP-Anwendungsfälle bietet der Standard init ein ausreichendes Skelett, um direkt in AWS Lambda bereitzustellen und mit Serverless zu testen. Unter Verwendung der zuvor hinzugefügten Konfiguration der AWS-Anmeldeinformationen stellt Serverless direkt für Lambda bereit und verwendet dabei den Inhalt von serverless.yml als Kriterien.
WICHTIG! Die Beispielanwendung unterliegt in ihrer jetzigen Form keinerlei Authentifizierung oder Überprüfung. Jeder, der Zugriff auf die nach der Bereitstellung bereitgestellte URL hat, kann darauf zugreifen. Dies könnte zu unerwarteten Abbuchungen von Ihren Konten führen. Sichern Sie daher die Anwendung, wenn Sie sie aktiv lassen wollen.
Testen der Funktion
Im Falle einer Funktion gibt es zwei Möglichkeiten zum Testen. Eine Möglichkeit ist die Verwendung der AWS-Konsole, die zweite die Verwendung von Serverless über die Befehlszeilenschnittstelle (CLI) des für die Bereitstellung verwendeten Systems.
AWS-Konsole
Wählen Sie in der AWS-Konsole das Element Lambda aus der Liste der Compute-Services aus.
AWS Console-Lambda Dashboard
Auf dem Lambda-Dashboard können Sie die erstellte Funktion auswählen und einen neuen Test erstellen, indem Sie auf Configure test events. Alternativ können Sie auch auf die Schaltfläche Test klicken, um die gleiche Aufforderung zu erhalten.
Lambda Function Create Test Example
Um das erstellte Skelett zu testen, fügen Sie einen Namen hinzu und ändern Sie das JSON im Body leicht ab.
Configure Lambda Test Events
Nach einem Klick auf die Schaltfläche Create am unteren Ende des Dialogs können Sie dann auf die Schaltfläche Test klicken, um den Test auszuführen. Die Ausführung sollte zu einem grünen Dialogfeld führen, das Sie erweitern können, um die Ergebnisse anzuzeigen.
Lambda Test Results
Serverlose Funktionsausführung
Wie oben erwähnt, können Sie die Funktion auch mit der Serverless-CLI testen, indem Sie den folgenden Befehl aus dem lokalen Anwendungsstamm heraus verwenden:
Beispielhaftes Ergebnis:
Serverless Lambda Function Execution
Testen einer HTTP-Funktion
Wenn Sie stattdessen eine HTTP-Funktion bereitstellen würden, würden die beiden oben genannten Testmethoden nicht funktionieren. Stattdessen können Sie einen HTTP-Client oder einen Standardbrowser zum Testen verwenden, indem Sie die von den Bereitstellungsergebnissen bereitgestellte URL verwenden.
Was nun?
Wenn Sie eine AWS Lambda-Funktion erstellt haben, können Sie weiteren Code hinzufügen und robustere PHP-Apps erstellen, die die heute verfügbaren serverlosen Technologien nutzen. In zukünftigen Beiträgen erfahren Sie, wie Sie nützliche Funktionen zur Nutzung von Vonage-APIs und -Services mit AWS Lambda erstellen können.