Overview
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 empezar
Antes de poder implementar en AWS Lambda mediante Bref, debe configurar los siguientes componentes:
Cuenta de AWS y claves de acceso
El tutorial de configuración en la documentación de Bref describe cómo preparar estos componentes.
Instalar dependencias
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 directoriovendorindex.php: Define una página web de muestraserverless.yml:Configura la implementación
Agregue la extensión MongoDB a su configuració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
Personalizar la aplicación de muestra
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:
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> foreach ($planets as $planet) : <li> $planet->name </li> 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".
Establecer credenciales de AWS
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:
Abra la función Lambda en la consola de AWS.
Navegar a Configuration > Permission, luego copie el Role name.
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.
Implementar su aplicació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.