
Compartir:
Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.
Migración automatizada de mensajes de AWS SQS a DynamoDB
Las aplicaciones empresariales experimentan un volumen muy elevado de notificaciones que puede causar estragos en las aplicaciones. En lugar de sobrecargar una aplicación, o escalar constantemente hacia arriba y hacia abajo en función de las ráfagas de uso, el uso de una cola de mensajes como AWS SQS puede limitar la carga. Al añadir mensajes a la cola, la aplicación puede gestionarlos de manera más oportuna y económica.
En este ejemplo, se crea un microservicio PHP sin servidor en AWS Lambda utilizando esta aplicación PHP disponible en Github que utiliza Brefy sin servidor. La aplicación sin servidor migra mensajes de AWS SQS a Amazon DynamoDBy, a continuación, elimina los mensajes de SQS una vez gestionados.
Requisitos previos
PHP 7.4 (actualización
serverless.ymlpara otras versiones)Composer instalado globalmente
Node.js y npm
Instrucciones de instalación
Clonar el archivo nexmo-community/messaging-aws-sqs-dynamodb-php de GitHub y navegue hasta el directorio recién creado para continuar.
Utilice Composer para instalar dependencias
Este ejemplo requiere el uso de Composer para instalar dependencias y configurar el autoloader.
Asumiendo que tienes Composer instalado globalmente. https://getcomposer.org/doc/00-intro.md#globally
composer install Configuración de AWS
Deberá crear credenciales de AWS como se indica en Serverless.
Además, cree una nueva cola SQS utilizando la configuración predeterminada. Anote el ARN para su uso posterior.
Por último, cree una nueva tabla tabla DynamoDB con la configuración predeterminada. Anote el nombre de la tabla y el ARN para su uso posterior.
Nota: asegúrese de que el nombre de campo de clave principal que establece para la tabla de DynamoDB coincide con el ID de mensaje de los elementos de la cola de SQS. En este ejemplo, hemos utilizado
messageId.
Actualizar el medio ambiente
Cambie el nombre del archivo config.yml.dist a config.yml y actualice los valores necesarios de AWS y DynamoDBy, a continuación, guárdelo.
AWS_REGION: us-east-1
AWS_VERSION: latest
AWS_DYNAMODB_TABLE_NAME:
AWS_SQS_ARN:
AWS_DYNAMODB_TABLE_ARN: Despliegue en Lambda
Con todo lo anterior actualizado correctamente, ahora puede utilizar Serverless para desplegar la aplicación en AWS Lambda.
Invocar
Si ya hay mensajes en SQS, puede probar la migración de éstos de SQS a DynamoDB invocando la función mediante Serverless localmente:
Nota: Arriba se muestra el uso del nombre de función
sqstodynamotal y como se ha creado enserverless.ymlen este ejemplo.
Para realizar pruebas, puede añadir mensajes a SQS a través del AWS Console o puede consultar este repositorio para ver un ejemplo de cómo añadir SQS mensajes a través de una típica HTTP POST que contiene JSON.
Automatice
Para automatizar el uso de esta función, puede añadir la nueva función Lambda como Activador Lambda para su SQS instancia.
Al añadir el disparador, se asegura de que cualquier nuevo SQS llame a la función Lambda para mover automáticamente el mensaje a DynamoDBpor lo que se elimina el mensaje de SQS.
Contribución
Si tiene alguna pregunta o se encuentra con problemas, puede ponerse en contacto con @VonageDev en Twitter o consultar en la Comunidad de Vonage en Slack. Buena suerte.