Connettore MSK di Amazon Athena - Amazon Athena

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à.

Connettore MSK di Amazon Athena

Il connettore Amazon Athena per Amazon MSK consente ad Amazon Athena di eseguire query SQL sui tuoi argomenti di Apache Kafka. Utilizza questo connettore per visualizzare gli argomenti di Apache Kafka come tabelle e i messaggi come righe in Athena. Per ulteriori informazioni, consulta Analizzare i dati di streaming in tempo reale in Amazon MSK con Amazon Athena AWS nel blog Big Data.

Prerequisiti

Implementa il connettore sul tuo Account AWS utilizzando la console Athena o AWS Serverless Application Repository. Per ulteriori informazioni, consulta Distribuzione di un connettore origine dati o Utilizzo di AWS Serverless Application Repository per distribuire un connettore origine dati.

Limitazioni

  • Le operazioni di scrittura DDL non sono supportate.

  • Eventuali limiti Lambda pertinenti. Per ulteriori informazioni, consulta la sezione Quote Lambda nella Guida per gli sviluppatori di AWS Lambda .

  • Nelle condizioni di filtro, è necessario impostare i tipi di dati date e timestamp sul tipo di dati appropriato.

  • I tipi di dati data e ora non sono supportati per il tipo di file CSV e vengono trattati come valori varchar.

  • La mappatura in campi JSON annidati non è supportata. Il connettore mappa solo i campi di primo livello.

  • Il connettore non supporta tipi complessi. I tipi complessi vengono interpretati come stringhe.

  • Per estrarre o lavorare con valori JSON complessi, utilizza le funzioni relative a JSON disponibili in Athena. Per ulteriori informazioni, consulta Estrazione di dati JSON dalle stringhe.

  • Il connettore non supporta l'accesso ai metadati dei messaggi Kafka.

Termini

  • Gestore dei metadati: un gestore Lambda che recupera i metadati dall'istanza del database.

  • Gestore dei record: un gestore Lambda che recupera i record di dati dall'istanza del database.

  • Gestore composito: un gestore Lambda che recupera sia i metadati sia i record di dati dall'istanza del database.

  • Endpoint Kafka: una stringa di testo che stabilisce una connessione a un'istanza Kafka.

Compatibilità dei cluster

Il connettore MSK può essere utilizzato con i seguenti tipi di cluster.

  • Cluster fornito da MSK: la capacità del cluster viene specificata, monitorata e dimensionata manualmente.

  • Cluster MSK serverless: fornisce capacità on demand che si adatta automaticamente al dimensionamento degli I/O delle applicazioni.

  • Kafka standalone: una connessione diretta a Kafka (autenticata o non autenticata).

Metodi di autenticazione di supportati

Il connettore supporta i seguenti metodi di autenticazione.

Formati di dati di input supportati

Il connettore supporta i seguenti formati di dati di input.

  • JSON

  • CSV

Parametri

