boscorelli - Fotolia
AWS Lambda: Funktionen für Serverless Computing erstellen
AWS-Lambda ist für Entwickler eine serverlose Alternative zu EC2-Instanzen. Wir erklären, wie Sie einfache Funktionen erstellen und was Sie für den produktiven Einsatz brauchen.
AWS Lambda beschleunigt und vereinfacht die Softwareentwicklung und Wartung erheblich. Als serverloses Tool eliminiert es für die IT-Mitarbeiter alle Arbeiten im Zusammenhang mit der der Verwaltung von Servern. Sie können sowohl betriebliche Abläufe als auch komplexe Anwendungskomponenten automatisieren.
Sie steuern AWS Lambda über Lambda-Funktionen, die einen granularen Code enthalten, der eine bestimmte Aufgabe ausführt. Um eine Lambda-Funktion bereitzustellen, laden Benutzer Quellcode hoch und konfigurieren Parameter wie die folgenden:
- Auslöser
- Versionen
- Aliase
- Erinnerungen
- Berechtigungen
- Virtual Private Cloud (VPC)
- Nebenläufigkeit
- Ziele
- Datenbank-Proxy
- Elastisches Dateisystem
- Fehlerbehandlung
In diesem Artikel erfahren Sie, wie Sie Lambda-Funktionen über die AWS-Konsole starten und das AWS Serverless Application Model (SAM) verwenden.
So starten Sie Lambda-Funktionen über die AWS-Konsole
Es gibt viele Möglichkeiten, Lambda-Funktionen zu starten. Die einfachste finden Sie in der AWS Management Console. Entwickler schreiben den Quellcode mit der integrierten Entwicklungsumgebung in der Benutzeroberfläche. Sie konfigurieren von hier aus auch andere Einstellungen, wie zum Beispiel Identity and Access Management (IAM)-Berechtigungen oder Umgebungsvariablen.
Schritt 1
Eine einfache Möglichkeit zum Erstellen einer AWS-Lambda-Funktion bietet die Schaltfläche Funktion erstellen auf der Lambda-Konsole. Dieser Weg eignet sich eher für frühe Entwicklungsstadien als für Anwendungen in der Produktion.
Schritt 2
Im nächsten Bildschirm werden Ihnen verschiedene Optionen für den Code der Funktion angezeigt. Machen Sie sich mit all diesen Optionen für die Arbeit mit Lambda-Funktionen vertraut:
- Ohne Vorgabe erstellen. Beginnen Sie mit einem einfachen „Hello-World“-Beispiel.
- Vorlage verwenden. Die Codevorlagen von AWS umfassen vorgefertigte Integrationsmöglichkeiten für andere AWS-Tools und Code für häufige Anwendungsszenarien. Sie bieten eine enorme Zeitverbesserung.
- Container-Image. Container-Images, die in Amazon Elastic Container Registry gespeichert sind, bieten eine weitere Abkürzung zur Umsetzung von Serverless-Computing-Szenarien.
- Serverloses App-Repository durchsuchen. Im AWS Serverless Application Repository finden Benutzer verschiedene hilfreiche Produkte.
Wählen Sie für dieses Beispiel von Ohne Vorgabe erstellen aus.
Schritt 3
Fahren wir mit einer von brandneuen Lambda-Funktion fort. Zu den Basiskonfigurationsfeldern gehören Funktionsname, Laufzeit und Berechtigungen. Zu den unterstützten Laufzeiten gehören Programmiersprachen wie Node.js, Go, Python, Ruby, Java, C# und .NET. Lambda unterstützt auch benutzerdefinierte Laufzeiten, die ein Entwickler in jeder Sprache schreiben kann, die sich im Amazon Linux-Betriebssystem kompilieren lässt. Beachten Sie, dass AWS dieser Liste laufend neue Laufzeiten und Versionen hinzufügt.
IAM-Rollen gewähren Berechtigungen für Lambda-Funktionen. Standardmäßig sind diese so eingestellt, dass Sie Daten nur in Amazon-CloudWatch-Protokolle schreiben dürfen. Wenn eine Lambda-Funktion Berechtigungen zum Aufrufen anderer AWS-APIs erfordert, müssen Sie die zugehörigen IAM-Berechtigungen erteilen.
Im nächsten Abschnitt stehen Ihnen Erweiterte Einstellungen wie Codesignatur und VPC zur Verfügung. Code Signing fügt dem Lambda-Code eine zusätzliche Sicherheitsebene hinzu. Dadurch gehen Sie sicher, dass ihn seit einem festgelegten Zeitpunkt niemand mehr verändert hat. Das ist zum Beispiel sinnvoll für Amazon-Relational-Database-Service-Instanzen mit deaktiviertem öffentlichen Zugriff.
Mit den VPC-Einstellungen platzieren Sie Lambda-Funktionen in einer VPC mit Zugriff auf private Ressourcen. Das bietet sich zum Beispiel für Amazon ElastiCache Cluster an, auf die Nutzern nur über eine VPC und DynamoDB-Tabellen mit aktivierten VPC-Endpunkten zugreifen können.
Nachdem Sie die Lambda-Funktion erstellt haben, nehmen Sie die weiteren Konfigurationen in der Konsole vor. Zu den Optionen gehören Trigger, Umgebungsvariablen und Ziele, wie in Abbildung 5 dargestellt.
So verwenden Sie AWS SAM
Die Konsole bietet einen schnellen Einstieg in Funktionen, wird jedoch nicht für produktive Anwendungen empfohlen. Sie haben dort nicht die Möglichkeit zum konsistenten und automatisierten Starten und Verwalten von Lambda-Funktionen in verschiedenen Bereitstellungsphasen. Es gibt auch keinen einfachen Weg, die Codeversionierung zu verfolgen und potenzielle Rollback-Szenarien zu regeln.
AWS empfiehlt für den produktiven Einsatz AWS SAM (Serverless Application Model), um Lambda-Funktionen bereitzustellen und zu warten. SAM bietet einen Mechanismus zum Entwickeln, Testen, Konfigurieren und Warten von Funktionen mit Infrastruktur als Code (IaC). Das Framework definiert Funktionen mithilfe einer Vorlage im YAML-Format. Die Funktionstests und das Bereitstellen erfolgt über die Kommandozeile (Command Line Interface, CLI). Mit diesem Ansatz befolgen Entwicklerteams einfacher CI/CD-Best Practices (Continuous Integration/Continuous Delivery). Die oben genannten Konfigurationsparameter können in eine SAM-Vorlage aufgenommen werden.
Befolgen Sie diese Best Practices im SAM-Ansatz:
- Gruppieren Sie Funktionen in einer Vorlage. Um Funktionen mit SAM bereitzustellen, gruppieren Sie alle Funktionen und andere relevante Komponenten wie API-Gateway, REST-APIs und DynamoDB-Tabellen in derselben Vorlage.
- Nutzen Sie native Tools für die automatische Bereitstellung. Automatisieren Sie die Bereitstellung von Lambda-Funktionen mit Services wie AWS CodeBuild und AWS CodePipeline.
- Integrieren Sie Lambda-Funktionen. Um den Code von der Anwendungskonfiguration zu trennen, integrieren Sie Lambda-Funktionen in Services wie AWS Secrets Manager oder AWS Systems Manager Parameter Store. Entwickler richten Lambda-Funktion ein, um relevante Parameter von diesen AWS-Services abzurufen, statt Informationen fest in die Anwendung zu codieren oder einen unsicheren Zugriff zu erlauben.
- Verwalten Sie Konfigurationen auf Anwendungsebene. Ziehen Sie die AWS-AppConfig-Erweiterung für Lambda in Betracht, um Einstellungen auf Anwendungsebene zu verwalten.