https://d226lax1qjow5r.cloudfront.net/blog/blogposts/automated-message-migration-from-aws-sqs-to-dynamodb/Blog_Message-Migration_1200x600.png

Migración automatizada de mensajes de AWS SQS a DynamoDB

Publicado el June 15, 2020

Tiempo de lectura: 4 minutos

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

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.

serverless deploy

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:

serverless invoke -f sqstodynamo

Nota: Arriba se muestra el uso del nombre de función sqstodynamo tal y como se ha creado en serverless.yml en 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.

Compartir:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpAntiguos alumnos de Vonage

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.