
Teilen Sie:
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.
Automatisierte Nachrichtenmigration von AWS SQS zu DynamoDB
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
PHP 7.4 (Aktualisierung
serverless.ymlfür andere Versionen)Composer installiert global
Node.js und npm
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.
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:
Hinweis: Oben wird die Verwendung des Funktionsnamens
sqstodynamowie er in der Voreinstellungserverless.ymlin 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!