Streamen von Daten an Tabellen mit Amazon Data Firehose - Amazon Simple Storage Service

Streamen von Daten an Tabellen mit Amazon Data Firehose

Amazon Data Firehose ist ein vollständig verwalteter Service für die Bereitstellung von Echtzeit-Streaming-Daten an Zielen wie Amazon S3, Amazon Redshift, Amazon OpenSearch Service, Splunk-, Apache Iceberg-Tabellen und benutzerdefinierten HTTP-Endpunkten oder HTTP-Endpunkten, die sich im Besitz von unterstützten Drittanbietern befinden. Mit Amazon Data Firehose müssen Sie keine Anwendungen schreiben oder Ressourcen verwalten. Sie konfigurieren Ihre Datenproduzenten zum Senden von Daten an Firehose. Die Daten werden dann automatisch an das angegebene Ziel geliefert. Sie können Firehose auch so konfigurieren, dass die Daten vor der Bereitstellung transformiert werden. Weitere Informationen zu Amazon Data Firehose finden Sie unter Was ist Amazon Data Firehose?.

Gehen Sie wie folgt vor, um Firehose-Streaming zu Tabellen in S3-Tabellen-Buckets einzurichten:

  1. Sie integrieren Ihre Tabellen-Buckets in AWS-Analytikdienste.

  2. Konfigurieren Sie Firehose so, dass Daten in Ihre S3-Tabellen übertragen werden. Dazu erstellen Sie eine AWS Identity and Access Management-IAM-Servicerolle, die Firehose den Zugriff auf Ihre Tabellen ermöglicht.

  3. Sie erteilen der Firehose-Servicerolle explizite Berechtigungen für Ihre Tabelle oder den Namespace Ihrer Tabelle. Weitere Informationen finden Sie unter Lake-Formation-Berechtigungen für Ihre Tabellenressourcen erteilen.

  4. Erstellen Sie einen Firehose-Stream, der Daten an Ihre Tabelle weiterleitet.

Erstellen einer Rolle für Firehose zur Verwendung von S3 Tables als Ziel

Firehose benötigt eine IAM-Servicerolle mit spezifischen Berechtigungen, um auf AWS Glue-Tabellen zuzugreifen und Daten in S3 Tables zu schreiben. Sie müssen diese IAM-Rolle festlegen, wenn Sie einen Firehose-Stream erstellen.

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im linken Navigationsbereich Richtlinien aus.

  3. Wählen Sie im Richtlinien-Editor Richtlinie erstellen und JSON aus.

  4. Fügen Sie die folgende Inline-Richtlinie hinzu, die Berechtigungen für alle Datenbanken und Tabellen in Ihrem Datenkatalog erteilt. Wenn Sie möchten, können Sie nur bestimmten Tabellen und Datenbanken Berechtigungen erteilen. Wenn Sie diese Richtlinie verwenden möchten, ersetzen Sie user input placeholders durch eigene Informationen.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "S3TableAccessViaGlueFederation", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/*", "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog", "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/*", "arn:aws:glue:us-east-1:111122223333:table/*/*" ] }, { "Sid": "S3DeliveryErrorBucketPermission", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::error delivery bucket", "arn:aws:s3:::error delivery bucket/*" ] }, { "Sid": "RequiredWhenUsingKinesisDataStreamsAsSource", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:111122223333:stream/stream-name" }, { "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/KMS-key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::error delivery bucket/prefix*" } } }, { "Sid": "LoggingInCloudWatch", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Sid": "RequiredWhenAttachingLambdaToFirehose", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:111122223333:function:function-name:function-version" ] } ] }

    Diese Richtlinie enthält Anweisungen, die den Zugriff auf Kinesis-Datenströme, das Aufrufen von Lambda-Funktionen und den Zugriff auf AWS KMS-Schlüssel ermöglichen. Wenn Sie keine dieser Ressourcen verwenden, können Sie die entsprechenden Anweisungen entfernen.

    Wenn die Fehlerprotokollierung aktiviert ist, sendet Firehose außerdem Datenbereitstellungsfehler an Ihre CloudWatch-Protokollgruppe und -Streams. Dazu müssen Sie Namen für Protokollgruppen und Protokoll-Streams konfigurieren. Informationen zu Namen für Protokollgruppen und Protokoll-Streams finden Sie unter Amazon Data Firehose mithilfe von CloudWatch-Protokollen überwachen.

  5. Nachdem Sie die Richtlinie erstellt haben, erstellen Sie eine IAM-Rolle und wählen als vertrauenswürdigen Entitätstyp AWS-Service aus.

  6. Wählen Sie für Service or use case (Service oder Anwendungsfall) die Option Kinesis aus. Wählen Sie für Use case (Anwendungsfall) die Option Kinesis Firehose aus.

  7. Wählen Sie Next (Weiter) und dann die zuvor erstellte Richtlinie aus.

  8. Geben Sie Ihrer Rolle einen Namen. Prüfen Sie die Rollendetails und wählen Sie Create Role (Rolle erstellen). Die Rolle wird die folgende Vertrauensrichtlinie haben.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "firehose.amazonaws.com" ] } } ] }

