Serverless-Funktionen mit Swift in AWS Lambda: Vollständiger Leitfaden

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

Einführung in Serverless-Funktionen mit Swift und AWS Lambda

\n\n

Die Serverless-Architektur gewinnt bei Entwicklern weiter an Beliebtheit, und Swift ist jetzt keine Ausnahme. Dank der Unterstützung von Swift auf der AWS Lambda-Plattform können iOS- und macOS-Entwickler Cloud-Funktionen in ihrer Muttersprache schreiben und dabei die volle Leistungsfähigkeit des Swift-Ökosystems nutzen. In diesem Artikel werden wir uns ansehen, wie man eine Serverless-Funktion mit Swift von Grund auf erstellt, konfiguriert und bereitstellt.

\n\n

Serverless-Funktionen ermöglichen die Ausführung von Code ohne Serververwaltung. Sie zahlen nur für die Ausführungszeit, und die Skalierung erfolgt automatisch. AWS Lambda unterstützt Swift über offizielle Runtime-Images, was es zu einer hervorragenden Wahl für Backend-Aufgaben im Apple-Ökosystem macht.

\n\n

Vorbereitung der Entwicklungsumgebung für Swift auf AWS Lambda

\n\n

Installation der erforderlichen Werkzeuge

\n\n

Stellen Sie vor Beginn der Arbeit sicher, dass Sie Folgendes installiert haben:

\n\n
    \n
  • Swift 5.9+ — herunterladbar von swift.org
  • \n
  • Docker — zum Bauen in einer Linux-Umgebung
  • \n
  • AWS CLI — für das Deployment
  • \n
  • Xcode 15+ (optional, für macOS)
  • \n
\n\n

Erstellen eines Swift Package-Projekts

\n\n

Erstellen wir ein neues Swift Package mit Unterstützung für AWS Lambda:

\n\n
mkdir MyLambdaFunction\ncd MyLambdaFunction\nswift package init --type executable
\n\n

Öffnen Sie Package.swift und fügen Sie die Abhängigkeit zu AWSLambdaRuntime hinzu:

\n\n
// swift-tools-version: 5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MyLambdaFunction",\n    platforms: [.macOS(.v13)],\n    dependencies: [\n        .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "MyLambdaFunction",\n            dependencies: [\n                .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime")\n            ]\n        )\n    ]\n)
\n\n

Schreiben der ersten Serverless-Funktion mit Swift

\n\n

Grundlegende Struktur einer Lambda-Funktion

\n\n

Erstellen wir die Datei Sources/MyLambdaFunction/main.swift mit folgendem Inhalt:

\n\n
import AWSLambdaRuntime\nimport AWSLambdaEvents\n\n// Definieren der Anfragestruktur\nstruct GreetingRequest: Codable {\n    let name: String\n}\n\n// Definieren der Antwortstruktur\nstruct GreetingResponse: Codable {\n    let message: String\n    let timestamp: String\n}\n\n// Haupt-Handler\n@main\nstruct MyLambdaHandler: SimpleLambdaHandler {\n    typealias Event = GreetingRequest\n    typealias Output = GreetingResponse\n    \n    func handle(_ event: GreetingRequest, context: LambdaContext) async throws -> GreetingResponse {\n        let dateFormatter = DateFormatter()\n        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"\n        \n        return GreetingResponse(\n            message: "Hallo, \\(event.name)! Willkommen in der Welt von Serverless mit Swift.",\n            timestamp: dateFormatter.string(from: Date())\n        )\n    }\n}
\n\n

Verarbeitung von HTTP-Anfragen (API Gateway)

\n\n

Für die Arbeit mit API Gateway verwenden wir APIGatewayV2Request:

\n\n
import AWSLambdaRuntime\nimport AWSLambdaEvents\n\n@main\nstruct HTTPHandler: SimpleLambdaHandler {\n    typealias Event = APIGatewayV2Request\n    typealias Output = APIGatewayV2Response\n    \n    func handle(_ event: APIGatewayV2Request, context: LambdaContext) async throws -> APIGatewayV2Response {\n        // Daten aus Query-Parametern abrufen\n        let name = event.queryStringParameters?["name"] ?? "Gast"\n        \n        let responseBody = """\n        {\n            "message": "Hello, \\(name)!",\n            "path": "\\(event.rawPath)"\n        }\n        """\n        \n        return APIGatewayV2Response(\n            statusCode: .ok,\n                

Blogs

Buchempfehlungen