Implemente no Amazon Web Services Lambda usando o BRef
Nesta página
Visão geral
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 começar
Antes de poder implantar no Amazon Web Services Lambda usando o bref, você deve configurar os seguintes componentes:
Conta e chaves de acesso do Amazon Web Services
O tutorial de configuração na documentação do Bref descreve como preparar esses componentes.
Instalar dependências
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óriovendor
index.php
: define uma página da web de exemploserverless.yml
: configura a implementação
Adicionar a extensão MongoDB à sua configuraçã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
Personalizar o Aplicativo de Amostra
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:
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> foreach ($planets as $planet) : <li>$planet->name </li> 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).
Definir credenciais de serviços web da Amazon
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 :
Abra a função Lambda no console do Amazon Web Services.
Navegue até Configuration > Permission e copie o Role name.
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.
Implemente seu aplicativo
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.