0

wir haben unsere Anwendung Protokolle über Kinesis Firehose S3 gepumpt. Wir möchten, dass diese Daten auch an DynamoDB übertragen werden, damit wir die Daten, die in der Web-Benutzeroberfläche (Ember-App) angezeigt werden, effizient abfragen können. Dies ist notwendig, damit Benutzer die Daten filtern und sortieren können und so weiter. im Grunde um Abfragen Fähigkeiten über Web-UI zu unterstützen.push logs in S3 zu dynamoDB kontinuierlich

Ich schaute in AWS Data Pipeline. Dies ist zuverlässig, aber besser abgestimmt auf einmalige Importe oder geplante Importe. Wir möchten, dass der Datenfluss von s3 nach dynamoDB kontinuierlich ist.

Welche anderen Möglichkeiten gibt es, um dies zu erreichen? Das Verschieben von Daten von S3 nach DynamoDB ist keine besondere Anforderung. Wie hast du dieses Problem gelöst?

Ist ein S3-Ereignis ausgelöst Lambda eine Option? Wenn ja, wie kann man dieses Lambda fehlertolerant machen?

+0

Haben Sie AWS Athena versucht? Sie können SQL-ähnliche Abfragen für S3-Daten ausführen. – dashmug

+0

@dashmug ja. Es war unsere erste Wahl. Wir haben die Daten in s3 pariert und Athena obenauf verwendet. Der Erfolg (in Bezug auf den Umfang, die Kosten) der Nutzung von Athena wird durch die Partitionierungsstrategie bestimmt. In unserem Anwendungsfall schätzten wir, dass wir die Grenzen für Partitionen erreichen würden und daher nicht durchführbar/kosteneffektiv wären. –

Antwort

2

Für Volltext Abfrage

Sie Ihre Lösung für eine bessere Abfrage mit AWS Elasticsearch als Ziel für reiche Abfrage- wie folgt gestalten können.

  • Kinesis Firehouse Ziel zu Amazon Elastic Search einrichten. Auf diese Weise können Sie Volltextabfragen über Ihre Webbenutzerschnittstelle durchführen.
  • Sie können entweder nur fehlerhafte Datensätze oder alle Datensätze sichern. Wenn Sie alle Datensätze auswählen, sichert Kinesis Firehose alle eingehenden Quelldaten in Ihrem S3-Bucket gleichzeitig mit der Datenlieferung an Amazon Elasticsearch.

nach Wesentlichem Querying

Wenn Sie DynamoDB verwenden, um die Metadaten von Protokollen zum Speichern seines besseren S3 Trigger Lambda zu konfigurieren, welche die Datei abgerufen werden und die Metadaten zu DynamoDB aktualisieren.

+0

danke. Das sieht vielversprechend aus. Aber ist das nicht teuer, da es einen eigenen Cluster pro Domain benötigt? Wie würdest du das mit DynamoDB abwägen? –

0

Ist ein S3-Ereignis ausgelöst Lambda eine Option?

Dies ist definitiv eine Option. Sie können einen PutObject event auf Ihrem S3-Bucket erstellen und ihn Ihre Lambda-Funktion aufrufen lassen, die ihn asynchron aufruft.

Wenn ja, wie kann man diese Lambda-Fehler tolerant machen?

Standardmäßig werden asynchrone Aufrufe retry twice upon failure. Um eine Fehlertoleranz über die beiden Wiederholungsversuche hinaus sicherzustellen, können Sie Dead Letter Queues verwenden und die fehlgeschlagenen Ereignisse an eine SQS-Warteschlange oder ein SNS-Thema senden, das zu einem späteren Zeitpunkt behandelt werden soll.