Funções Serverless em PHP: AWS Lambda — Guia Prático

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

Funções Serverless em PHP: AWS Lambda — da teoria à prática



O desenvolvimento web moderno está cada vez mais abandonando servidores monolíticos tradicionais em favor da computação em nuvem. A arquitetura Serverless permite que desenvolvedores se concentrem exclusivamente no código, sem se preocupar com o gerenciamento de infraestrutura. AWS Lambda é um dos serviços mais populares para implementar essa abordagem. No entanto, por muito tempo se acreditou que PHP não era adequado para serverless. Isso é um mito. Neste artigo, vamos explorar como executar funções PHP no AWS Lambda, quais ferramentas são necessárias e como otimizar o desempenho.



O que é AWS Lambda e como encaixar o PHP nele?



AWS Lambda é um serviço de computação que executa seu código em resposta a eventos e gerencia automaticamente os recursos computacionais. Você paga apenas pelo tempo de execução real e pelo número de requisições. O Lambda suporta nativamente Node.js, Python, Java, Go e .NET, mas o PHP não está nesta lista "de fábrica". No entanto, isso não é um problema: podemos usar Custom Runtimes ou wrappers prontos, como o Bref.



Bref é um projeto opensource que fornece um Runtime pronto para PHP no AWS Lambda, além de integração com frameworks (Laravel, Symfony). Com ele, você pode escrever handlers de eventos, endpoints de API ou até aplicações web completas operando em modo serverless.



Componentes principais para executar PHP no Lambda:

  • Bref Runtime — uma camada contendo o interpretador PHP e as extensões necessárias.
  • Evento (Event) — o gatilho que aciona a função (requisição HTTP, upload de arquivo no S3, alteração no DynamoDB).
  • Handler — a função PHP ou método de classe que recebe e processa o evento.


Configuração do ambiente e primeiro exemplo



Para trabalhar, precisaremos de Composer, Docker (para build) e uma conta AWS. Vamos instalar o Bref:



composer require bref/bref


O Bref usa uma imagem Docker para testes locais e build. Após a instalação, criaremos o arquivo serverless.yml — a configuração para deploy no AWS Lambda.



Exemplo de configuração serverless.yml:

service: my-php-function

provider: name: aws region: us-east-1 runtime: provided.al2

plugins: - ./vendor/bref/bref

functions: hello: handler: index.php layers: - ${bref:layer.php-81} events: - httpApi: 'GET /hello'


Agora vamos escrever o handler mais simples — o arquivo index.php:



<?php

require __DIR__ . '/vendor/autoload.php';

return function ($event) { $name = $event['queryStringParameters']['name'] ?? 'World'; return [ 'statusCode' => 200, 'body' => "Hello, $name!", ];};


Este código retorna uma resposta JSON com uma saudação. Para executar localmente, use o comando:



vendor/bin/bref local hello


Deploy e gatilhos: de HTTP a S3



Após o teste local, você pode implantar a função na nuvem. Certifique-se de ter configurado as credentials AWS (via AWS CLI ou variáveis de ambiente). Execute:



serverless deploy


No console, você verá a URL do seu API Gateway (se o gatilho HTTP estiver configurado). Agora você pode acessar a função pelo navegador ou curl.



Outros gatilhos populares para funções PHP:

  • S3 Events — processamento de upload/remoção de arquivos.
  • SQS/SNS — processamento assíncrono de filas de mensagens.
  • CloudWatch Events — execução agendada (cron).
  • DynamoDB Streams — reação a alterações no

Blogs

Book Recommendations