Guida introduttiva all'acquisizione di streaming da Amazon Managed Streaming for Apache Kafka (Amazon) MSK - Amazon Redshift

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

Guida introduttiva all'acquisizione di streaming da Amazon Managed Streaming for Apache Kafka (Amazon) MSK

Questo argomento descrive come utilizzare lo streaming di dati da Amazon MSK utilizzando una vista materializzata.

Lo scopo dell'importazione dati in streaming di Amazon Redshift è semplificare il processo di importazione diretta di dati di flusso da un servizio di streaming in Amazon Redshift o in Amazon Redshift serverless. Funziona con Amazon MSK Provisioned e Amazon MSK Serverless e con Kinesis Data Streams. L'ingestione dello streaming di Amazon Redshift elimina la necessità di effettuare lo staging di un flusso Kinesis Data Streams o di un argomento Amazon MSK in Amazon S3 prima di importare i dati del flusso in Redshift.

A livello tecnico, l'ingestione dello streaming, sia da Amazon Kinesis Data Streams che da MSK Amazon, fornisce l'inserimento a bassa latenza e alta velocità di flussi o dati tematici in una vista materializzata di Amazon Redshift. Dopo la configurazione, utilizzando l'aggiornamento della vista materializzata è possibile acquisire grandi volumi di dati.

Configura l'acquisizione dello streaming di Amazon Redshift per MSK Amazon eseguendo i seguenti passaggi:

  1. Crea uno schema esterno mappato all'origine dati di flusso.

  2. Crea una vista materializzata che faccia riferimento allo schema esterno.

È necessario disporre di una MSK fonte Amazon disponibile prima di configurare l'ingestione dello streaming di Amazon Redshift. Se non disponi di una fonte, segui le istruzioni in Getting Started Using Amazon MSK.

Nota

Importazione di dati in streaming e Amazon Redshift Serverless: la procedura di configurazione descritta in questo argomento si applica sia ai cluster con provisioning di Amazon Redshift che ad Amazon Redshift Serverless. Per ulteriori informazioni, consulta Comportamento e tipi di dati relativi all'inserimento dello streaming.

Configurazione IAM delle autorizzazioni ed esecuzione dell'importazione di streaming da Kafka

