Docs Menu
Docs Home
/ /

Implementar en AWS Lambda mediante Bref

En esta guía podrás aprender a utilizar Breve Para implementar aplicaciones PHP sin servidor en AWS Lambda. Esta guía muestra cómo implementar una aplicación PHP creada con la biblioteca PHP y conectarse a un clúster Atlas mediante la autenticación de AWS IAM.

Antes de poder implementar en AWS Lambda mediante Bref, debe configurar los siguientes componentes:

  • Cuenta de AWS y claves de acceso

  • Marco sin servidor

El tutorial de configuración en la documentación de Bref describe cómo preparar estos componentes.

Bref utiliza capas Lambda para proporcionar el entorno de ejecución de PHP. bref La capa integra Bref en tu aplicación y está compilada con PHP y algunas otras extensiones. Puedes instalar las demás extensiones necesarias, como mongodb, en otras capas.

Los siguientes comandos crean un nuevo directorio de proyecto e instalan las dependencias de MongoDB y Bref:

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

Luego, inicialice la configuración sin servidor usando el comando bref:

vendor/bin/bref init

Una vez completados los comandos, su proyecto contendrá los siguientes archivos:

  • composer.json: Enumera las dependencias de PHP instaladas en el directorio vendor

  • index.php: Define una página web de muestra

  • serverless.yml:Configura la implementación

Después de inicializar el proyecto, puede agregar la mongodb extensión. Localice el Serverless config nombre en la lista de extensiones proporcionada por el paquete bref/extra-php-extension. Añádalo al layers de la función en el serverless.yaml archivo, como se muestra en el siguiente código:

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

Cree una página web que enumere los planetas a partir de los datos de muestra del Atlas reemplazando el contenido de index.php con el siguiente código:

<?php
use MongoDB\Client;
require_once __DIR__ . '/vendor/autoload.php';
$uri = getenv('MONGODB_URI');
try {
$client = new Client($uri);
$planets = $client
->getCollection('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>

Tip

Operaciones de búsqueda

El código anterior utiliza el MongoDB\Collection::find() Método para recuperar documentos. Para obtener más información sobre este método, consulte la guía "Recuperar datos".

Atlas admite la autenticación sin contraseña al usar credenciales de AWS. En cualquier función Lambda, AWS establece variables de entorno que contienen el token de acceso y el token secreto del rol asignado para implementar la función.

Los siguientes pasos demuestran cómo configurar el rol en su clúster Atlas:

  1. Abra la función Lambda en la consola de AWS.

  2. Navegar a Configuration > Permission, luego copie el Role name.

  3. Agregue este rol a su clúster Atlas en la sección Database Access. Seleccione el método de autenticación AWS IAM y configure el rol integrado Read and write any database.

Para aprender a configurar el acceso unificado a AWS, consulte Configurar el acceso unificado a AWS en la documentación de Atlas.

Después de configurar los permisos, la función Lambda podrá acceder a su clúster Atlas. A continuación, configure su aplicación para usar el punto de conexión Atlas.

El acceso a los clústeres de Atlas también se restringe por dirección IP. Dado que el rango de direcciones IP proveniente de AWS es muy amplio, se puede permitir el acceso desde todas partes. Para aprender cómo permitir el acceso universal, consulte Configurar entradas en la lista de acceso IP en la documentación de Atlas.

Nota

Se recomienda usar el emparejamiento de nube privada virtual (VPC) para aislar su clúster Atlas de internet. Esto requiere que la función Lambda se implemente en la VPC de AWS. Para obtener más información, consulte "Configurar una conexión de emparejamiento de red" en la documentación de Atlas.

A continuación, copie su cadena de conexión y elimine la sección <AWS access key>:<AWS secret key>, ya que sus credenciales se leen desde las variables de entorno.

En el archivo serverless.yml de su proyecto, configure la variable de entorno MONGODB_URI en su cadena de conexión:

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

Para obtener más información sobre el uso del MONGODB-AWS mecanismo de autenticación, consulte la sección MONGODB-AWS de la guía Mecanismos de autenticación.

Finalmente, implemente la aplicación:

serverless deploy

Después de que se complete la implementación, puedes acceder a la URL y ver la lista de planetas de tu colección.

Volver

Comprimir el tráfico de la red

En esta página