Introducción a las funciones Serverless en Swift con AWS Lambda
El mundo del desarrollo móvil y de servidores está cambiando rápidamente. Si eres desarrollador iOS/macOS acostumbrado a trabajar con Swift, quizás te hayas preguntado cómo trasladar tus habilidades al lado del servidor. La arquitectura Serverless y AWS Lambda te abren esta posibilidad. Ya no necesitas gestionar servidores — simplemente escribes código que se ejecuta en respuesta a eventos.
En este artículo analizaremos cómo crear funciones serverless en Swift para AWS Lambda. Aprenderás a configurar el entorno, escribir una función simple y desplegarla en la nube. Esta guía es ideal para desarrolladores que quieran ampliar sus competencias y empezar a usar Swift no solo para crear interfaces, sino también para el backend.
¿Por qué Swift para Serverless?
Swift hace tiempo que dejó de ser solo un lenguaje para iOS. Gracias a proyectos como Swift AWS Lambda Runtime, puedes usar la sintaxis y el ecosistema que conoces para escribir código de servidor. Estas son las ventajas clave:
- Rendimiento: Swift se compila a código nativo, lo que proporciona alta velocidad de ejecución y bajo consumo de memoria.
- Seguridad de tipos: El tipado fuerte de Swift ayuda a evitar muchos errores en tiempo de compilación, algo crítico para el código de servidor.
- Stack unificado: Usando Swift en cliente y servidor, reduces el cambio de contexto y puedes reutilizar modelos de datos comunes.
- Comunidad activa: El Swift de servidor se desarrolla activamente, aparecen nuevas bibliotecas y herramientas.
Configuración del entorno y creación del proyecto
Antes de escribir código, es necesario instalar las herramientas necesarias. Necesitarás macOS con Xcode (o línea de comandos) y Docker para compilar para Linux (ya que AWS Lambda funciona en Amazon Linux).
Paso 1: Instalación de Swift y Docker
Asegúrate de tener instalado Swift 5.5 o superior. Puedes verificar la versión con el comando:
swift --versionTambién instala Docker Desktop para macOS. Lo necesitarás para compilar para la arquitectura objetivo de Lambda.
Paso 2: Creación de un nuevo proyecto
Usaremos el gestor de paquetes de Swift (SPM). Crea un nuevo paquete ejecutable:
mkdir MyLambdaFunctioncd MyLambdaFunctionswift package init --type executablePaso 3: Añadir la dependencia de AWS Lambda Runtime
Abre el archivo Package.swift y añade la dependencia:
// 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") ] ) ])Escribiendo la primera función Serverless en Swift
Ahora pasemos a lo más interesante — escribir el código. Abre el archivo main.swift en la carpeta Sources/MyLambdaFunction/.
Estructura básica de una función Lambda
Aquí tienes un ejemplo mínimo de una función que recibe un nombre y devuelve un saludo:
import AWSLambdaRuntimeimport AWSLambdaEvents
// Definimos la estructura de la solicitud entrantestruct GreetingRequest: Codable { let name: String}
// Definimos la estructura de la respuestastruct GreetingResponse: Codable { let message: String}
// Punto de entrada principal@mainstruct MyLambdaHandler: SimpleLambdaHandler { typealias Event = GreetingRe