Streams do Apache Kafka como fonte - Amazon EventBridge

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Streams do Apache Kafka como fonte

O Apache Kafka é uma plataforma de streaming de eventos de código aberto que é compatível com workloads, como pipelines de dados e análises de streaming. Você pode usar o Amazon Managed Streaming for Apache Kafka (Amazon MSK) ou um cluster autogerenciado do Apache Kafka. Na AWS terminologia, um cluster autogerenciado se refere a qualquer cluster Apache Kafka não hospedado pelo. AWS Isso inclui tanto os clusters que você mesmo gerencia quanto os hospedados por um provedor terceirizado Confluent Cloud, como CloudKarafka, ou Redpanda.

Para obter mais informações sobre outras opções de AWS hospedagem para seu cluster, consulte Melhores práticas para executar o Apache Kafka AWS no blog de AWS Big Data.

O Apache Kafka, como fonte, opera de forma semelhante ao uso do Amazon Simple Queue Service (Amazon SQS) ou do Amazon Kinesis. EventBridgepesquisa internamente novas mensagens da origem e, em seguida, invoca o alvo de forma síncrona. EventBridge lê as mensagens em lotes e as fornece à sua função como uma carga útil de eventos. O tamanho máximo do lote é configurável. (O valor padrão é de 100 mensagens.)

Para fontes baseadas no Apache Kafka, EventBridge suporta parâmetros de controle de processamento, como janelas de lotes e tamanho do lote.

EventBridge envia o lote de mensagens no parâmetro event quando invoca seu canal. O payload do evento contém uma matriz de mensagens. Cada item da matriz contém detalhes do tópico do Apache Kafka e do identificador de partição do Apache Kafka, juntamente com um carimbo de data/hora e uma mensagem codificada em base64.

Eventos de exemplo

O exemplo de evento a seguir mostra as informações recebidas pelo pipe. É possível usar esse evento para criar e filtrar seus padrões de eventos ou para definir a transformação de entrada. Nem todos os campos podem ser filtrados. Para mais informações sobre quais campos podem ser filtrados, consulte Filtragem Amazon EventBridge Pipes.

[ { "eventSource": "SelfManagedKafka", "bootstrapServers": "b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "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 ] } ] } ]

Autenticação de clusters do Apache Kafka

EventBridge O Pipes suporta vários métodos de autenticação com seu cluster Apache Kafka autogerenciado. Configure o cluster Apache Kafka para utilizar um dos métodos de autenticação compatíveis. Para obter mais informações sobre a segurança do Apache Kafka, consulte a seção Segurança da documentação do Apache Kafka.

Acesso por VPC

Se você estiver usando um ambiente autogerenciado do Apache Kafka em que somente os usuários do Apache Kafka na sua VPC têm acesso aos seus corretores do Apache Kafka, você deve configurar a Amazon Virtual Private Cloud (Amazon VPC) na fonte do Apache Kafka.

Autenticação SASL/SCRAM

EventBridge O Pipes oferece suporte à autenticação Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) com criptografia Transport Layer Security (TLS). EventBridge O Pipes envia as credenciais criptografadas para autenticação no cluster. Para obter mais informações sobre a autenticação do SASL/SCRAM, consulte RFC 5802.

EventBridge O Pipes suporta autenticação SASL/PLAIN com criptografia TLS. Com a autenticação SASL/PLAIN, o EventBridge Pipes envia credenciais como texto não criptografado para o servidor.

Para a autenticação SASL, armazene as credenciais de login como um segredo no AWS Secrets Manager.

Autenticação TLS mútua

O TLS mútuo (mTLS) fornece autenticação bidirecional entre o cliente e o servidor. O cliente envia um certificado ao servidor para que o servidor verifique o cliente, e o servidor envia um certificado ao cliente para que o cliente verifique o servidor.

No Apache Kafka autogerenciado, EventBridge Pipes atua como cliente. Você configura um certificado de cliente (como um segredo no Secrets Manager) para autenticar EventBridge Pipes com seus corretores Apache Kafka. O certificado do servidor deve ser assinado por uma autoridade de certificação (CA) no armazenamento de confiança da .

O cluster Apache Kafka envia um certificado de servidor ao EventBridge Pipes para autenticar os corretores do Apache Kafka com o Pipes. EventBridge O certificado do servidor pode ser um certificado CA público ou um certificado de CA privado/autoassinado. O certificado público de CA deve ser assinado por uma CA que esteja no repositório confiável do EventBridge Pipes. Para uma CA privada/certificado autoassinado, você configura o certificado CA raiz do servidor (como um segredo no Secrets Manager). EventBridge O Pipes usa o certificado raiz para verificar os corretores Apache Kafka.

Para obter mais informações sobre o mTLS, consulte Introdução à autenticação TLS mútua para o Amazon MSK como origem.

