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

È possibile utilizzare EventBridge Pipes per ricevere record da un argomento Streaming gestito da Amazon per 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 durante l'invio dei 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 l'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 origine funziona in modo simile ad Amazon Simple Queue Service (Amazon SQS) o Amazon Kinesis. EventBridge esegue internamente il polling di 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 le origini basate su Apache Kafka, EventBridge supporta i parametri di controllo dell'elaborazione, come le finestre di batch e le dimensioni del batch.

EventBridge legge i messaggi in sequenza per ogni partizione. Dopo che EventBridge ha 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 in un batch, EventBridge riprova l'intero batch di messaggi fino a quando l'elaborazione non riesce o i messaggi scadono.

EventBridge invia il batch di messaggi nell'evento quando richiama 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 ha bisogno dell'autorizzazione per accedere al cluster Amazon MSK, recuperare registri 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 EventBridge sceglie un broker di bootstrap.

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 consentire la connessione di EventBridge al cluster, è necessario archiviare le credenziali di autenticazione (credenziali di accesso) in un 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 nel tuo cluster MSK e non fornisci un segreto per l'autenticazione, per impostazione predefinita EventBridge utilizza 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 a EventBridge di connettersi al cluster MSK, leggere i record ed eseguire altre azioni richieste, aggiungi le seguenti autorizzazioni al ruolo di esecuzione della 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 autenticare EventBridge con i broker nel 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 a EventBridge per autenticare i broker con EventBridge. Il certificato server deve essere firmato da una CA che si trova nel trust store AWS.

Amazon MSK non supporta i certificati server autofirmati poiché tutti i broker di Amazon MSK utilizzano certificati pubblici firmati da autorità di certificazione di Amazon Trust Services, che EventBridge ritiene attendibili per impostazione predefinita.

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 il PBES1 (ma non PBES2) come algoritmi di crittografia a chiave privata.

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 EventBridge sceglie un broker di bootstrap

EventBridge sceglie un broker di bootstrap in base ai metodi di autenticazione disponibili nel tuo cluster e se fornisci un segreto per l'autenticazione. Se fornisci un segreto per mTLS o SASL/SCRAM, EventBridge sceglie automaticamente quel metodo di autenticazione. Se non fornisci un segreto, EventBridge seleziona il metodo di autenticazione più forte attivo sul tuo cluster. Di seguito è riportato l'ordine di priorità in cui EventBridge seleziona 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 EventBridge non riesce a connettersi al tipo di broker più sicuro, non tenta di connettersi a un tipo di broker diverso (più debole). Se vuoi che EventBridge scelga un tipo di broker più debole, disattiva tutti i metodi di autenticazione più forti sul tuo cluster.

Network configuration (Configurazione della rete)

EventBridge deve avere accesso alle risorse di Amazon Virtual Private Cloud (Amazon VPC) associate al cluster Amazon MSK. Per accedere al VPC del tuo cluster Amazon MSK, EventBridge richiede l'accesso Internet in uscita per le sottoreti della tua origine. 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.

È 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 (9092 per testo normale, 9094 per TLS, 9096 per SASL, 9098 per IAM) per i gruppi di sicurezza specificati per l'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 (9092 per testo normale, 9094 per TLS, 9096 per SASL, 9098 per IAM) per i gruppi di sicurezza specificati per l'origine.

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. Puoi utilizzare questa funzionalità per migrare qualsiasi configurazione di elaborazione di record Apache Kafka in corso da altri consumer 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 per l'argomento Apache Kafka. Se desideri che EventBridge gestisca tutti i messaggi nell'argomento, disattiva tutti gli altri poller in quel gruppo di consumer.

Inoltre, se specifichi un ID gruppo di consumer e Apache Kafka trova un gruppo di consumer esistente valido con lo stesso ID, EventBridge ignora il parametro StartingPosition per la pipe. Inizia invece ad elaborare i record in base all'offset confermato del gruppo di consumer. Se specifichi un ID gruppo di consumer e Apache Kafka non trova un gruppo di consumer esistente, EventBridge configura l'origine con la StartingPosition specificata.

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 crea inizialmente un'origine di Amazon MSK, EventBridge assegna un consumer per elaborare tutte le partizioni dell'argomento Apache Kafka. Ogni consumatore ha più processori in esecuzione in parallelo per gestire carichi di lavoro più elevati. Inoltre, EventBridge aumenta o diminuisce automaticamente il numero di consumer 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.

Ogni minuto, EventBridge valuta il ritardo di offset del consumer di tutte le partizioni nell'argomento. Se il ritardo è troppo alto, la partizione sta ricevendo messaggi più velocemente di quanto EventBridge possa elaborarli. Se necessario, EventBridge aggiunge o rimuove consumer dall'argomento. Il processo di dimensionamento di aggiunta o rimozione dei consumatori avviene entro tre minuti dalla valutazione.

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