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

Migration automatisée des messages de AWS SQS vers DynamoDB

Publié le June 15, 2020

Temps de lecture : 4 minutes

Les applications d'entreprise sont confrontées à un volume très élevé de notifications qui peuvent faire des ravages dans les applications. Plutôt que de surcharger une application, ou d'augmenter ou de réduire constamment l'échelle en fonction des pointes d'utilisation, l'utilisation d'une file d'attente de messages comme AWS SQS permet d'équilibrer la charge. En ajoutant des messages à la file d'attente, l'application peut les traiter de manière plus opportune et plus économique.

Pour cet exemple, vous créez un microservice sans serveur PHP sur AWS Lambda en utilisant cette application PHP disponible sur Github qui utilise Brefet Serverless. L'application sans serveur migre les messages à partir de AWS SQS vers Amazon DynamoDBet supprime ensuite le message de SQS une fois qu'ils ont été traités.

Conditions préalables

Instructions d'installation

Clonez le fichier nexmo-community/messaging-aws-sqs-dynamodb-php depuis GitHub, et naviguez dans le répertoire nouvellement créé pour continuer.

Utiliser Composer pour installer les dépendances

Cet exemple nécessite l'utilisation de Composer pour installer les dépendances et configurer l'autoloader.

En supposant que Composer soit installé globalement. https://getcomposer.org/doc/00-intro.md#globally

composer install

Configuration d'AWS

Vous devez créer informations d'identification AWS comme indiqué par Serverless.

Créez également une nouvelle file d'attente file d'attente SQS en utilisant les paramètres par défaut. Notez l'ARN pour une utilisation ultérieure.

Enfin, créez une nouvelle table table DynamoDB en utilisant les paramètres par défaut. Notez le nom de la table et l'ARN pour une utilisation ultérieure.

Remarque : Assurez-vous que le nom du champ de la clé primaire que vous avez défini pour la table DynamoDB correspond à l'ID du message dans vos éléments de file d'attente SQS. Pour cet exemple, nous avons utilisé messageId.

Mise à jour de l'environnement

Renommez le fichier config.yml.dist en config.yml et mettez à jour les valeurs de AWS et DynamoDBpuis enregistrez.

AWS_REGION: us-east-1
AWS_VERSION: latest
AWS_DYNAMODB_TABLE_NAME:
AWS_SQS_ARN:
AWS_DYNAMODB_TABLE_ARN:

Déployer vers Lambda

Avec toutes les mises à jour ci-dessus effectuées avec succès, vous pouvez maintenant utiliser Serverless pour déployer l'application sur AWS Lambda.

serverless deploy

Invoquer

S'il y a déjà des messages dans SQS, vous pouvez tester la migration de ces messages de SQS vers DynamoDB en invoquant la fonction à l'aide de Serverless localement :

serverless invoke -f sqstodynamo

Remarque : l'exemple ci-dessus montre l'utilisation du nom de la fonction sqstodynamo telle qu'elle a été créée dans la fonction par défaut serverless.yml dans cet exemple.

Pour les tests, vous pouvez ajouter des messages à SQS par l'intermédiaire du AWS Console ou vous pouvez consulter ce repo pour un exemple de la façon d'ajouter des SQS par le biais d'une HTTP POST typique contenant JSON.

Automatiser

Pour automatiser l'utilisation de cette fonction, vous pouvez ajouter l'élément nouvellement créé Lambda en tant que déclencheur Lambda pour votre SQS instance.

En ajoutant le déclencheur, il s'assure que tous les nouveaux SQS appelle la fonction Lambda pour déplacer automatiquement le message vers DynamoDBce qui a pour effet de retirer le message de SQS.

Contribuer

Si vous avez des questions ou rencontrez des problèmes, vous pouvez contacter @VonageDev sur Twitter ou vous renseigner dans la Communauté Vonage de Vonage. Bonne chance.

Partager:

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

Adam est un développeur et un consultant qui aime l'ultra-course, les blogs, et qui aide les autres à apprivoiser la technologie pour accomplir des choses étonnantes avec un désir insatiable de mentorat et d'aide.