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

Automatisierte Nachrichtenmigration von AWS SQS zu DynamoDB

Zuletzt aktualisiert am June 15, 2020

Lesedauer: 4 Minuten

Bei Unternehmensanwendungen kommt es zu einem sehr hohen Meldungsaufkommen, das die Anwendungen in Mitleidenschaft ziehen kann. Anstatt eine Anwendung zu überlasten oder ständig auf der Grundlage von Nutzungsstößen hoch- und runterzuskalieren, sollten Sie eine Nachrichtenwarteschlange wie AWS SQS kann die Last gedrosselt werden. Durch das Hinzufügen von Nachrichten zur Warteschlange kann die Anwendung diese zeitnah und kostenbewusst verarbeiten.

In diesem Beispiel erstellen Sie einen serverlosen PHP-Microservice auf AWS Lambda unter Verwendung dieser PHP-Anwendung, die auf Github verfügbar ist die Folgendes verwendet Brefund Serverlos. Die serverlose Anwendung migriert Nachrichten von AWS SQS zu Amazon DynamoDBund löscht dann die Nachricht aus SQS nachdem sie bearbeitet wurden.

Voraussetzungen

Anweisungen zur Einrichtung

Klonen Sie die nexmo-community/messaging-aws-sqs-dynamodb-php von GitHub, und navigieren Sie in das neu erstellte Verzeichnis, um fortzufahren.

Composer zur Installation von Abhängigkeiten verwenden

Dieses Beispiel erfordert die Verwendung von Composer, um Abhängigkeiten zu installieren und den Autoloader einzurichten.

Vorausgesetzt, Sie haben Composer global installiert. https://getcomposer.org/doc/00-intro.md#globally

composer install

AWS-Einrichtung

Sie müssen Folgendes erstellen AWS-Anmeldeinformationen wie angegeben durch Serverless.

Erstellen Sie außerdem eine neue SQS-Warteschlange mit den Standardeinstellungen an. Notieren Sie sich den ARN für die spätere Verwendung.

Erstellen Sie abschließend eine neue DynamoDB-Tabelle unter Verwendung der Standardeinstellungen. Notieren Sie sich den Tabellennamen und den ARN für die spätere Verwendung.

Hinweis: Stellen Sie sicher, dass der Name des Primärschlüsselfelds, den Sie für die DynamoDB-Tabelle festlegen, mit der Nachrichten-ID in Ihren SQS-Warteschlangenelementen übereinstimmt. Für dieses Beispiel haben wir messageId.

Update Umwelt

Benennen Sie die mitgelieferte config.yml.dist Datei in config.yml und aktualisieren Sie bei Bedarf die Werte aus AWS und DynamoDBund speichern Sie dann.

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

Auf Lambda bereitstellen

Wenn Sie alle oben genannten Punkte erfolgreich aktualisiert haben, können Sie nun mit Serverless verwenden, um die App in AWS Lambda.

serverless deploy

Rufen Sie auf.

Wenn bereits Nachrichten in SQS vorhanden sind, können Sie die Migration dieser Nachrichten von SQS nach DynamoDB testen, indem Sie die Funktion mit Serverless lokal:

serverless invoke -f sqstodynamo

Hinweis: Oben wird die Verwendung des Funktionsnamens sqstodynamo wie er in der Voreinstellung serverless.yml in diesem Beispiel.

Zu Testzwecken können Sie Nachrichten an SQS über die AWS Console Website hinzufügen, oder Sie können sich dieses Repo für ein Beispiel, wie man SQS Nachrichten durch eine typische HTTP POST Anfrage mit JSON.

Automatisieren Sie

Um die Verwendung dieser Funktion zu automatisieren, können Sie die neu erstellte Lambda als einen Lambda-Auslöser für Ihre SQS Instanz hinzufügen.

Durch Hinzufügen des Triggers wird sichergestellt, dass alle neuen SQS Nachrichten die Funktion Lambda Funktion aufruft, um die Nachricht automatisch nach DynamoDBverschoben wird, wodurch die Nachricht aus SQS.

Beitragender

Wenn Sie Fragen haben oder Probleme auftreten, können Sie sich an @VonageDev auf Twitter oder in der Vonage-Gemeinschaft Slack-Team. Viel Glück!

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpVonage Ehemalige

Adam ist ein Entwickler und Berater, der gerne Ultraläufe absolviert, bloggt und anderen dabei hilft, Technologien zu zähmen, um erstaunliche Dinge zu erreichen, und der ein unstillbares Verlangen hat, Mentoren zu sein und zu helfen.