Streams do Apache Kafka como fonte no Pipes EventBridge - 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 no Pipes EventBridge

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 (MSKAmazon) ou um cluster autogerenciado do Apache Kafka. Na AWS terminologia, um cluster autogerenciado se refere a qualquer cluster Apache Kafka não hospedado por. 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) ou do SQS 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 de eventos no Amazon Pipes EventBridge .

[ { "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.

VPCacesso

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

SASL/SCRAMautenticação

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 SCRAM autenticaçãoSASL/, consulte RFC5802.

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

Para SASL autenticação, você armazena as credenciais de login como uma entrada secreta. AWS Secrets Manager

TLSautenticação mútua

O Mutual TLS (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 mTLS, consulte Introdução à TLS autenticação mútua para a Amazon MSK como fonte.

Configurar o segredo do certificado do cliente

O AUTH segredo CLIENT CERTIFICATE _ TLS _ _ 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 quanto a chave privada devem estar em PEM formato.

nota

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

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 mostra o conteúdo de um segredo para minha TLS autenticação 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

Você cria esse segredo se seus corretores Apache Kafka usarem TLS criptografia com certificados assinados por uma CA privada. Você pode usar TLS criptografia para TLS autenticação VPCSCRAM, SASLSASL/PLAIN,/ou m.

O segredo do certificado de CA raiz do servidor requer um campo que contenha o formato do certificado de CA raiz do corretor Apache Kafka. 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 VPC conectividade privada, EventBridge deve ter acesso aos recursos da Amazon Virtual Private Cloud (AmazonVPC) associados aos seus corretores do Apache Kafka.

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

  • 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. Você também pode usar VPC Endpoints para oferecer suporte à entrega de clusters do Kafka em sub-redes públicas.

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

Configure seus grupos VPC de segurança da Amazon 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.