Funções Serverless em Swift: AWS Lambda do A ao Z

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao Serverless em Swift com AWS Lambda



A arquitetura Serverless está se tornando o padrão do desenvolvimento moderno em nuvem. Graças ao AWS Lambda, os desenvolvedores podem executar código sem gerenciar servidores, pagando apenas pelo tempo de execução real. Até recentemente, o Swift estava à margem do mundo serverless, mas com o surgimento do suporte oficial do Swift no AWS Lambda, a situação mudou drasticamente.



Neste artigo, abordaremos o ciclo completo de trabalho com funções serverless em Swift: desde a configuração do ambiente até o deploy em produção. Você aprenderá como usar sua experiência em desenvolvimento iOS/macOS para criar soluções eficientes em nuvem.



Por que Swift para Serverless?



Swift não é apenas uma linguagem para aplicativos móveis. Seus pontos fortes o tornam uma excelente escolha para serverless:



  • Segurança de tipos — o compilador detecta erros na fase de compilação
  • Alta performance — código nativo executa mais rápido que linguagens interpretadas
  • Sintaxe moderna — código fácil de ler e manter
  • Base de código compartilhada — é possível reutilizar modelos e lógica de projetos iOS/macOS


Para executar Swift no AWS Lambda, é usada a imagem oficial Amazon Linux 2 com Swift 5.10 pré-instalado. Isso garante total compatibilidade e inicialização a frio mínima.



Configuração do ambiente e criação da primeira função



Instalação das ferramentas necessárias



Antes de começar, verifique se você tem instalado:



  • Swift 5.10 ou superior
  • Docker (para compilação em ambiente Linux)
  • AWS CLI com credentials configuradas
  • Homebrew (para macOS)


# Instalação do Swift via Homebrewbrew install swift

# Verificação da versãoswift --version

# Instalação do AWS CLIbrew install awscli

# Configuração do AWSaws configure


Criação do projeto Swift Package



Vamos criar um novo pacote executável Swift:



mkdir MyLambdaFunctioncd MyLambdaFunctionswift package init --type executable


Agora, atualize o Package.swift para funcionar com o 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 da função handler



Substitua o conteúdo de Sources/MyLambdaFunction/main.swift:



import AWSLambdaRuntime

// Define a estrutura da requisiçãostruct Request: Codable { let name: String let age: Int}

// Define a estrutura da respostastruct Response: Codable { let message: String let isAdult: Bool}

// Handler 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: "Olá, \\(event.name)!", isAdult: isAdult ) }}


Compilação e deploy no AWS Lambda



Compilação para Linux



Como o Swift no macOS compila binários para macOS, precisamos usar Docker:



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

Blogs

Book Recommendations