Funções Serverless em PHP: 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: por que Serverless e PHP?

\n\n

Por muito tempo, acreditou-se que PHP e computação serverless eram incompatíveis. No entanto, com o surgimento dos runtimes personalizados do AWS Lambda e o desenvolvimento de ferramentas como Bref, a situação mudou drasticamente. Hoje, você pode executar aplicações PHP em uma infraestrutura totalmente gerenciada do AWS Lambda, pagando apenas pelo tempo real de execução do código.

\n\n

Neste artigo, vamos abordar como criar, configurar e implantar uma função Serverless em PHP usando AWS Lambda. Você aprenderá sobre conceitos-chave, problemas típicos e melhores práticas. O material é voltado para desenvolvedores PHP familiarizados com os fundamentos da AWS, mas tentaremos explicar tudo da forma mais detalhada possível.

\n\n

Ao final do guia, você será capaz de executar seu primeiro endpoint PHP na nuvem sem um único servidor dedicado.

\n\n

1. Arquitetura do PHP Serverless no AWS Lambda

\n\n

1.1. Como o AWS Lambda executa PHP?

\n\n

O ambiente nativo do Lambda não suporta PHP diretamente. Para executar código PHP, é usada uma camada especial — o Custom Runtime. Ele consiste em um arquivo executável (geralmente em Python ou Bash) que inicia o interpretador PHP, passa o evento (event) e retorna o resultado.

\n\n

A ferramenta mais popular para isso é o Bref (Bare-metal PHP for AWS Lambda). Ele fornece uma imagem PHP pronta com configurações otimizadas para o ambiente serverless.

\n\n

O processo básico é o seguinte:

\n
    \n
  1. O cliente envia uma requisição HTTP para o API Gateway.
  2. \n
  3. O API Gateway converte a requisição em um evento JSON e o encaminha para o Lambda.
  4. \n
  5. O Lambda inicia o Custom Runtime, que inicializa o PHP-FPM.
  6. \n
  7. O script PHP processa o evento e retorna a resposta.
  8. \n
\n\n

1.2. Componentes-chave da stack

\n
    \n
  • AWS Lambda — unidade de computação.
  • \n
  • API Gateway — interface HTTP para chamar a função.
  • \n
  • Bref — runtime PHP para Lambda.
  • \n
  • Serverless Framework (opcional) — ferramenta para deploy.
  • \n
  • Amazon S3 / DynamoDB — armazenamento de dados (se necessário).
  • \n
\n\n

2. Configuração passo a passo: do projeto ao deploy

\n\n

2.1. Instalação das ferramentas

\n

Para trabalhar, você precisará de:

\n
    \n
  • PHP 8.1+ com as extensões mbstring, curl, json.
  • \n
  • Composer — gerenciador de dependências.
  • \n
  • Node.js e npm (para o Serverless Framework).
  • \n
  • Uma conta AWS com um usuário IAM configurado.
  • \n
\n\n

Instale o Serverless Framework globalmente:

\n
npm install -g serverless
\n\n

2.2. Criando o projeto com Bref

\n

Crie um diretório para o projeto e inicialize-o:

\n
mkdir php-lambda-demo\ncd php-lambda-demo\ncomposer require bref/bref
\n\n

Crie o arquivo index.php — esta será nossa função:

\n
<?php\nrequire __DIR__ . '/vendor/autoload.php';\n\nreturn function ($event) {\n    $name = $event['queryStringParameters']['name'] ?? 'World';\n    \n    return [\n        'statusCode' => 200,\n        'headers'    => ['Content-Type' => 'text/plain'],\n        'body'       => "Hello, {$name}! This is Serverless PHP on AWS Lambda."\n    ];\n};
\n\n

Observe: a função deve retornar um array com as chaves statusCode, headers e body. Este é o formato padrão de resposta para integração com o API Gateway.

\n\n

2.3. Configuração do serverless.yml

\n

Crie o arquivo serverless.yml na raiz do projeto:

\n
service: php-lambda-demo\n\nprovider:\n  name: aws\n  region: eu-central-1\n  runtime: provided.al2\n\nplugins:\n  - ./vendor/bref/bref\n\nfunction                

Blogs

Book Recommendations