Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/

Implantar no AWS Lambda com o BRef

Nesta página

  • Visão geral
  • Pré-requisitos
  • Instalar a extensão MongoDB
  • Credenciais AWS

Ref permite implantar PHP aplicativos sem servidor no Amazon Web Services Lambda. Neste tutorial, você implantará um aplicativo PHP simples com a extensão MongoDB PHP e se conectará a um cluster Atlas usando a autenticação IAM do Amazon Web Services.

Para implantar no AWS Lambda usando breve, você deve ter os seguintes componentes configurados:

  • Conta do Amazon Web Services com chaves de acesso

  • Framework sem servidor

Para saber como configurá-los, siga o Tutorial de configuração na documentação oficial da bref.

A bref usa camadas lambda para fornecer o tempo de execução do PHP. A camada bref é compilada com PHP e algumas extensões. Outras extensões, como mongodb, estão disponíveis em camadas adicionais.

Comece criando um novo diretório para seu projeto e instale as dependências MongoDB e bref necessárias.

$ mkdir bref-mongodb-app && cd bref-mongodb-app
$ composer init
$ composer require bref/bref bref/extra-php-extensions mongodb/mongodb

Em seguida, inicialize a configuração sem servidor usando o comando bref .

$ vendor/bin/bref init

Após esta série de comandos, você deve ter estes arquivos:

  • composer.json para dependências PHP instaladas no diretório vendor

  • index.php uma página da web de exemplo

  • serverless.yml para a configuração do sistema

Para validar sua configuração, tente implantar este aplicativo padrão. Isso gera um URL que renderiza uma página da web com o logotipo BRF:

$ serverless deploy

Agora que inicializou o projeto, você adicionará a mongodb extensão . Localize o nome "Configuração sem servidor" na lista de extensões fornecidas por bref/extra-php-extention. Adicione ao layers da função em serverless.yaml, este arquivo ficará assim:

plugins:
- ./vendor/bref/bref
- ./vendor/bref/extra-php-extensions
functions:
api:
handler: index.php
runtime: php-83-fpm
layers:
- ${bref-extra:mongodb-php-83}

Vamos usar o driver do MongoDB com uma página da Web que liste os planetas do conjunto de dados de exemplo do Atlas. Substitua o conteúdo de index.php pelo seguinte:

<?php
use MongoDB\Client;
require_once __DIR__ . '/vendor/autoload.php';
$uri = getenv('MONGODB_URI');
try {
$client = new Client($uri);
$planets = $client
->selectCollection('sample_guides', 'planets')
->find([], ['sort' => ['orderFromSun' => 1]]);
} catch (Throwable $exception) {
exit($exception->getMessage());
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>MongoDB Planets</title>
</head>
<body>
<ul>
<?php foreach ($planets as $planet) : ?>
<li><?= $planet->name ?></li>
<?php endforeach ?>
</ul>
</body>
</html>

Reimplante o aplicativo com o novo index.php:

$ serverless deploy

O aplicativo exibirá uma mensagem de erro porque a variável de ambiente do MONGODB_URI ainda não foi definida. Veremos como definir essa variável na próxima seção.

O Atlas permite autenticação sem senha com credenciais da AWS. Em qualquer função do Lambda, a AWS define variáveis de ambiente que contêm o token de acesso e o token secreto com a função atribuída à função distribuída.

  1. Abra a função Lambda no console do Amazon Web Services

  2. Em Configuration > Permission, copie o Role name

  3. Adicione esta função ao seu cluster Atlas com a função integrada: "Leia e escreva qualquer banco de dados"

Para saber como configurar o acesso unificado da AWS, consulte Configurar o acesso unificado da AWS na documentação do MongoDB Atlas.

Agora que as permissões foram configuradas, a função Lambda tem permissão para acessar seu cluster Atlas. Você pode configurar seu aplicativo com o endpoint Atlas.

O acesso aos clusters do Atlas também é restrito pelo endereço IP. Como o intervalo de IP fornecido com a Amazon Web Services é muito amplo, você pode permitir o acesso de qualquer lugar.

Observação

O uso de emparelhamento VPC é recomendado para isolar seu Atlas cluster da Internet. Isso exige que a função Lambda seja implantada nessa VPC do Amazon Web Services.

Encontre o URI de conexão na UI Atlas > Deployment > Database > Connect do Atlas. Selecione 3. AWS IAM. Remova a parte <AWS access key>:<AWS secret key> do URI, as credenciais serão lidas a partir das variáveis de ambiente.

Atualize o arquivo serverless.yml para passar a variável de ambiente MONGODB_URI.

provider:
environment:
MONGODB_URI: "mongodb+srv://cluster0.example.mongodb.net/?authSource=%24external&authMechanism=MONGODB-AWS&retryWrites=true&w=majority"

Finalmente, implemente com a nova configuração. Após a conclusão da implantação, você pode acessar o URL da função e ver a lista de planetas do seu Atlas cluster.

$ serverless deploy

Voltar

Dados de exemplo

Próximo

Modelagem de dados BSON