Supponendo che tu abbia un MSK cluster Amazon disponibile, il primo passo è definire uno schema in Redshift CREATE EXTERNAL SCHEMA con e fare riferimento al cluster MSK Amazon come fonte di dati. Quindi, definisci lo STREAM in una vista materializzata per accedere ai dati nell'argomento. Puoi archiviare i record del tuo argomento utilizzando il VARBYTE tipo di dati Amazon Redshift predefinito o definire uno schema che converta i dati nel formato semistrutturato. SUPER Quando esegui una query sulla vista materializzata, i record restituiti sono una visualizzazione dell'argomento. point-in-time

  1. Se si utilizza AUTHENTICATION NONE per connettersi aMSK, non è richiesto alcun IAM ruolo. Tuttavia, se utilizzi AUTHENTICATION IAM o MTLS esegui l'autenticazione con il tuo cluster Amazon, il MSK cluster Amazon Redshift o lo spazio dei nomi Amazon Redshift Serverless devono avere un ruolo associato con le autorizzazioni appropriate. IAM Crea un IAM ruolo con una policy di fiducia che consenta al tuo cluster Amazon Redshift o al namespace Amazon Redshift Serverless di assumere il ruolo. Dopo aver creato il ruolo, aggiungi una delle seguenti autorizzazioni per supportare o. IAM MTLS Per TLS l'autenticazione m, i certificati utilizzati da Amazon Redshift possono essere archiviati in AWS Certificate Manager OR AWS Secrets Manager, quindi devi scegliere la politica che corrisponde al luogo in cui è archiviato il certificato. Collega il ruolo al cluster con provisioning di Amazon Redshift o allo spazio dei nomi Redshift Serverless. Per informazioni su come configurare la policy di fiducia per il IAM ruolo, consulta Autorizzazione di Amazon Redshift ad accedere ad AWS altri servizi per tuo conto.

    AUTHENTICATION IAM:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MSKIAMpolicy", "Effect": "Allow", "Action": [ "kafka-cluster:ReadData", "kafka-cluster:DescribeTopic", "kafka-cluster:Connect" ], "Resource": [ "arn:aws:kafka:*:0123456789:cluster/MyTestCluster/*", "arn:aws:kafka:*:0123456789:topic/MyTestCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:*:0123456789:group/MyTestCluster/*" ] } ] }

    AUTHENTICATIONMTLS: utilizzo di un certificato memorizzato in AWS Certificate Manager

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MSKmTLSACMpolicy", "Effect": "Allow", "Action": [ "acm:ExportCertificate" ], "Resource": [ "arn:aws:acm:us-east-1:444455556666:certificate/certificate_ID" ] } ] }

    AUTHENTICATIONMTLS: utilizzo di un certificato memorizzato in AWS Secrets Manager

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MSKmTLSSecretsManagerpolicy", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:444455556666:secret:secret_ID" ] } ] }
  2. Controlla VPC e verifica che il tuo cluster Amazon Redshift o Amazon Redshift Serverless disponga di un percorso per accedere al tuo cluster Amazon. MSK Le regole del gruppo di sicurezza in entrata per il tuo MSK cluster Amazon dovrebbero consentire il gruppo di sicurezza del tuo cluster Amazon Redshift o del tuo gruppo di lavoro Amazon Redshift Serverless. Le porte specificate dipendono dai metodi di autenticazione configurati nel tuo MSK cluster Amazon. Per ulteriori informazioni, consulta Informazioni sulle porte e Accesso dall'interno AWS ma dall'esterno diVPC.

    La tabella seguente mostra le opzioni di configurazione gratuite da impostare per l'acquisizione di streaming da Amazon: MSK

    Configurazione di Amazon Redshift MSKConfigurazione Amazon Porta da aprire tra Redshift e Amazon MSK
    AUTHENTICATION NONE TLStrasporto disabilitato 9092
    AUTHENTICATION NONE TLStrasporto abilitato 9094
    AUTHENTICATION IAM IAM 9098/9198
    AUTHENTICATION MTLS TLStrasporto abilitato 9094

    L'autenticazione di Amazon Redshift è impostata nella CREATE EXTERNAL SCHEMA dichiarazione.

    Nota

    Nel caso in cui il MSK cluster Amazon abbia l'autenticazione Mutual Transport Layer Security (mTLS) abilitata, la configurazione di Amazon Redshift per AUTHENTICATION NONE l'uso lo indirizza all'uso della porta 9094 per l'accesso non autenticato. Tuttavia, questa operazione fallirà perché la porta viene utilizzata dall'autenticazione m. TLS Per questo motivo, ti consigliamo di passare a AUTHENTICATION mtls quando usi m. TLS

  3. Abilita il VPC routing avanzato sul tuo cluster Amazon Redshift o sul gruppo di lavoro Amazon Redshift Serverless. Per ulteriori informazioni, consulta Enhancing Enhanced Routing. VPC

  4. In Amazon Redshift, crea uno schema esterno da mappare al cluster AmazonMSK. La sintassi è la seguente:

    CREATE EXTERNAL SCHEMA MySchema FROM MSK [ IAM_ROLE [ default | 'iam-role-arn' ] ] AUTHENTICATION [ none | iam | mtls ] [AUTHENTICATION_ARN 'acm-certificate-arn' | SECRET_ARN 'ssm-secret-arn' ];

    Nella FROM clausola, MSK indica che lo schema mappa i dati di Managed Kafka Services.

    AUTHENTICATIONindica il tipo di autenticazione per l'acquisizione di streaming con Amazon. MSK Sono disponibili tre tipi:

    • nessuno: specifica che non è richiesta alcuna autenticazione. Corrisponde all'accesso non autenticato su. MSK

    • iam: specifica l'autenticazioneIAM. Quando scegli questa opzione, assicurati che il IAM ruolo disponga delle autorizzazioni per IAM l'autenticazione. Per ulteriori informazioni sulla configurazione delle IAM politiche richieste, consultaConfigurazione IAM delle autorizzazioni ed esecuzione dell'importazione di streaming da Kafka.

    • mtls: specifica che la sicurezza a livello di trasporto reciproco fornisce comunicazioni sicure facilitando l'autenticazione tra un client e un server. In questo caso, il client è Redshift e il server è Amazon. MSK Per ulteriori informazioni sulla configurazione dell'ingestione dello streaming con m, consulta. TLS Autenticazione con m TLS per l'acquisizione dello streaming Redshift da Amazon MSK

    Tieni presente che MSK l'autenticazione Amazon con nome utente e password non è supportata per l'ingestione dello streaming.

    AUTHENTICATION_ARNspecifica il ARN certificato ACM Mutual Transport Layer Security (mTLS) utilizzato per stabilire una connessione crittografata.

    SECRET_ARNspecifica l'arn del AWS Secrets Manager segreto contenente il certificato che deve essere utilizzato da Amazon Redshift for m. TLS

    I seguenti esempi mostrano come impostare il broker URI per il MSK cluster Amazon quando crei lo schema esterno:

    CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION IAM URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098'

    Senza autenticazione:

    CREATE EXTERNAL SCHEMA my_schema FROM MSK AUTHENTICATION none URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9092,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9092'

    Usando m TLS

    CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION MTLS URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b- 2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' AUTHENTICATION_ARN 'acm-certificate-arn' | [ SECRET_ARN 'ssm-secret-arn' ];

    Per ulteriori informazioni sulla creazione di uno schema esterno, vedere CREATEEXTERNALSCHEMA.

  5. Crea una vista materializzata per consumare i dati dall'argomento. Utilizzate un SQL comando come nell'esempio seguente.

    CREATE MATERIALIZED VIEW MyView AUTO REFRESH YES AS SELECT * FROM MySchema."mytopic";

    I nomi degli argomenti Kafka distinguono tra maiuscole e minuscole e possono contenere lettere maiuscole e minuscole. Per importare da argomenti con nomi in maiuscolo, è possibile impostare la configurazione enable_case_sensitive_identifier a true livello di sessione o di database. Per ulteriori informazioni, consulta Nomi e identificatori e enable_case_sensitive_identifier.

    Per attivare l'aggiornamento automatico, usa AUTO REFRESH YES. Il comportamento predefinito prevede l'aggiornamento manuale.

    Le colonne di metadati includono quanto segue:

    Colonna di metadati Tipo di dati Descrizione
    kafka_partition bigint ID della partizione del record dall'argomento Kafka
    kafka_offset bigint Offset del record nell'argomento di Kafka per una determinata partizione
    kafka_timestamp_type char(1)

    Tipo di timestamp utilizzato nel record Kafka:

    • C — Registra l'ora di creazione (CREATE_TIME) sul lato client

    • L — Registra l'ora di aggiunta (LOG_ APPEND _TIME) sul lato server Kafka

    • U — L'ora di creazione del record non è disponibile (NO_ _) TIMESTAMP TYPE

    kafka_timestamp timestamp without time zone Il formato del valore timestamp per il record
    kafka_key varbyte La chiave del record Kafka
    kafka_value varbyte Il record ricevuto da Kafka
    kafka_headers super L'intestazione del record ricevuto da Kafka
    ora di aggiornamento timestamp without time zone L'ora di inizio dell'aggiornamento.

    È importante notare che se nella definizione della vista materializzata è presente una logica aziendale che genera errori di logica aziendale, in alcuni casi ciò può comportare errori di inserimento durante l'ingestione dello streaming. Ciò potrebbe comportare la necessità di eliminare e ricreare la vista materializzata. Per evitare ciò, ti consigliamo di mantenere la logica aziendale semplice e di eseguire una logica aggiuntiva sui dati dopo averli inseriti.

  6. Aggiorna la vista per invocare Amazon Redshift ed eseguire la lettura dall'argomento e il caricamento dei dati nella vista materializzata.

    REFRESH MATERIALIZED VIEW MyView;
  7. Esegui una query sui dati nella vista materializzata.

    select * from MyView;

    La vista materializzata viene aggiornata direttamente dall'argomento quando si esegue il comando REFRESH. Viene creata una vista materializzata che corrisponde all'origine dati dell'argomento Kafka. È possibile eseguire filtri e aggregazioni sui dati nell'ambito della definizione della vista materializzata. La vista materializzata dell'importazione dati in streaming (vista materializzata di base) può fare riferimento a un solo argomento Kafka, ma è possibile creare viste materializzate aggiuntive che si uniscono alla vista materializzata di base e con altre viste materializzate o tabelle.

Per ulteriori informazioni sulle limitazioni relative all'importazione dati in streaming, consulta Comportamento e tipi di dati relativi all'inserimento dello streaming.