Utilizza le variabili di ambiente Lambda menzionate in questa sezione per configurare il connettore Athena MSK.

  • auth_type: specifica il tipo di autenticazione del cluster. Il connettore supporta i seguenti tipi di autenticazione:

    • NO_AUTH: connettiti direttamente a Kafka senza autenticazione (ad esempio, a un cluster Kafka implementato su un'istanza EC2 che non utilizza l'autenticazione).

    • SASL_SSL_PLAIN: questo metodo utilizza il protocollo di sicurezza SASL_SSL e il meccanismo SASL PLAIN.

    • SASL_PLAINTEXT_PLAIN: questo metodo utilizza il protocollo di sicurezza SASL_PLAINTEXT e il meccanismo SASL PLAIN.

      Nota

      I tipi di autenticazione SASL_SSL_PLAIN e SASL_PLAINTEXT_PLAIN sono supportati da Apache Kafka ma non da Amazon MSK.

    • SASL_SSL_AWS_MSK_IAM: il controllo degli accessi IAM per Amazon MSK ti consente di gestire sia l'autenticazione sia l'autorizzazione per il cluster MSK. AWS Le credenziali dell'utente (chiave segreta e chiave di accesso) vengono utilizzate per connettersi al cluster. Per ulteriori informazioni, consulta la pagina IAM access control (Controllo degli accessi IAM) nella Guida per gli sviluppatori di Amazon Managed Streaming per Apache Kafka.

    • SASL_SSL_SCRAM_SHA512: puoi utilizzare questo tipo di autenticazione per controllare l'accesso ai cluster Amazon MSK. Questo metodo memorizza il nome utente e la password su AWS Secrets Manager. Il segreto deve essere associato al cluster Amazon MSK. Per ulteriori informazioni, consulta la pagina Setting up SASL/SCRAM authentication for an Amazon MSK cluster (Configurazione dell'autenticazione SASL/SCRAM per un cluster Amazon MSK) nella Guida per gli sviluppatori di Amazon Managed Streaming per Apache Kafka.

    • SSL: l'autenticazione SSL utilizza i file di key store e trust store per connettersi al cluster Amazon MSK. Devi generare i file del trust store e del key store, caricarli in un bucket Amazon S3 e fornire il riferimento ad Amazon S3 quando implementi il connettore. Il key store, il trust store e la chiave SSL sono archiviati in AWS Secrets Manager. Il client deve fornire la chiave AWS segreta quando il connettore viene distribuito. Per ulteriori informazioni, consulta la pagina Mutual TLS authentication (Autenticazione TLS reciproca) nella Guida per gli sviluppatori di Amazon Managed Streaming per Apache Kafka.

      Per ulteriori informazioni, consulta Configurazione dell'autenticazione per il connettore Athena MSK.

  • certificates_s3_reference: la posizione Amazon S3 che contiene i certificati (i file key store e trust store).

  • disable_spill_encryption: (facoltativo) se impostato su True, disabilita la crittografia dello spill. L'impostazione predefinita è False: in questo modo, i dati riversati su S3 vengono crittografati utilizzando AES-GCM tramite una chiave generata casualmente o una chiave generata mediante KMS. La disabilitazione della crittografia dello spill può migliorare le prestazioni, soprattutto se la posizione dello spill utilizza la crittografia lato server.

  • kafka_endpoint: i dettagli dell'endpoint da fornire a Kafka. Ad esempio, per un cluster Amazon MSK, fornisci un URL di bootstrap per il cluster.

  • secrets_manager_secret: il nome del segreto AWS in cui vengono salvate le credenziali. Questo parametro non è obbligatorio per l'autenticazione IAM.

  • Parametri di spill: le funzioni Lambda archiviano temporaneamente ("riversano") i dati che non rientrano nella memoria di Amazon S3. Tutte le istanze del database a cui accede la stessa funzione Lambda riversano i dati nella stessa posizione. Utilizza i parametri nella tabella seguente per specificare la posizione di spill.

    Parametro Descrizione
    spill_bucket Obbligatorio. Il nome del bucket Amazon S3 in cui la funzione Lambda può riversare i dati.
    spill_prefix Obbligatorio. Il prefisso all'interno del bucket di spill in cui la funzione Lambda può riversare dati.
    spill_put_request_headers (Facoltativo) Una mappa codificata in JSON delle intestazioni e dei valori della richiesta per la richiesta putObject di Amazon S3 utilizzata per lo spill (ad esempio, {"x-amz-server-side-encryption" : "AES256"}). Per altre possibili intestazioni, consulta il riferimento PutObjectall'API di Amazon Simple Storage Service.

Supporto dei tipi di dati

Nella tabella seguente vengono illustrati i tipi di dati corrispondenti supportati per Kafka e Apache Arrow.

Kafka Arrow
CHAR VARCHAR
VARCHAR VARCHAR
TIMESTAMP MILLISECOND
DATE GIORNO
BOOLEAN BOOL
SMALLINT SMALLINT
INTEGER INT
BIGINT BIGINT
DECIMAL FLOAT8
DOUBLE FLOAT8

Partizioni e suddivisioni

Gli argomenti di Kafka sono suddivisi in partizioni. Ogni partizione è ordinata. Ogni messaggio in una partizione ha un ID incrementale chiamato offset. Ogni partizione Kafka è ulteriormente suddivisa in più suddivisioni per l'elaborazione in parallelo. I dati sono disponibili per il periodo di conservazione configurato nei cluster Kafka.

Best practice

Come procedura consigliata, utilizza il pushdown del predicato quando esegui query su Athena, come negli esempi seguenti.

SELECT * FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" WHERE integercol = 2147483647
SELECT * FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'

Configurazione del connettore MSK

Prima di poter utilizzare il connettore, è necessario configurare il cluster Amazon MSK, utilizzare il registro degli schemi di AWS Glue per definire lo schema e configurare l'autenticazione per il connettore.

