Argomento Amazon Managed Streaming per Apache Kafka come fonte in Pipes EventBridge - 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 Amazon Managed Streaming per Apache Kafka come fonte in Pipes EventBridge

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 puoi utilizzare per creare ed eseguire applicazioni che utilizzano Apache Kafka per elaborare dati in streaming. Amazon MSK semplifica la configurazione, il ridimensionamento e la gestione dei cluster che eseguono Apache Kafka. Con AmazonMSK, puoi configurare la tua applicazione per più zone di disponibilità e per la sicurezza con AWS Identity and Access Management (IAM). Amazon MSK supporta diverse versioni open source di Kafka.

Amazon MSK come fonte funziona in modo simile all'utilizzo di Amazon Simple Queue Service (AmazonSQS) 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'MSKargomento e dell'identificatore di partizione di Amazon, insieme a un timestamp e 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 degli eventi in 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.

MSKautenticazione del cluster

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

Accesso non autenticato

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

SASL/autenticazione SCRAM

Amazon MSK supporta l'autenticazione Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) 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 PLAIN l'autenticazione SASL /.

Autenticazione basata su ruoli IAM

Puoi utilizzarla IAM per autenticare l'identità dei client che si connettono al MSK cluster. Se IAM l'autenticazione è attiva nel MSK cluster e non si fornisce un segreto per l'autenticazione, per impostazione predefinita utilizza EventBridge automaticamente l'autenticazione. IAM Per creare e distribuire policy basate sugli IAM utenti o sui ruoli, utilizza la console o. IAM API Per ulteriori informazioni, consulta il controllo degli IAM accessi nella Amazon Managed Streaming for Apache Kafka Developer Guide.

Per consentire la connessione EventBridge al MSK cluster, 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 azioni di Amazon MSK Kafka nella Amazon Managed Streaming for Apache Kafka Developer Guide.

Autenticazione reciproca TLS

Mutual TLS (mTLS) 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 AmazonMSK, EventBridge funge da cliente. Si configura 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 MSK cluster 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, perché tutti i broker di Amazon MSK utilizzano certificati pubblici firmati da Amazon Trust ServicesCAs, che per impostazione predefinita si EventBridge fida.

Per ulteriori informazioni su m TLS for AmazonMSK, consulta Mutual TLS Authentication nella Amazon Managed Streaming for Apache Kafka Developer Guide.

Configurazione di m secret TLS

Il AUTH segreto CLIENT CERTIFICATE _ TLS _ _ richiede un campo certificato e un campo chiave privata. Per una chiave privata crittografata, il segreto richiede una password per chiave privata. Sia il certificato che la chiave privata devono essere in PEM formato.

Nota

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

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 seguente struttura:

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

L'esempio seguente mostra il contenuto di un segreto per la mia TLS autenticazione 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 bootstrap

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 m TLS oSASL/SCRAM, sceglie EventBridge automaticamente quel metodo di autenticazione. Se non fornisci un segreto, EventBridge sceglie il metodo di autenticazione più efficace attivo nel 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:

  • m TLS (segreto fornito per m) TLS

  • SASL/SCRAM(segreto fornito perSASL/SCRAM)

  • SASLIAM(nessun segreto fornito e IAM l'autenticazione è attiva)

  • Non autenticato TLS (nessun segreto fornito e l'IAMautenticazione non è attiva)

  • Testo semplice (nessun segreto fornito e sia IAM l'autenticazione che quella non autenticata non TLS sono attive)

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 (AmazonVPC) associate al tuo MSK cluster Amazon.

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

  • EventBridge Pipes supporta anche l'invio di eventi tramite AWS PrivateLink, che consente di inviare eventi da un'origine di eventi situata in un Amazon Virtual Private Cloud (Amazon VPC) a una destinazione Pipes senza 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, consulta Creare un VPC endpoint nella Guida per l'utente. VPC AWS PrivateLink Per il nome del servizio, seleziona. com.amazonaws.region.pipes-data

Configura i tuoi gruppi VPC di sicurezza Amazon con le seguenti regole (come minimo):

  • Regole in entrata: consenti tutto il traffico sulla porta del MSK broker Amazon 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 MSK broker Amazon per i gruppi di sicurezza specificati per la tua origine.

    Le porte del broker includono:

    • 9092 per testo in chiaro

    • 9094 per TLS

    • 9096 per SASL

    • 9098 per IAM

Nota

La tua VPC configurazione Amazon è rilevabile tramite Amazon MSK API. 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 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.

Scalabilità automatica del codice sorgente Amazon MSK

Quando crei inizialmente un MSK sorgente Amazon, 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.