
Partager:
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.
Migration automatisée des messages de AWS SQS vers DynamoDB
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
PHP 7.4 (mise à jour
serverless.ymlpour les autres versions)Composer installé globalement
Node.js et npm
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.
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 :
Remarque : l'exemple ci-dessus montre l'utilisation du nom de la fonction
sqstodynamotelle qu'elle a été créée dans la fonction par défautserverless.ymldans 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.