Configurar o segredo do certificado do cliente

O segredo CLIENT_CERTIFICATE_TLS_AUTH requer um campo de certificado e um campo de chave privada. Para uma chave privada criptografada, o segredo requer uma senha de chave privada. Tanto o certificado como a chave privada devem estar no formato PEM.

nota

EventBridge O Pipes suporta os algoritmos de criptografia de chave privada PBES1 (mas não PBES2).

O campo certificate (certificado) deve conter uma lista de certificados, começando pelo certificado do cliente, seguido por quaisquer certificados intermediários e terminando com o certificado raiz. Cada certificado deve iniciar em uma nova linha com a seguinte estrutura:

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

O Secrets Manager oferece suporte a segredos de até 65.536 bytes, que é espaço suficiente para cadeias de certificados longas.

A chave privada deve estar no formato PKCS #8, com a seguinte estrutura:

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

Para uma chave privada criptografada, use a seguinte estrutura:

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

O exemplo a seguir exibe o conteúdo de um segredo para autenticação mTLS usando uma chave privada criptografada. Para uma chave privada criptografada, inclua a senha de chave privada no segredo.

{ "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-----" }

Configurar o segredo do certificado CA raiz do servidor

Este segredo é criado se seus agentes do Apache Kafka usarem criptografia TLS com certificados assinados por uma CA privada. É possível usar criptografia TLS para autenticação de VPC, SASL/SCRAM, SASL/PLAIN ou mTLS.

O segredo do certificado CA raiz do servidor requer um campo que contenha o certificado CA raiz do agente do Apache Kafka no formato PEM. O exemplo a seguir exibe a estrutura do segredo.

{ "certificate": "-----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dG... -----END CERTIFICATE-----"

Configuração de rede

Se você estiver usando um ambiente autogerenciado do Apache Kafka que usa conectividade VPC privada, EventBridge deve ter acesso aos recursos da Amazon Virtual Private Cloud (Amazon VPC) associados aos seus corretores do Apache Kafka.

  • Para acessar a VPC do seu cluster Apache Kafka, você EventBridge pode usar o acesso de saída à Internet para as sub-redes da sua fonte. Para sub-redes públicas, esse deve ser um gateway NAT gerenciado. Para sub-redes privadas, pode ser um gateway NAT ou o seu próprio NAT. Certifique-se de que o NAT tenha um endereço IP público e possa se conectar à Internet.

  • EventBridge O Pipes também suporta a entrega de eventos AWS PrivateLink, permitindo que você envie eventos de uma fonte de eventos localizada em um Amazon Virtual Private Cloud (Amazon VPC) para um destino do Pipes sem atravessar a Internet pública. Você pode usar o Pipes para pesquisar Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka autogerenciado e Amazon MQ fontes residentes em uma sub-rede privada sem a necessidade de implantar um gateway de internet, configurar regras de firewall ou configurar servidores proxy.

    Para configurar um VPC endpoint, consulte Criar um VPC endpoint no Guia do usuário.AWS PrivateLink Para nome do serviço, selecionecom.amazonaws.region.pipes-data.

Configure os grupos de segurança da Amazon VPC com as seguintes regras (no mínimo):

  • Regras de entrada — Permita todo o tráfego na porta do broker Apache Kafka para os grupos de segurança especificados para sua fonte.

  • Regras de saída: permitir todo o tráfego na porta 443 para todos os destinos. Permita todo o tráfego na porta do agente Apache Kafka para os grupos de segurança especificados para sua fonte.

    As portas do broker incluem:

    • 9092 para texto sem formatação

    • 9094 para TLS

    • 9096 para SASL

    • 9098 para IAM

Dimensionamento automático do consumidor com fontes do Apache Kafka

Quando você cria inicialmente uma fonte do Apache Kafka, EventBridge aloca um consumidor para processar todas as partições no tópico do Kafka. Cada consumidor conta com vários processadores em execução em paralelo para lidar com um aumento de workloads. Além disso, aumenta ou diminui EventBridge automaticamente o número de consumidores, com base na carga de trabalho. Para preservar a ordenação de mensagens em cada partição, o número máximo de consumidores é um consumidor por partição no tópico.

Em intervalos de um minuto, EventBridge avalia o atraso de compensação do consumidor de todas as partições no tópico. Se o atraso for muito alto, a partição está recebendo mensagens mais rápido do que EventBridge pode processá-las. Se necessário, EventBridge adiciona ou remove consumidores do tópico. O processo de escalabilidade de adicionar ou remover consumidores ocorre em até três minutos após a avaliação.

Se sua meta estiver sobrecarregada, EventBridge reduz o número de consumidores. Essa ação reduz a workload na função, reduzindo o número de mensagens que os consumidores podem recuperar e enviar para a função.