Amazon Athena Redis OSS-Konnektor - Amazon Athena

Amazon Athena Redis OSS-Konnektor

Der Amazon Athena Redis-OSS-Konnektor ermöglicht Amazon Athena die Kommunikation mit Ihren Redis-OSS-Instances, sodass Sie Ihre Redis-OSS-Daten mit SQL abfragen können. Sie können die AWS Glue Data Catalog verwenden, um Ihre Schlüsselwert-Paare für Redis-OSS virtuellen Tabellen zuzuordnen.

Im Gegensatz zu herkömmlichen relationalen Datenspeichern gibt es bei Redis OSS das Konzept von Tabelle oder Spalte nicht. Stattdessen bietet Redis OSS Schlüsselwert-Zugriffsmuster an, bei denen der Schlüssel im Wesentlichen ein string und der Wert ein string, z-set, oder hmap ist.

Sie können das AWS Glue Data Catalog verwenden, um ein Schema zu erstellen und virtuelle Tabellen zu konfigurieren. Spezielle Tabelleneigenschaften teilen dem Athena Redis OSS-Konnektor mit, wie Sie Ihre Redis-OSS-Schlüssel und -Werte einer Tabelle zuordnen. Weitere Informationen finden Sie unter Einrichten von Datenbanken und Tabellen in AWS Glue an späterer Stelle in diesem Dokument.

Dieser Konnektor verwendet keine Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren. Die Verbindungskonfiguration erfolgt über Lambda.

Wenn Sie Lake Formation in Ihrem Konto aktiviert haben, muss die IAM-Rolle für Ihren Athena-Verbund-Lambda-Konnektor, den Sie im AWS Serverless Application Repository bereitstellen, in Lake Formation über Lesezugriff auf das AWS Glue Data Catalog verfügen.

Der Amazon Athena Redis-OSS-Konnektor unterstützt Amazon MemoryDB und Amazon ElastiCache (Redis OSS).

Voraussetzungen

Parameter

Verwenden Sie die Parameter in diesem Abschnitt, um den Redis-Konnektor zu konfigurieren.

  • spill_bucket – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.

  • spill_prefix – (Optional) Ist standardmäßig ein Unterordner im angegebenen spill_bucket genannt athena-federation-spill. Wir empfehlen Ihnen, einen Amazon-S3-Speicher-Lebenszyklus an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.

  • spill_put_request_headers – (Optional) Eine JSON-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-putObject-Anforderung, die für den Überlauf verwendet wird (z. B. {"x-amz-server-side-encryption" : "AES256"}). Andere mögliche Header finden Sie unter PutObject in der API-Referenz zu Amazon Simple Storage Service.

  • kms_key_id – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS generiert werden, wiea7e63k4b-8loc-40db-a2a1-4d0en2cd8331, können Sie eine ID einer Verschlüsselung angeben.

  • disable_spill_encryption – (Optional) Bei Einstellung auf True, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist False, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine serverseitige Verschlüsselung verwendet.

  • glue_catalog – (Optional) Verwenden Sie diese Option, um einen kontoübergreifenden AWS Glue-Katalog anzugeben. Standardmäßig versucht der Konnektor, Metadaten von seinem eigenen AWS Glue-Konto abzurufen.

Einrichten von Datenbanken und Tabellen in AWS Glue

Zur Aktivierung einer AWS Glue-Tabelle zur Verwendung mit Redis-OSS können Sie die folgenden Tabelleneigenschaften für die Tabelle festlegen: redis-endpoint, redis-value-type und entweder redis-keys-zset oder redis-key-prefix.

Darüber hinaus muss jede AWS Glue-Datenbank, die Redis-OSS-Tabellen enthält, eine redis-db-flag in der URI-Eigenschaft der Datenbank haben. Zum Festlegen des Wertes der redis-db-flag-URI-Eigenschaft, verwenden Sie die AWS Glue-Konsole zum Bearbeiten der Datenbank.

Die folgende Liste enthält Beschreibungen der Tabelleneigenschaften.

  • redis-endpoint – (Erforderlich) Der hostname:port:password des Redis-OSS-Servers, der Daten für diese Tabelle enthält (z. B. athena-federation-demo.cache.amazonaws.com:6379). Alternativ können Sie den Endpunkt oder einen Teil des Endpunkts in AWS Secrets Manager durch die Verwendung von ${Secret_Name} als Wert der Tabelleneigenschaft speichern.

Anmerkung

