Funções Serverless em PHP: AWS Lambda de A a Z — Guia Completo

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: Por que Serverless e PHP não são um oximoro



Por muito tempo, acreditou-se que PHP e arquitetura serverless eram incompatíveis. O PHP era associado a processos eternos do Apache ou Nginx, enquanto serverless era associado a Node.js ou Python. No entanto, com o surgimento de ferramentas como Bref e o suporte oficial a ambientes de execução personalizados (Custom Runtimes) no AWS Lambda, o PHP ganhou um novo fôlego.



As funções Serverless permitem executar código PHP sem gerenciar servidores. Você paga apenas pelo tempo de execução real (com precisão de milissegundos). Esta é a solução ideal para:

  • Manipuladores de webhooks (Telegram, Stripe, Slack);
  • Microsserviços com baixa carga;
  • Tarefas periódicas (cron) via CloudWatch Events;
  • Proxies de API e backends leves.


Neste artigo, vamos detalhar como configurar PHP no AWS Lambda do zero: desde a criação de funções IAM até o deploy de uma função funcional.



1. Arquitetura PHP no AWS Lambda



Como funciona o Custom Runtime

O AWS Lambda suporta nativamente apenas Java, Go, PowerShell, Node.js, C#, Python e Ruby. Para executar PHP, usamos um Custom Runtime — um arquivo executável especial (bootstrap) que se comunica com a Lambda Runtime API.



A maneira mais popular é o framework Bref. Ele vem com uma camada (Layer) pronta contendo PHP 8.x, Composer e um conjunto de extensões padrão.



// Estrutura do projeto para Brefproject/├── index.php          // Ponto de entrada├── composer.json├── serverless.yml     // Configuração de deploy└── vendor/


Três formas de deploy

  1. Bref (recomendado) — o mais simples. Usa serverless.yml e camadas prontas.
  2. Compilação manual — você compila o PHP para Amazon Linux 2 e empacota em ZIP.
  3. Imagem Docker — você usa Lambda Container Image (suportado desde 2020).


Vamos considerar a primeira opção — ela atende 90% dos casos.



2. Configuração passo a passo: da instalação à primeira requisição



Passo 1. Preparação do ambiente

Certifique-se de ter instalado:

  • PHP 8.0+ (localmente)
  • Composer
  • Node.js e npm (para Serverless Framework)
  • Utilitário aws-cli com credentials configuradas


Instale o Serverless Framework globalmente:

npm install -g serverless


Passo 2. Crie o projeto

composer create-project bref/bref my-php-lambdacd my-php-lambda


Após a inicialização, você verá o arquivo serverless.yml. Vamos editá-lo:



service: my-php-app

provider: name: aws region: eu-central-1 # Escolha a região mais próxima runtime: provided.al2 # Amazon Linux 2

plugins: - ./vendor/bref/bref

functions: hello: handler: index.php description: 'Função PHP simples' layers: - ${bref:layer.php-80} # Camada com PHP 8.0


Passo 3. Escreva a função

Abra o arquivo index.php:



<?php

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

/** * Manipulador da função Lambda * @param array $event Dados de entrada do AWS (API Gateway, SQS, etc.) * @return array Resposta em formato JSON */function handler(array $event): array{ // Registra no CloudWatch error_log('Requisição recebida: ' . json_encode($event));

$name = $event['queryStringParameters']['name'] ?? 'Convidado';

return [ 'statusCode' => 200, 'headers' => [ 'Content-Type' => 'application/json', ], 'body' => json_encode([ 'message' => "Olá, {$name}!", 'timestamp' => time(), ]), ];}


Blogs

Book Recommendations