Funciones Serverless en Swift: AWS Lambda de la A a la Z

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a Serverless en Swift con AWS Lambda



La arquitectura serverless se está convirtiendo en el estándar del desarrollo en la nube moderno. Gracias a AWS Lambda, los desarrolladores pueden ejecutar código sin gestionar servidores, pagando solo por el tiempo de ejecución real. Hasta hace poco, Swift se mantenía al margen del mundo serverless, pero con la llegada del soporte oficial de Swift en AWS Lambda, la situación ha cambiado drásticamente.



En este artículo, analizaremos el ciclo completo de trabajo con funciones serverless en Swift: desde la configuración del entorno hasta el despliegue en producción. Aprenderás a usar tu experiencia en desarrollo iOS/macOS para crear soluciones en la nube eficientes.



¿Por qué Swift para Serverless?



Swift no es solo un lenguaje para aplicaciones móviles. Sus puntos fuertes lo convierten en una excelente opción para serverless:



  • Seguridad de tipos — el compilador detecta errores en la fase de compilación
  • Alto rendimiento — el código nativo es más rápido que los lenguajes interpretados
  • Sintaxis moderna — el código es fácil de leer y mantener
  • Base de código compartida — se pueden reutilizar modelos y lógica de proyectos iOS/macOS


Para ejecutar Swift en AWS Lambda se utiliza la imagen oficial de Amazon Linux 2 con Swift 5.10 preinstalado. Esto garantiza compatibilidad total y un inicio en frío mínimo.



Configuración del entorno y creación de la primera función



Instalación de las herramientas necesarias



Antes de comenzar, asegúrate de tener instalado:



  • Swift 5.10 o superior
  • Docker (para compilar en entorno Linux)
  • AWS CLI con credenciales configuradas
  • Homebrew (para macOS)


# Instalación de Swift mediante Homebrewbrew install swift

# Verificar la versiónswift --version

# Instalación de AWS CLIbrew install awscli

# Configuración de AWSaws configure


Creación del proyecto Swift Package



Creemos un nuevo paquete ejecutable de Swift:



mkdir MyLambdaFunctioncd MyLambdaFunctionswift package init --type executable


Ahora actualizamos Package.swift para trabajar con AWS Lambda Runtime:



// swift-tools-version:5.10import PackageDescription

let package = Package( name: "MyLambdaFunction", platforms: [.macOS(.v13)], 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") ]), .testTarget( name: "MyLambdaFunctionTests", dependencies: ["MyLambdaFunction"]), ])


Código de la función manejadora



Reemplazamos el contenido de Sources/MyLambdaFunction/main.swift:



import AWSLambdaRuntime

// Definimos la estructura de la solicitudstruct Request: Codable { let name: String let age: Int}

// Definimos la estructura de la respuestastruct Response: Codable { let message: String let isAdult: Bool}

// Manejador principal@mainstruct MyHandler: SimpleLambdaHandler { typealias Event = Request typealias Output = Response

func handle(_ event: Request, context: LambdaContext) async throws -> Response { let isAdult = event.age >= 18 return Response( message: "¡Hola, \\(event.name)!", isAdult: isAdult ) }}


Compilación y despliegue en AWS Lambda



Compilación para Linux



Dado que Swift en macOS compila binarios para macOS, necesitamos usar Docker:



# Creamos el Dockerfilecat << EOF > DockerfileFROM swift:5.10-amazonlinux2 AS buildWORKDIR /appCOPY . .RUN swift build -c release --                

Blogs

Book Recommendations