Introduction aux fonctions serverless en Swift avec AWS Lambda
Le monde du développement mobile et serveur évolue rapidement. Si vous êtes un développeur iOS/macOS habitué à travailler avec Swift, vous avez peut-être réfléchi à la manière de transférer vos compétences vers le côté serveur. L'architecture serverless et AWS Lambda vous offrent cette opportunité. Vous n'avez plus besoin de gérer des serveurs — vous écrivez simplement du code qui s'exécute en réponse à des événements.
Dans cet article, nous allons détailler comment créer des fonctions serverless en Swift pour AWS Lambda. Vous apprendrez à configurer l'environnement, à écrire une fonction simple et à la déployer dans le cloud. Ce guide est parfait pour les développeurs qui souhaitent élargir leurs compétences et commencer à utiliser Swift non seulement pour construire des interfaces, mais aussi pour le backend.
Pourquoi Swift pour le serverless ?
Swift a depuis longtemps cessé d'être un langage destiné uniquement à iOS. Grâce à des projets comme Swift AWS Lambda Runtime, vous pouvez utiliser une syntaxe et un écosystème familiers pour écrire du code serveur. Voici les principaux avantages :
- Performance : Swift compile en code natif, offrant une vitesse d'exécution élevée et une faible consommation de mémoire.
- Sécurité des types : Le typage fort de Swift permet d'éviter de nombreuses erreurs à la compilation, ce qui est crucial pour le code serveur.
- Stack unifiée : Utiliser Swift à la fois côté client et serveur réduit les changements de contexte et permet de réutiliser des modèles de données communs.
- Communauté active : Le Swift côté serveur se développe activement, avec de nouvelles bibliothèques et de nouveaux outils qui émergent.
Configuration de l'environnement et création du projet
Avant d'écrire du code, vous devez installer les outils nécessaires. Vous aurez besoin de macOS avec Xcode (ou la ligne de commande) et de Docker pour la construction sous Linux (car AWS Lambda fonctionne sur Amazon Linux).
Étape 1 : Installation de Swift et Docker
Assurez-vous d'avoir Swift 5.5 ou une version plus récente installée. Vous pouvez vérifier la version avec la commande :
swift --versionInstallez également Docker Desktop pour macOS. Il sera nécessaire pour compiler pour l'architecture cible de Lambda.
Étape 2 : Création d'un nouveau projet
Nous allons utiliser le Swift Package Manager (SPM). Créez un nouveau package exécutable :
mkdir MyLambdaFunctioncd MyLambdaFunctionswift package init --type executableÉtape 3 : Ajout de la dépendance AWS Lambda Runtime
Ouvrez le fichier Package.swift et ajoutez la dépendance :
// swift-tools-version:5.5import PackageDescription
let package = Package( name: "MyLambdaFunction", platforms: [.macOS(.v12)], dependencies: [ .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0") ], targets: [ .executableTarget( name: "MyLambdaFunction", dependencies: [ .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime") ] ) ])Écrire votre première fonction serverless en Swift
Passons maintenant à la partie la plus intéressante — l'écriture du code. Ouvrez le fichier main.swift dans le dossier Sources/MyLambdaFunction/.
Structure de base d'une fonction Lambda
Voici un exemple minimal d'une fonction qui prend un nom et retourne un message de salutation :
import AWSLambdaRuntimeimport AWSLambdaEvents
// Définir la structure de la requête entrantestruct GreetingRequest: Codable { let name: String}
// Définir la structure de la réponsestruct GreetingResponse: Codable { let message: String}
// Point d'entrée principal@mainstruct MyLambdaHandler: SimpleLambdaHandler { typealias Event = GreetingRe