View a markdown version of this page

Streaming di dati alle tabelle con Amazon Data Firehose - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Streaming di dati alle tabelle con Amazon Data Firehose

Amazon Data Firehose è un servizio completamente gestito per la distribuzione di dati in streaming in tempo reale verso destinazioni come Amazon S3, Amazon Redshift, Amazon OpenSearch ServiceSplunk, Apache Iceberg tabelle ed endpoint HTTP personalizzati o endpoint HTTP di proprietà di fornitori di servizi di terze parti supportati. Con Amazon Data Firehose, non è necessario scrivere applicazioni o gestire risorse. È sufficiente configurare i produttori dati perché inviino i dati a Firehose, che li distribuirà automaticamente alla destinazione specificata. È anche possibile configurare Firehose per trasformare i dati prima di distribuirli. Per ulteriori informazioni su Amazon Data Firehose, consultare Cos’è Amazon Data Firehose?

Completare queste fasi per configurare lo streaming Firehose nelle tabelle dei bucket di tabelle S3:

  1. Integrare i bucket di tabelle con i servizi di analisi di AWS.

  2. Configurare Firehose per fornire dati nelle tabelle S3. A tale scopo, crei un ruolo di servizio AWS Identity and Access Management (IAM) che consenta a Firehose di accedere alle tue tabelle.

  3. Fornire al ruolo di servizio Firehose autorizzazioni esplicite per la tabella o il namespace di tabelle. Per ulteriori informazioni, consulta Concedere le autorizzazioni necessarie.

  4. Creare un flusso Firehose che indirizza i dati alla tabella.

Creazione di un ruolo per Firehose per l'uso delle tabelle S3 come destinazione

Firehose necessita di un ruolo di servizio IAM con autorizzazioni specifiche per accedere alle AWS Glue tabelle e scrivere dati nelle tabelle S3. È necessario fornire questo ruolo IAM quando si crea un flusso Firehose.

  1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione a sinistra, seleziona Policy.

  3. Scegli Crea una policy e scegliere JSON nell'editor delle policy.

  4. Aggiungere la seguente policy in linea che concede le autorizzazioni a tutti i database e alle tabelle del catalogo dei dati. Se lo si desidera, è possibile concedere le autorizzazioni solo a tabelle e database specifici. Per utilizzare questa policy, sostituisci user input placeholders con le tue informazioni.

    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" ] } ] }

    Questa policy contiene istruzioni che consentono l'accesso a Kinesis Data Streams, invocando le funzioni Lambda e l'accesso alle chiavi. AWS KMS Se non si utilizza nessuna di queste risorse, è possibile rimuovere le rispettive istruzioni.

    Se la registrazione degli errori è abilitata, Firehose invia anche gli errori di consegna dei dati al gruppo di log e ai flussi. CloudWatch Per questo motivo, è necessario configurare i nomi del gruppo di log e del flusso di log. Per i nomi dei gruppi di log e dei flussi di log, consulta Monitor Amazon Data Firehose Using Logs. CloudWatch

  5. Dopo aver creato la policy, creare un ruolo IAM con il servizio AWS come il Tipo di entità attendibile.

  6. Per Servizio o caso d'uso scegli Kinesis. Per Caso d'uso scegli Kinesis Firehose.

  7. Scegli Successivo, quindi seleziona la policy creata in precedenza.

  8. Assegnare un nome al proprio ruolo. Verifica i dettagli del ruolo e scegli Crea ruolo. Il ruolo avrà la seguente policy di attendibilità.

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

Creazione di un flusso Firehose alle tabelle S3

La seguente procedura mostra come creare un flusso Firehose per fornire dati alle tabelle S3 utilizzando la console. I seguenti prerequisiti sono necessari per configurare un flusso Firehose alle tabelle S3.

Per fornire informazioni di instradamento a Firehose quando si configura un flusso, si utilizza il namespace come il nome del database e il nome di una tabella in tale namespace. È possibile utilizzare questi valori nella sezione Chiave unica di una configurazione del flusso Firehose per instradare i dati a una singola tabella. È inoltre possibile utilizzare questi valori per eseguire l'instradamento a una tabella utilizzando le espressioni di query JSON. Per ulteriori informazioni, consulta Instradare i record in entrata a una singola tabella Iceberg.

Per configurare un flusso su tabelle S3 (console)
  1. Apri la console Firehose all'indirizzo. https://console.aws.amazon.com/firehose/

  2. Scegli Crea un flusso Firehose.

  3. Per Origine scegli una delle seguenti origini:

    • Flusso di dati Amazon Kinesis

    • MSK Amazon

    • PUT diretto

  4. Per Destinazione scegliere Tabelle Apache Iceberg.

  5. Immettere un nome per il flusso Firehose.

  6. Configurare le impostazioni dell'origine.

  7. Per le impostazioni di destinazione, scegli Account corrente per lo streaming sulle tabelle del tuo account o Cross-account per le tabelle di un altro account.

    • Per le tabelle dell’Account corrente, selezionare il catalogo Tabelle S3 dal menu a discesa Catalogo.

    • Per le tabelle in a Cross-account, inserisci l'ARN del catalogo su cui desideri eseguire lo streaming in un altro account.

  8. Configurare i nomi di database e tabelle utilizzando la Configurazione della chiave unica, le espressioni JSONQuery o una funzione Lambda. Per ulteriori informazioni, consultare Instradare i record in entrata a una singola tabella Iceberg e Instradare i record in entrata a diverse tabelle Iceberg nella Guida per gli sviluppatori di Amazon Data Firehose.

  9. In Impostazioni di backup specificare un bucket di backup S3.

  10. Per Ruoli IAM esistenti in Impostazioni avanzate, seleziona il ruolo IAM creato per Firehose.

  11. Scegli Crea un flusso Firehose.

Per ulteriori informazioni sulle altre impostazioni che è possibile configurare per un flusso, consultare Configurare il flusso Firehose nella Guida per gli sviluppatori di Amazon Data Firehose.