Argomento Streaming gestito da Amazon per Apache Kafka come origine - Amazon EventBridge

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

Argomento Streaming gestito da Amazon per Apache Kafka come origine

Puoi utilizzare EventBridge Pipes per ricevere record da un argomento Amazon Managed Streaming for Apache Kafka (Amazon MSK). Se lo desideri, puoi filtrare o migliorare questi record prima di inviarli a una delle destinazioni disponibili per l'elaborazione. Esistono impostazioni specifiche di Amazon MSK che puoi scegliere quando configuri una pipe. EventBridge Pipes mantiene l'ordine dei record dal broker di messaggi quando invia i dati alla destinazione.

Amazon MSK è un servizio completamente gestito che consente di creare ed eseguire applicazioni che utilizzano Apache Kafka per elaborare dati in streaming. Amazon MSK semplifica la configurazione, il dimensionamento e la gestione dei cluster che eseguono Kafka. Con Amazon MSK, puoi configurare la tua applicazione per più zone di disponibilità e per la sicurezza con AWS Identity and Access Management (IAM). Amazon MSK supporta più versioni open-source di Kafka.

Amazon MSK come sorgente funziona in modo simile all'utilizzo di Amazon Simple Queue Service (Amazon SQS) o Amazon Kinesis. EventBridgeesegue internamente il polling per individuare nuovi messaggi dall'origine e quindi richiama in modo sincrono la destinazione. EventBridge legge i messaggi in batch e li fornisce alla funzione come payload di eventi. La dimensione massima del batch è configurabile. (L'impostazione predefinita è 100 messaggi.)

Per i sorgenti basati su Apache Kafka, EventBridge supporta i parametri di controllo dell'elaborazione, come le finestre di batch e la dimensione del batch.

EventBridge legge i messaggi in sequenza per ogni partizione. Dopo aver EventBridge elaborato ogni batch, esegue il commit degli offset dei messaggi in quel batch. Se la destinazione della pipe restituisce un errore per uno qualsiasi dei messaggi di un batch, EventBridge riprova l'intero batch di messaggi fino alla riuscita dell'elaborazione o alla scadenza dei messaggi.

EventBridge invia il batch di messaggi nel caso in cui richiami la destinazione. Il payload evento contiene un array di messaggi. Ogni elemento dell'array contiene i dettagli dell'argomento e dell'identificatore della partizione Amazon MSK, insieme a una data/ora e a un messaggio con codifica base64.

Eventi di esempio

L'evento di esempio seguente mostra le informazioni ricevute dalla pipe. È possibile utilizzare questo evento per creare e filtrare i modelli di eventi o per definire la trasformazione degli input. Non tutti i campi possono essere filtrati. Per ulteriori informazioni su quali campi è possibile filtrare, consulta Filtraggio Amazon EventBridge Pipes.

[ { "eventSource": "aws:kafka", "eventSourceArn": "arn:aws:kafka:sa-east-1:123456789012:cluster/vpc-2priv-2pub/751d2973-a626-431c-9d4e-d7975eb44dd7-2", "eventSourceKey": "mytopic-0", "topic": "mytopic", "partition": "0", "offset": 15, "timestamp": 1545084650987, "timestampType": "CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers": [ { "headerKey": [ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ]

Posizioni di partenza di polling e flussi

Tieni presente che il polling di origine dei flussi durante la creazione e gli aggiornamenti della pipe alla fine è coerente.

  • Durante la creazione della pipe, potrebbero essere necessari alcuni minuti per l'avvio degli eventi di polling dal flusso.

  • Durante gli aggiornamenti della pipe per la configurazione del polling di origine, potrebbero essere necessari alcuni minuti per interrompere e riavviare gli eventi di polling dal flusso.

Ciò significa che se specifichi LATEST come posizione iniziale del flusso, la pipe potrebbe perdere degli eventi inviati durante la creazione o gli aggiornamenti della pipe. Per garantire che nessun evento venga perso, specifica la posizione iniziale del flusso come TRIM_HORIZON.

Autenticazione cluster MSK

EventBridge necessita dell'autorizzazione per accedere al cluster Amazon MSK, recuperare record ed eseguire altre attività. Amazon MSK supporta diverse opzioni per il controllo dell'accesso del client al cluster MSK. Per ulteriori informazioni su quale metodo di autenticazione viene utilizzato, consulta Come sceglie un broker bootstrap EventBridge .

Accesso non autenticato

Consigliamo di utilizzare solo accessi non autenticati per lo sviluppo. L'accesso non autenticato funzionerà solo se l'autenticazione basata su ruoli IAM è disabilitata per il cluster.

Autenticazione SASL/SCRAM

Amazon MSK supporta l'autenticazione SASL/SCRAM (Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism) con crittografia Transport Layer Security (TLS). Per connetterti EventBridge al cluster, memorizzi le credenziali di autenticazione (credenziali di accesso) in un luogo segreto. AWS Secrets Manager

Per ulteriori informazioni sull'uso di Secrets Manager, consulta Autenticazione nome utente e password con AWS Secrets Manager nella Guida per gli sviluppatori di Amazon Managed Streaming for Apache Kafka.

Amazon MSK non supporta l'autenticazione SASL/PLAIN.

Autenticazione basata su ruoli IAM

È possibile utilizzare IAM per autenticare l'identità dei client che si connettono al cluster MSK. Se l'autenticazione IAM è attiva sul cluster MSK e non si fornisce un segreto per l'autenticazione, per impostazione predefinita utilizza EventBridge automaticamente l'autenticazione IAM. Per creare e implementare policy IAM basate su utenti o ruoli, utilizza l'API o la console IAM. Per ulteriori informazioni, consulta il controllo accessi IAM nella Guida per sviluppatori Amazon Managed Streaming for Apache Kafka.

Per consentire la connessione EventBridge al cluster MSK, leggere i record ed eseguire altre azioni richieste, aggiungi le seguenti autorizzazioni al ruolo di esecuzione delle tue pipe.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:DescribeGroup", "kafka-cluster:AlterGroup", "kafka-cluster:DescribeTopic", "kafka-cluster:ReadData", "kafka-cluster:DescribeClusterDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid", "arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name", "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/consumer-group-id" ] } ] }

È possibile assegnare queste autorizzazioni a un cluster, un argomento e un gruppo specifici. Per ulteriori informazioni, consulta le operazioni Kafka di Amazon MSK nella Guida per sviluppatori Amazon Managed Streaming for Apache Kafka.

Autenticazione TLS reciproca

MTLS (Mutual TLS) fornisce l'autenticazione bidirezionale tra client e server. Il client invia un certificato al server affinché il server verifichi il client e il server invia un certificato al client affinché il client verifichi il server.

Per Amazon MSK, EventBridge funge da client. È possibile configurare un certificato client (come segreto in Secrets Manager) per l'autenticazione EventBridge con i broker del cluster MSK. Il certificato client deve essere firmato da un'autorità di certificazione (CA) presente nel trust store del server. Il cluster MSK invia un certificato server con cui EventBridge autenticare i broker. EventBridge Il certificato del server deve essere firmato da una CA presente nel AWS trust store.

Amazon MSK non supporta i certificati server autofirmati, poiché tutti i broker di Amazon MSK utilizzano certificati pubblici firmati dalle CA di Amazon Trust Services, che per impostazione predefinita si affidano ai trust. EventBridge

Per ulteriori informazioni, su mTLS per Amazon MSK, consulta Autenticazione TLS reciproca nella Guida per sviluppatori Amazon Managed Streaming for Apache Kafka.

Configurazione del segreto mTLS

Il segreto CLIENT_CERTIFICATE_TLS_AUTH richiede un campo certificato e un campo chiave privata. Per una chiave privata crittografata, il segreto richiede una password per chiave privata. Il certificato e la chiave privata devono essere in formato PEM.

Nota

EventBridge supporta gli algoritmi di crittografia a chiave privata PBES1 (ma non PBES2).

Il campo certificato deve contenere un elenco di certificati, a partire dal certificato client, seguito da qualsiasi certificato intermedio, per finire con il certificato root. Ogni certificato deve iniziare su una nuova riga con la struttura seguente:

-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----

Secrets Manager supporta segreti fino a 65.536 byte, che è uno spazio sufficiente per lunghe catene di certificati.

La chiave privata deve essere in formato PKCS #8, con la struttura seguente:

-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----

Per una chiave privata crittografata, utilizza la struttura seguente:

-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----

Nell'esempio seguente viene mostrato il contenuto di un segreto per l'autenticazione mTLS utilizzando una chiave privata crittografata. Per una chiave privata crittografata, includi una password per chiave privata nel segreto.

{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }

Come sceglie un broker bootstrap EventBridge

EventBridge sceglie un broker di bootstrap in base ai metodi di autenticazione disponibili nel cluster e se fornisci un segreto per l'autenticazione. Se fornisci un segreto per MTL o SASL/SCRAM, EventBridge sceglie automaticamente quel metodo di autenticazione. Se non fornisci un segreto, EventBridge scegli il metodo di autenticazione più efficace attivo sul tuo cluster. Di seguito è riportato l'ordine di priorità in base al quale viene EventBridge selezionato un broker, dall'autenticazione più forte a quella più debole:

  • mTLS (segreto fornito per mTLS)

  • SASL/SCRAM (segreto fornito per SASL/SCRAM)

  • IAM SASL (nessun segreto fornito e autenticazione IAM attiva)

  • TLS non autenticato (nessun segreto fornito e autenticazione IAM non attiva)

  • Testo semplice (nessun segreto fornito e autenticazione IAM e TLS non autenticato non attivi)

Nota

Se non EventBridge riesce a connettersi al tipo di broker più sicuro, non tenta di connettersi a un tipo di broker diverso (più debole). Se desideri EventBridge scegliere un tipo di broker più debole, disattiva tutti i metodi di autenticazione più avanzati sul tuo cluster.

Configurazione della rete

EventBridge deve avere accesso alle risorse Amazon Virtual Private Cloud (Amazon VPC) associate al tuo cluster Amazon MSK.

  • Per accedere al VPC del tuo cluster Amazon MSK, EventBridge puoi utilizzare l'accesso a Internet in uscita per le sottoreti della tua fonte. Per le sottoreti pubbliche, deve essere un gateway NAT gestito. Per le sottoreti private può essere un gateway NAT o il proprio NAT. Assicurati che il NAT disponga di un indirizzo IP pubblico e possa connettersi a Internet.

  • EventBridge Pipes supporta anche la distribuzione di eventi tramite AWS PrivateLink, che consente di inviare eventi da una fonte di eventi situata in un Amazon Virtual Private Cloud (Amazon VPC) a una destinazione Pipes senza dover attraversare la rete Internet pubblica. È possibile utilizzare Pipes per eseguire il polling da Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka autogestito e Amazon MQ fonti che risiedono in una sottorete privata senza la necessità di implementare un gateway Internet, configurare regole firewall o configurare server proxy.

    Per configurare un endpoint VPC, consulta Creare un endpoint VPC nella Guida per l'utente.AWS PrivateLink Per il nome del servizio, seleziona. com.amazonaws.region.pipes-data

È necessario configurare i gruppi di sicurezza Amazon VPC con le seguenti regole (come requisito minimo):

  • Regole in entrata: consenti tutto il traffico sulla porta del broker Amazon MSK per i gruppi di sicurezza specificati per la tua origine.

  • Regole in uscita: consenti tutto il traffico sulla porta 443 per tutte le destinazioni. Consenti tutto il traffico sulla porta del broker Amazon MSK per i gruppi di sicurezza specificati per la tua origine.

    Le porte del broker includono:

    • 9092 per testo non crittografato

    • 9094 per TLS

    • 9096 per SASL

    • 9098 per IAM

Nota

La configurazione di Amazon VPC è individuabile tramite l'API Amazon MSK. Non è necessario configurarlo durante l'installazione.

ID gruppo di consumer personalizzabile

Quando configuri Apache Kafka come origine, puoi specificare un ID gruppo di consumer. Questo ID gruppo di consumer è un identificatore esistente per il gruppo di consumer Apache Kafka a cui vuoi che la tua pipe aderisca. È possibile utilizzare questa funzionalità per migrare qualsiasi configurazione di elaborazione dei record di Apache Kafka in corso da altri consumatori a. EventBridge

Se specifichi l'ID gruppo di consumer e sono presenti altri poller attivi in quel gruppo di consumer, Apache Kafka distribuisce i messaggi a tutti i consumer. In altre parole, EventBridge non riceve tutti i messaggi relativi all'argomento Apache Kafka. Se desideri EventBridge gestire tutti i messaggi dell'argomento, disattiva tutti gli altri sondaggi in quel gruppo di consumatori.

Inoltre, se si specifica un ID di gruppo di consumatori e Apache Kafka trova un gruppo di consumatori esistente valido con lo stesso ID, EventBridge ignora il parametro relativo alla StartingPosition pipe. EventBridge Inizia invece a elaborare i record in base all'offset impegnato del gruppo di consumatori. Se si specifica un ID del gruppo di consumatori e Apache Kafka non riesce a trovare un gruppo di consumatori esistente, EventBridge configura l'origine con quello specificato. StartingPosition

L'ID gruppo di consumer che specifichi deve essere univoco tra tutte le origini eventi di Apache Kafka. Dopo aver creato una pipe con l'ID gruppo di consumer specificato, non sarà più possibile aggiornare questo valore.

Dimensionamento automatico dell'origine di Amazon MSK

Quando crei inizialmente una fonte Amazon MSK, EventBridge assegna un consumatore all'elaborazione di tutte le partizioni nell'argomento Apache Kafka. Ogni consumatore ha più processori in esecuzione in parallelo per gestire carichi di lavoro più elevati. Inoltre, aumenta o riduce EventBridge automaticamente il numero di consumatori, in base al carico di lavoro. Per preservare l'ordinamento dei messaggi in ogni partizione, il numero massimo di consumatori è un consumatore per ogni partizione dell'argomento.

A intervalli di un minuto, EventBridge valuta il ritardo di compensazione tra i consumatori di tutte le partizioni dell'argomento. Se il ritardo è troppo elevato, la partizione riceve i messaggi più velocemente di quanto possa elaborarli. EventBridge Se necessario, EventBridge aggiunge o rimuove utenti dall'argomento. Il processo di dimensionamento di aggiunta o rimozione dei consumatori avviene entro tre minuti dalla valutazione.

Se il target è sovraccarico, EventBridge riduce il numero di consumatori. Questa azione riduce il carico di lavoro sulla pipe riducendo il numero di messaggi che i consumer possono recuperare e inviare alla pipe.