Cómo configurar una función AWS Lambda basada en PHP
En esta publicación, voy a crear una función AWS lambda que se ejecuta en un tiempo de ejecución de PHP. El proceso se simplifica usando Bref. Bref es un proyecto de código abierto que brinda soporte completo para PHP y sus marcos a AWS Lambda.
Requisitos previos: Instale el compositor localmente y genere sus claves de acceso de AWS.
Los pasos son:
1. Instalar y configurar Serverless Framework
npm i -g serverlessserverless config credentials — provider aws — key <key> — secret <secret>
2. El compositor instala Bref
mdkir serverless-php-lambdacd serverless-php-lambda composer require bref/bref
3. Inicializar el proyecto Bref
vendor/bin/bref initSelect Event-driven function belowWhat kind of lambda do you want to create? (you will be able to add more functions later by editing `serverless.yml`) [Web application]: [0] Web application [1] Event-driven function
En este punto, se crea un archivo serverless.yml, como se muestra a continuación.
service: app provider: name: aws region: eu-west-2 runtime: provided.al2 plugins: - ./vendor/bref/bref functions: php-lambda: handler: index.php description: '' layers: - ${bref:layer.php-73} # Exclude files from deployment package: patterns: - '!tests/**'
El yml sin servidor anterior indica que estoy implementando una función lambda llamada php-lambda que se ejecuta en PHP 7.3 en una máquina Amazon Linux 2 (provisto.al2) en AWS Lambda.
Tenga en cuenta que el nombre de la función de Lambda, las versiones de PHP y la región de AWS se pueden actualizar antes de la implementación. Para obtener más versiones de PHP compatibles, visite bref-runtimes para obtener más detalles.
Además, se creó un index.php en la inicialización. Modifique el archivo index.php para manejar su caso de uso específico.
4. Implementar en AWS y probar
serverless deploy
La siguiente imagen muestra el código PHP de muestra que se ejecuta en AWS Lambda.
5. Agregar extensiones de PHP (opcional)
Para este ejemplo, agregaremos la extensión PHP Imagick en los siguientes pasos secundarios;
RUN composer require bref/extra-php-extensionsUPDATE plugins in serverless.yml file and add — ./vendor/bref/extra-php-extensionsUPDATE layers in serverless.yml file and add ${bref-extra:imagick-php-73}save and redeploy and retest
El nuevo serverless.yml es como se muestra a continuación.
service: app provider: name: aws region: eu-west-2 runtime: provided.al2 plugins: - ./vendor/bref/bref - ./vendor/bref/extra-php-extensions functions: php-lambda: handler: index.php description: '' layers: - ${bref:layer.php-73} - ${bref-extra:imagick-php-73} # Exclude files from deployment package: patterns: - '!tests/**'
Bref admite otras extensiones de PHP. Consulte aquí para obtener más detalles.
Enhorabuena por haber llegado hasta aquí. Si ha seguido los pasos, debe tener una función AWS lambda que se ejecuta en un tiempo de ejecución de PHP.
¡Gracias por leer! Si encuentra esto útil, me encantaría recibir sus comentarios constructivos más abajo.