Um das Athena-Federated-Query-Feature mit AWS Secrets Manager zu verwenden, sollte die mit Ihrer Lambda-Funktion verbundene VPC über einen Internetzugang oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen.

  • redis-keys-zset – (Erforderlich, wenn redis-key-prefix nicht verwendet wird) Eine durch Kommas getrennte Liste von Schlüsseln, deren Wert ein zset (zum Beispiel active-orders,pending-orders) ist. Jeder der Werte in der Gruppe wird als Schlüssel behandelt, der Teil der Tabelle ist. Entweder muss die redis-keys-zset-Eigenschaft oder die redis-key-prefix-Eigenschaft festgelegt sein.

  • redis-key-prefix – (Erforderlich, wenn redis-keys-zset nicht verwendet wird) Eine durch Kommas getrennte Liste von Schlüsselpräfixen zum Scannen nach Werten in der Tabelle (z. B. accounts-*,acct-). Entweder muss die redis-key-prefix-Eigenschaft oder die redis-keys-zset-Eigenschaft festgelegt sein.

  • redis-value-type – (Erforderlich) Definiert, wie die Werte für die Schlüssel definiert sind, indem entweder redis-key-prefix oder redis-keys-zset Ihrer Tabelle zugeordnet werden. Ein Literal wird einer einzelnen Spalte zugeordnet. Ein zset wird auch einer einzelnen Spalte zugeordnet, aber jeder Schlüssel kann viele Zeilen speichern. Ein Hash ermöglicht, dass jeder Schlüssel eine Zeile mit mehreren Spalten ist (z. B. ein Hash, Literal oder zset).

  • redis-ssl-flag – (Optional) Bei True wird eine Redis-Verbindung erstellt, die SSL/TLS verwendet. Der Standardwert ist False.

  • redis-cluster-flag – (Optional) Bei True wird die Unterstützung für geclusterte Redis-Instances aktiviert. Der Standardwert ist False.

  • redis-db-number – (Optional) Gilt nur für eigenständige, nicht geclusterte Instances.) Legen Sie diese Zahl (z. B. 1, 2 oder 3) fest, um sie aus einer nicht standardmäßigen Redis-Datenbank zu lesen. Die Standardeinstellung ist Redis logische Datenbank 0. Diese Nummer bezieht sich nicht auf eine Datenbank in Athena oder AWS Glue, aber auf eine logische Redis-Datenbank. Weitere Informationen finden Sie unter SELECT Index in der MySQL-Dokumentation.

Datentypen

Der Redis-OSS-Konnektor unterstützt die folgenden Datentypen. Redis-OSS-Streams werden nicht unterstützt.

Alle Redis-OSS-Werte werden abgerufen als string-Datentyp. Anschließend werden sie in einen der folgenden Apache Arrow-Datentypen konvertiert, basierend darauf, wie Ihre Tabellen in AWS Glue Data Catalog definiert sind.

AWS Glue -Datentyp Apache Arrow-Datentyp
int INT
Zeichenfolge VARCHAR
bigint BIGINT
double FLOAT8
float FLOAT4
smallint SMALLINT
tinyint TINYINT
boolesch BIT
Binary VARBINARY

Erforderliche Berechtigungen

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im Policies-Abschnitt der athena-redis.yaml-Datei. In der folgenden Liste sind die erforderlichen Berechtigungen zusammengefasst.

  • Amazon-S3-Schreibzugriff – Der Konnektor benötigt Schreibzugriff auf einen Speicherort in Amazon S3, um Ergebnisse aus großen Abfragen zu übertragen.

  • Athena GetQueryExecution – Der Konnektor verwendet diese Berechtigung, um ein Fast-Fail durchzuführen, wenn die vorgeschaltete Athena-Abfrage beendet wurde.

  • AWS Glue Data Catalog – Der Redis-Konnektor benötigt schreibgeschützten Zugriff auf AWS Glue Data Catalog, um Schemainformationen zu erhalten.

  • CloudWatch Logs – Der Konnektor benötigt Zugriff auf CloudWatch Logs zum Speichern von Protokollen.

  • AWS Secrets Manager-Lesezugriff – Wenn Sie Redis-Endpunktdetails in Secrets Manager speichern möchten, müssen Sie dem Konnektor Zugriff auf diese Secrets gewähren.

  • Zugriff auf VPC – Der Konnektor erfordert die Fähigkeit, Schnittstellen an Ihre VPC anzuhängen und zu trennen, damit diese eine Verbindung zu dieser herstellen und mit Ihren Redis-Instances kommunizieren kann.

Leistung

Der Redis-OSS-Konnektor von Athena versucht, Abfragen für Ihre Redis-OSS-Instance entsprechend dem von Ihnen definierten Tabellentyp zu parallelisieren (z. B. zset- oder Präfix-Schlüssel).

Der Athena-Redis-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren. Abfragen, die ein Prädikat für den Primärschlüssel enthalten, schlagen jedoch mit einer Zeitüberschreitung fehl. LIMIT-Klauseln reduzieren die Menge der gescannten Daten, aber wenn Sie kein Prädikat angeben, sollten Sie davon ausgehen, dass SELECT-Abfragen mit einer LIMIT-Klausel mindestens 16 MB Daten scannen. Der Redis-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Pass-Through-Abfragen

Der Redis-Connector unterstützt Pass-Through-Abfragen. Sie können diese Feature verwenden, um Abfragen, die Lua-Skript verwenden, in Redis-Datenbanken auszuführen.

Um Pass-Through-Abfragen mit Redis zu verwenden, verwenden Sie die folgende Syntax:

SELECT * FROM TABLE( system.script( script => 'return redis.[call|pcall](query_script)', keys => '[key_pattern]', argv => '[script_arguments]' ))

Im folgenden Beispiel wird ein Lua-Skript ausgeführt, um den Wert bei Schlüssel l:a abzurufen.

SELECT * FROM TABLE( system.script( script => 'return redis.call("GET", KEYS[1])', keys => '[l:a]', argv => '[]' ))

Lizenzinformationen

Das Amazon Athena Redis-Konnektor-Projekt ist lizenziert unter Apache-2.0-Lizenz.

Weitere Ressourcen

Weitere Informationen zu diesem Konnektor finden Sie unter der entsprechenden Seite auf GitHub.com.