Erste Schritte mit der Streaming-Erfassung aus Amazon Kinesis Data Streams - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erste Schritte mit der Streaming-Erfassung aus Amazon Kinesis Data Streams

In diesem Thema wird beschrieben, wie Streaming-Daten aus Kinesis Data Streams mithilfe einer materialisierten Ansicht verwendet werden.

Das Einrichten der Streaming-Erfassung von Amazon Redshift beinhaltet das Erstellen eines externen Schemas, das der Streaming-Datenquelle zugeordnet ist, und das Erstellen einer materialisierten Ansicht, die auf das externe Schema verweist. Die Streaming-Erfassung von Amazon Redshift unterstützt Kinesis Data Streams als Quelle. Daher benötigen Sie eine Kinesis-Data-Streams-Quelle, bevor Sie die Streaming-Erfassung konfigurieren. Wenn Sie keine Quelle haben, befolgen Sie die Anweisungen in der Kinesis-Dokumentation unter Erste Schritte mit Amazon Kinesis Data Streams oder erstellen Sie eine in der Konsole unter Beachtung der Anweisungen unter Erstellen eines Streams über die AWS -Managementkonsole.

Die Streaming-Erfassung von Amazon Redshift verwendet eine materialisierte Ansicht, die direkt aus dem Stream aktualisiert wird, wenn REFRESH ausgeführt wird. Die materialisierte Ansicht wird der Stream-Datenquelle zugeordnet. Sie können für die Stream-Daten als Teil der materialisierten View-Definition Filter anwenden und Aggregationen durchführen. Ihre materialisierte Ansicht der Streaming-Erfassung (die materialisierte Basisansicht) kann nur auf einen Stream verweisen, aber Sie können zusätzliche materialisierte Ansichten erstellen, die mit der materialisierten Basisansicht und anderen materialisierten Ansichten oder Tabellen verknüpft sind.

Anmerkung

Streaming-Erfassung und Amazon Redshift Serverless – Die Konfigurationsschritte in diesem Thema gelten für bereitgestellte Amazon-Redshift-Cluster und Amazon Redshift Serverless. Weitere Informationen finden Sie unter Verhalten und Datentypen bei der Streaming-Aufnahme.

