Menu Docs

Implemente no Amazon Web Services Lambda usando o BRef

Neste guia, você aprenderá a usar o Bref para implantar aplicativos PHP sem servidor no Amazon Web Services Lambda. Este guia demonstra como implantar um aplicação PHP criado usando a biblioteca PHP e se conectar a um cluster Atlas usando a autenticação IAM do Amazon Web Services.

Antes de poder implantar no Amazon Web Services Lambda usando o bref, você deve configurar os seguintes componentes:

O tutorial de configuração na documentação do Bref descreve como preparar esses componentes.

A bref usa camadas lambda para fornecer o tempo de execução do PHP. A camada bref integra o bref ao seu aplicação e é compilada com PHP e algumas outras extensões. Você pode instalar as outras extensões necessárias, como mongodb, em outras camadas.

Os seguintes comandos criam um novo diretório de projeto e instalam as dependências MongoDB eBref:

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 a conclusão dos comandos, seu projeto conterá os seguintes arquivos:

  • composer.json: Lista as dependências PHP instaladas no diretório vendor

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

  • serverless.yml: configura a implementação

Após inicializar o projeto, você pode adicionar a extensão mongodb. Localize o Serverless config nome do na lista de extensões fornecidas pelo pacote bref/extra-php-extention . Adicione-o ao layers da função no arquivo serverless.yaml, conforme mostrado no código a seguir:

plugins:
- ./vendor/bref/bref
- ./vendor/bref/extra-php-extensions # Adds the extra Serverless plugin
functions:
api:
handler: index.php
runtime: php-83-fpm
layers:
- ${bref-extra:mongodb-php-81} # Adds the MongoDB layer

Crie uma página da web que liste planetas a partir dos dados de amostra do Atlas substituindo o conteúdo de index.php pelo seguinte código:

<?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>

Dica

Encontrar operações

O código anterior utiliza o método MongoDB\Collection::find() para recuperar documentos. Para saber mais sobre esse método, consulte o guia Retrieve Data (Recuperar dados).

O Atlas permite autenticação sem senha ao usar credenciais do Amazon Web Services. Em qualquer função do Lambda, o Amazon Web Services define variáveis de ambiente que contêm o token de acesso e o token secreto para a função atribuída para distribuir a função.

As seguintes etapas demonstram como definir o papel em seu cluster Atlas :

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

  2. Navegue até Configuration > Permission e copie o Role name.

  3. Adicione esta função ao seu cluster do Atlas na seção Database Access. Selecione o método de autenticação AWS IAM e defina o papel incorporado Read and write any database.

Para saber como configurar o acesso unificado da Amazon Web Services, consulte Configurar o acesso unificado da Amazon Web Services na documentação do Atlas.

Depois de configurar as permissões, a função Lambda tem permissão para acessar seu cluster Atlas . Em seguida, configure seu aplicação para usar o endpoint Atlas .

O acesso aos clusters do Atlas também é restrito pelo endereço IP. Como o intervalo de endereços IP que vem do Amazon Web Services é muito amplo, você pode permitir o acesso de qualquer lugar. Para saber como permitir o acesso universal, consulte Configurar entradas da lista de acesso IP na documentação do Atlas.

Observação

Recomenda-se o uso do emparelhamento Virtual Private Cloud (VPC) para isolar seu Atlas cluster da Internet. Isso exige que a função Lambda seja implantada no Amazon Web Services VPC. Para saber mais, consulte Configurar uma conexão de peering de rede na documentação do Atlas.

Em seguida, copie sua string de conexão e remova a seção <AWS access key>:<AWS secret key>, pois suas credenciais são lidas a partir de variáveis de ambiente.

No arquivo serverless.yml do seu projeto, defina a variável de ambiente MONGODB_URI para sua string de conexão:

provider:
environment:
MONGODB_URI: "<connection string without credentials>"

Para saber mais sobre como usar o mecanismo de autenticação MONGODB-AWS, consulte a seção MONGODB-AWS do guia de mecanismos de autenticação.

Por fim, implemente o aplicação:

serverless deploy

Após a conclusão da implantação, você poderá acessar o URL e ver a lista de planetas da sua coleção.