Nota

Se si implementa il connettore in un VPC per accedere a risorse private e si desidera connettersi anche a un servizio accessibile al pubblico come Confluent, è necessario associare il connettore a una sottorete privata con un gateway NAT. Per ulteriori informazioni, consulta Gateway NAT nella Guida per l'utente di Amazon VPC.

Quando lavori con lo AWS Glue Schema Registry, tieni presente i seguenti punti:

  • Assicurati che il testo nel campo Description (Descrizione) del registro degli schemi di AWS Glue includa la stringa {AthenaFederationMSK}. Questa stringa di marker è obbligatoria per AWS Glue i registri utilizzati con il connettore Amazon Athena MSK.

  • Per prestazioni ottimali, utilizza solo lettere minuscole per i nomi dei database e delle tabelle. L'utilizzo di caratteri misti tra maiuscole e minuscole fa sì che il connettore esegua una ricerca senza distinzione tra maiuscole e minuscole, più impegnativa dal punto di vista computazionale.

Per configurare l'ambiente Amazon MSK e il registro AWS Glue degli schemi
  1. Configura il tuo ambiente Amazon MSK. Per ulteriori informazioni e per conoscere la procedura, consulta le sezioni Setting up Amazon MSK (Configurazione di Amazon MSK) e Getting started using Amazon MSK (Nozioni di base sull'utilizzo di Amazon MSK) nella Guida per gli sviluppatori di Amazon Managed Streaming for Apache Kafka.

  2. Carica il file di descrizione dell'argomento di Kafka (ovvero il relativo schema) in formato JSON nel registro degli schemi. AWS Glue Per ulteriori informazioni, consulta Integrating with AWS Glue Schema Registry nella Developer Guide. AWS Glue Per schemi di esempio, consulta la sezione seguente.

Utilizza il formato degli esempi in questa sezione quando carichi lo schema nel registro degli schemi di AWS Glue.

Esempio di schema di tipo JSON

Nell'esempio seguente, lo schema da creare nel registro degli AWS Glue schemi viene specificato json come valore dataFormat e da utilizzare datatypejson per. topicName

Nota

Il valore di topicName deve utilizzare le stesse maiuscole e minuscole del nome dell'argomento in Kafka.

{ "topicName": "datatypejson", "message": { "dataFormat": "json", "fields": [ { "name": "intcol", "mapping": "intcol", "type": "INTEGER" }, { "name": "varcharcol", "mapping": "varcharcol", "type": "VARCHAR" }, { "name": "booleancol", "mapping": "booleancol", "type": "BOOLEAN" }, { "name": "bigintcol", "mapping": "bigintcol", "type": "BIGINT" }, { "name": "doublecol", "mapping": "doublecol", "type": "DOUBLE" }, { "name": "smallintcol", "mapping": "smallintcol", "type": "SMALLINT" }, { "name": "tinyintcol", "mapping": "tinyintcol", "type": "TINYINT" }, { "name": "datecol", "mapping": "datecol", "type": "DATE", "formatHint": "yyyy-MM-dd" }, { "name": "timestampcol", "mapping": "timestampcol", "type": "TIMESTAMP", "formatHint": "yyyy-MM-dd HH:mm:ss.SSS" } ] } }

Esempio di schema di tipo CSV

Nell'esempio seguente, lo schema da creare nel registro degli AWS Glue schemi viene specificato csv come valore dataFormat e da utilizzare datatypecsvbulk per. topicName Il valore di topicName deve utilizzare le stesse maiuscole e minuscole del nome dell'argomento in Kafka.

{ "topicName": "datatypecsvbulk", "message": { "dataFormat": "csv", "fields": [ { "name": "intcol", "type": "INTEGER", "mapping": "0" }, { "name": "varcharcol", "type": "VARCHAR", "mapping": "1" }, { "name": "booleancol", "type": "BOOLEAN", "mapping": "2" }, { "name": "bigintcol", "type": "BIGINT", "mapping": "3" }, { "name": "doublecol", "type": "DOUBLE", "mapping": "4" }, { "name": "smallintcol", "type": "SMALLINT", "mapping": "5" }, { "name": "tinyintcol", "type": "TINYINT", "mapping": "6" }, { "name": "floatcol", "type": "DOUBLE", "mapping": "7" } ] } }

Configurazione dell'autenticazione per il connettore Athena MSK

Puoi utilizzare diversi metodi per l'autenticazione al cluster Amazon MSK, tra cui IAM, SSL, SCRAM e Kafka standalone.

La tabella seguente mostra i tipi di autenticazione per il connettore, il protocollo di sicurezza e il meccanismo SASL per ciascuno di questi metodi. Per ulteriori informazioni, consulta la pagina Authentication and authorization for Apache Kafka APIs (Autenticazione e autorizzazione per le API Apache Kafka) nella Guida per gli sviluppatori di Amazon Managed Streaming per Apache Kafka.

auth_type security.protocol sasl.mechanism
SASL_SSL_PLAIN SASL_SSL PLAIN
SASL_PLAINTEXT_PLAIN SASL_PLAINTEXT PLAIN
SASL_SSL_AWS_MSK_IAM SASL_SSL AWS_MSK_IAM
SASL_SSL_SCRAM_SHA512 SASL_SSL SCRAM-SHA-512
SSL SSL N/D
Nota

I tipi di autenticazione SASL_SSL_PLAIN e SASL_PLAINTEXT_PLAIN sono supportati da Apache Kafka ma non da Amazon MSK.

SASL/IAM

Se il cluster utilizza l'autenticazione IAM, è necessario configurare la policy IAM per l'utente al momento della configurazione del cluster. Per ulteriori informazioni, consulta la pagina IAM access control (Controllo degli accessi IAM) nella Guida per gli sviluppatori di Amazon Managed Streaming per Apache Kafka.

Per utilizzare questo tipo di autenticazione, imposta la variabile di ambiente Lambda auth_type per il connettore su SASL_SSL_AWS_MSK_IAM.

SSL

Se il cluster è autenticato tramite SSL, devi generare i file del trust store e del key store e caricarli nel bucket Amazon S3. È necessario fornire questo riferimento Amazon S3 quando implementi il connettore. Il key store, il trust store e la chiave SSL sono archiviati in AWS Secrets Manager. La chiave AWS segreta viene fornita quando si distribuisce il connettore.

Per informazioni sulla creazione di un segreto in Secrets Manager, consulta la pagina Crea un segreto AWS Secrets Manager.

Per utilizzare questo tipo di autenticazione, è necessario impostare le variabili di ambiente come illustrato nella tabella seguente.

Parametro Valore
auth_type SSL
certificates_s3_reference La posizione di Amazon S3 contenente i certificati.
secrets_manager_secret Il nome della tua chiave AWS segreta.

Dopo avere creato un segreto in Gestione dei segreti, puoi visualizzarlo nella console Gestione dei segreti.

Visualizzazione del segreto in Gestione dei segreti
  1. Apri la console di Secrets Manager all'indirizzo https://console.aws.amazon.com/secretsmanager/.

  2. Nel riquadro di navigazione, scegli Secrets (Segreti).

  3. Nella pagina Secrets (Segreti), scegli il collegamento al tuo segreto.

  4. Nella pagina dei dettagli del segreto, scegli Retrieve secret value (Recupera il valore di un segreto).

    L'immagine seguente mostra un esempio di segreto con tre coppie chiave/valore: keystore_password, truststore_password e ssl_key_password.

    Recupero di un segreto SSL in Gestione dei segreti

SASL/SCRAM

Se il cluster utilizza l'autenticazione SCRAM, fornisci la chiave Gestione dei segreti associata al cluster quando implementi il connettore. Le credenziali AWS dell'utente (chiave segreta e chiave di accesso) vengono utilizzate per autenticarsi al cluster.

Imposta le variabili di ambiente come illustrato nella tabella seguente.

Parametro Valore
auth_type SASL_SSL_SCRAM_SHA512
secrets_manager_secret Il nome della tua chiave AWS segreta.

L'immagine seguente mostra un esempio di segreto nella console Gestione dei segreti con due coppie chiave/valore: una per username e una per password.

Recupero di un segreto SCRAM in Gestione dei segreti

Informazioni sulla licenza

Utilizzando questo connettore, l'utente riconosce l'inclusione di componenti di terze parti, un elenco dei quali è disponibile nel file pom.xml relativo a questo connettore, e accetta i termini delle rispettive licenze di terze parti fornite nel file LICENSE.txt su GitHub .com.

Risorse aggiuntive

Per ulteriori informazioni su questo connettore, visita il sito corrispondente su GitHub .com.