Angenommen, Sie haben einen Kinesis Data Streams-Stream. Dann besteht der erste Schritt darin, ein Schema in Amazon Redshift mit CREATE EXTERNAL SCHEMA zu definieren und auf eine Kinesis Data Streams-Ressource zu verweisen. Um auf Daten im Stream zuzugreifen, definieren Sie anschließend den STREAM in einer materialisierten Ansicht. Sie können Stream-Datensätze im halbstrukturierten SUPER-Format speichern oder ein Schema definieren, das dazu führt, dass Daten in Amazon Redshift-Datentypen konvertiert werden. Wenn Sie die materialisierte Ansicht abfragen, sind die zurückgegebenen Datensätze eine point-in-time Ansicht des Streams.

  1. Erstellen Sie eine IAM-Rolle mit einer Vertrauensrichtlinie, die es Ihrem Amazon Redshift-Cluster oder Ihrer Amazon-Redshift-Serverless-Arbeitsgruppe ermöglicht, die Rolle anzunehmen. Informationen zur Konfiguration der Vertrauensrichtlinie für die IAM-Rolle finden Sie unter Autorisieren von Amazon Redshift für den Zugriff auf andere AWS Dienste in Ihrem Namen. Nach der Erstellung sollte die Rolle über die folgende IAM-Richtlinie verfügen, die sie zur Kommunikation mit dem Amazon Kinesis-Datenstrom berechtigt.

    IAM-Richtlinie für einen nicht verschlüsselten Stream von Kinesis-Daten-Streams

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStreamSummary", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:*:0123456789:stream/*" }, { "Sid": "ListStream", "Effect": "Allow", "Action": "kinesis:ListStreams", "Resource": "*" } ] }

    IAM-Richtlinie für einen verschlüsselten Stream von Kinesis-Daten-Streams

    { "Version": "2012-10-17", "Statement": [{ "Sid": "ReadStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStreamSummary", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:*:0123456789:stream/*" }, { "Sid": "DecryptStream", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:0123456789:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Sid": "ListStream", "Effect": "Allow", "Action": "kinesis:ListStreams", "Resource": "*" } ] }
  2. Überprüfen Sie Ihre VPC und stellen Sie sicher, dass Ihr Amazon-Redshift-Cluster oder Amazon Redshift Serverless über eine Route verfügt, um über das Internet unter Verwendung eines NAT-Gateways oder Internet-Gateways zu den Kinesis-Data-Streams-Endpunkten zu gelangen. Wenn Sie möchten, dass der Datenverkehr zwischen Redshift und Kinesis Data Streams im AWS Netzwerk verbleibt, sollten Sie die Verwendung eines Kinesis Interface VPC-Endpoints in Betracht ziehen. Weitere Informationen finden Sie unter Verwenden von Amazon Kinesis Data Streams mit Schnittstellen-VPC-Endpunkten.

  3. Erstellen Sie in Amazon Redshift ein externes Schema, um die Daten aus Kinesis einem Schema zuzuordnen.

    CREATE EXTERNAL SCHEMA kds FROM KINESIS IAM_ROLE { default | 'iam-role-arn' };

    Die Streaming-Erfassung für Kinesis Data Streams erfordert keinen Authentifizierungstyp. Für Kinesis-Data-Streams-Anforderungen wird die in der Anweisung CREATE EXTERNAL SCHEMA definierte IAM-Rolle verwendet.

    Optional: Verwenden Sie das Schlüsselwort REGION, um die Region anzugeben, in der sich der Amazon Kinesis Data Streams oder der Amazon MSK-Stream befindet.

    CREATE EXTERNAL SCHEMA kds FROM KINESIS REGION 'us-west-2' IAM_ROLE { default | 'iam-role-arn' };

    In diesem Beispiel gibt die Region den Speicherort des Quellstreams an. IAM_ROLE ist ein Beispiel.

  4. Erstellen Sie eine materialisierte Ansicht, um die Stream-Daten zu konsumieren. Wenn bei einer Anweisung wie der folgenden ein Datensatz nicht analysiert werden kann, führt dies zu einem Fehler. Verwenden Sie einen Befehl wie diesen, wenn Sie nicht möchten, dass Fehlerdatensätze übersprungen werden.

    CREATE MATERIALIZED VIEW my_view AUTO REFRESH YES AS SELECT * FROM kds.my_stream_name;

    Bei den Namen von Kinesis-Streams wird die Groß- und Kleinschreibung beachtet. Die Namen können sowohl Groß- als auch Kleinbuchstaben enthalten. Um Daten aus Streams mit Namen in Großbuchstaben aufzunehmen, können Sie die Konfiguration enable_case_sensitive_identifier true auf Datenbankebene so einstellen. Weitere Informationen finden Sie unter Namen und Kennungen und enable_case_sensitive_identifier.

    Um die automatische Aktualisierung zu aktivieren, verwenden Sie AUTO REFRESH YES. Standardmäßig wird die manuelle Aktualisierung verwendet. Beachten Sie, dass bei der Verwendung von CAN_JSON_PARSE Datensätze, die nicht analysiert werden können, möglicherweise übersprungen werden.

    Die Metadatenspalten umfassen folgende Spalten:

    Metadatenspalte Datentyp Beschreibung
    approximate_arrival_timestamp Timestamp ohne Zeitzone Die ungefähre Zeit, zu der der Datensatz in den Kinesis-Stream eingefügt wurde
    partition_key varchar(256) Der von Kinesis verwendete Schlüssel, um den Datensatz einem Shard zuzuweisen
    shard_id char(20) Die eindeutige Kennung des Shards innerhalb des Streams, aus dem der Datensatz abgerufen wurde
    sequence_number varchar(128) Die eindeutige Kennung des Datensatzes aus dem Kinesis-Shard
    refresh_time Timestamp ohne Zeitzone Der Zeitpunkt, zu dem die Aktualisierung gestartet wurde
    kinesis_data varbyte Der Datensatz aus dem Kinesis-Stream

    Wenn Ihre Materialized View Definition Geschäftslogik enthält, sollten Sie unbedingt beachten, dass Fehler in der Geschäftslogik in einigen Fällen dazu führen können, dass die Streaming-Aufnahme blockiert wird. Dies kann dazu führen, dass Sie die materialisierte Ansicht löschen und neu erstellen müssen. Um dies zu vermeiden, empfehlen wir Ihnen, Ihre Logik so einfach wie möglich zu halten und die meisten Ihrer Geschäftslogikprüfungen an den Daten durchzuführen, nachdem sie aufgenommen wurden.

  5. Aktualisieren Sie die Ansicht. Dadurch wird Redshift aufgerufen, um Daten aus dem Stream zu lesen und Daten in die materialisierte Ansicht zu laden.

    REFRESH MATERIALIZED VIEW my_view;
  6. Fragen Sie Daten in der materialisierten Ansicht ab.

    select * from my_view;