Erstellen eines Firehose-Streams für S3 Tables

Das folgende Verfahren zeigt, wie Sie einen Firehose-Stream erstellen, um Daten mithilfe der Konsole an S3 Tables zu liefern. Die folgenden Voraussetzungen müssen erfüllt sein, um einen Firehose-Stream zu S3 Tables einzurichten.

Um Firehose bei der Konfiguration eines Streams Routinginformationen zur Verfügung zu stellen, verwenden Sie Ihren Namespace als Datenbanknamen und Namen einer Tabelle in diesem Namespace. Sie können diese Werte im Abschnitt für eindeutige Schlüssel einer Firehose-Stream-Konfiguration verwenden, um Daten an eine einzelne Tabelle weiterzuleiten. Sie können diese Werte auch verwenden, um Daten mithilfe von JSON-Abfrageausdrücken an eine Tabelle weiterzuleiten. Weitere Informationen finden Sie unter Eingehende Datensätze an eine einzelne Iceberg-Tabelle weiterleiten.

So richten Sie einen Firehose-Stream für S3 Tables ein (Konsole)
  1. Öffnen Sie die Firehose-Konsole unter https://console.aws.amazon.com/firehose/.

  2. Wählen Sie Create Firehose stream (Firehose-Stream erstellen) aus.

  3. Wählen Sie unter Source (Quelle) eine der folgenden Quellen aus:

    • Amazon Kinesis Data Streams

    • Amazon MSK

    • Direkt PUT

  4. Geben Sie für Ziel Apache Iceberg-Tabellen an.

  5. Geben Sie einen Namen für den Firehose-Stream ein.

  6. Konfigurieren Sie Ihre Source settings (Quelleneinstellungen).

  7. Wählen Sie unter Zieleinstellungen die Option Aktuelles Konto aus, um zu Tabellen in Ihrem Konto zu streamen, oder Kontoübergreifend für Tabellen in einem anderen Konto.

    • Wählen Sie für Tabellen im Aktuelles Konto Ihren S3-Tables-Katalog aus der Dropdownliste Katalog aus.

    • Geben Sie für Tabellen in einem Kontoübergreifend den Katalog-ARN des Katalogs, in den Sie streamen möchten, in einem anderen Konto ein.

  8. Konfigurieren Sie Datenbank- und Tabellennamen mithilfe der Unique Key-Konfiguration, JSONQuery-Ausdrücken oder in einer Lambda-Funktion. Weitere Informationen finden Sie unter Eingehende Datensätze an eine einzelne Iceberg-Tabelle weiterleiten und Eingehende Datensätze an verschiedene Iceberg-Tabellen weiterleiten im Entwicklerhandbuch für Amazon Data Firehose.

  9. Geben Sie unter Backup settings (Backup-Einstellungen) einen S3-Backup-Bucket an.

  10. Wählen Sie für Existing IAM roles (Vorhandene IAM-Rollen) unter Advanced settings (Erweiterte Einstellungen) die IAM-Rolle aus, die Sie für Firehose erstellt haben.

  11. Wählen Sie Create Firehose stream (Firehose-Stream erstellen) aus.

Weitere Informationen zu den anderen Einstellungen, die Sie für einen Stream konfigurieren können, schauen Sie unter Einrichten des Firehose-Streams im Entwicklerhandbuch für Amazon Data Firehose nach.