Tópico do Amazon Managed Streaming for Apache Kafka como uma origem - 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á.

Tópico do Amazon Managed Streaming for Apache Kafka como uma origem

Você pode usar o EventBridge Pipes para receber registros de um tópico do Amazon Managed Streaming for Apache Kafka (Amazon MSK). Opcionalmente, é possível filtrar ou aprimorar esses registros antes de enviá-los para um dos destinos disponíveis para processamento. Há configurações específicas para o Amazon MSK que você pode escolher ao configurar um canal. EventBridge O Pipes mantém a ordem dos registros do agente de mensagens ao enviar esses dados para o destino.

O Amazon MSK é um serviço totalmente gerenciado que pode ser usado na criação e a execução de aplicações que usam o Apache Kafka para processar dados de streaming. O Amazon MSK simplifica a configuração, a escalabilidade e o gerenciamento de clusters que executam o Apache Kafka. Com o Amazon MSK, você pode configurar seu aplicativo para várias zonas de disponibilidade e para segurança com AWS Identity and Access Management (IAM). O Amazon MSK é compatível com várias versões de código aberto do Kafka.

O Amazon MSK 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 lote e tamanho do lote.

EventBridge lê as mensagens sequencialmente para cada partição. Depois de EventBridge processar cada lote, ele confirma os deslocamentos das mensagens nesse lote. Se o destino do canal retornar um erro para qualquer uma das mensagens em um lote, EventBridge tente novamente o lote inteiro de mensagens até que o processamento seja bem-sucedido ou as mensagens expirem.

EventBridge envia o lote de mensagens no evento quando invoca o destino. O payload do evento contém uma matriz de mensagens. Cada item de array contém detalhes do tópico do Amazon MSK e do identificador de partição, 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": "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 ] } ] } ]

Posição inicial de sondagem e fluxo

Esteja ciente de que a origem de fluxo durante a criação e as atualizações de pipes é, finamente, consistente.

  • Durante a criação do pipe, pode levar alguns minutos para a sondagem de eventos do fluxo iniciar.

  • Durante as atualizações de pipe para a configuração de sondagem de origem, pode levar alguns minutos para interromper e reiniciar a sondagem de eventos do fluxo.

Este comportamento significa que, se especificar LATEST como posição inicial do fluxo, o mapeamento da origem do evento poderá perder eventos durante a criação ou as atualizações. Para garantir que nenhum evento seja perdido, especifique a posição inicial do fluxo como TRIM_HORIZON.

Autenticação de cluster do MSK

EventBridge precisa de permissão para acessar o cluster Amazon MSK, recuperar registros e realizar outras tarefas. O Amazon MSK oferece suporte a várias opções para controlar o acesso do cliente ao cluster do MSK. Para obter mais informações quando cada método de autenticação é usado, consulte Como EventBridge escolhe um corretor de bootstrap.

Acesso não autenticado

É recomendado usar somente o acesso não autenticado para desenvolvimento. O acesso não autenticado só funcionará se a autenticação baseada em perfis do IAM estiver desativada para o cluster.

Autenticação SASL/SCRAM

O Amazon MSK é compatível com autenticação Simple Authentication e Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) com criptografia Transport Layer Security (TLS). EventBridge Para se conectar ao cluster, você armazena as credenciais de autenticação (credenciais de login) em um segredo. AWS Secrets Manager

Para obter mais informações sobre o uso do Secrets Manager, consulte Autenticação de nome de usuário e senha com o AWS Secrets Manager, no Guia do Desenvolvedor do Amazon Managed Streaming para Apache Kafka.

O Amazon MSK não oferece suporte a autenticação SASL/PLAIN.

Autenticação baseada em função do IAM

Use o IAM para autenticar a identidade dos clientes que se conectam ao cluster do MSK. Se a autenticação do IAM estiver ativa no seu cluster MSK e você não fornecer um segredo para a autenticação, EventBridge automaticamente usará a autenticação do IAM como padrão. Para criar e implantar políticas baseadas em funções ou usuários do IAM, use o console ou a API do IAM. Para obter mais informações, consulte IAM access control (Controle de acesso do IAM) no Guia do desenvolvedor do Amazon Managed Streaming for Apache Kafka.

EventBridge Para permitir a conexão com o cluster MSK, a leitura de registros e a execução de outras ações necessárias, adicione as seguintes permissões à função de execução de seus pipes.

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

É possível definir o escopo dessas permissões para abranger clusters, tópicos e grupos específicos. Para obter mais informações, consulte Amazon MSK Kafka actions (Ações do Amazon MSK Kafka) no Guia do desenvolvedor Amazon Managed Streaming for Apache Kafka.

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.

Para o Amazon MSK, EventBridge atua como cliente. Você configura um certificado de cliente (como um segredo no Secrets Manager) para se autenticar EventBridge com os corretores em seu cluster MSK. O certificado do servidor deve ser assinado por uma autoridade de certificação (CA) no armazenamento de confiança da . O cluster MSK envia um certificado de servidor para EventBridge autenticar os corretores com. EventBridge O certificado do servidor deve ser assinado por uma CA que esteja no armazenamento AWS confiável.

O Amazon MSK não oferece suporte a certificados de servidor autoassinados, porque todos os corretores do Amazon MSK usam certificados públicos assinados pelas CAs do Amazon Trust Services, que EventBridge são confiáveis por padrão.

Para obter mais informações sobre o mTLS para o Amazon MSK, consulte Mutual TLS Authentication (Autenticação TLS mútua) no Guia do desenvolvedor Amazon Managed Streaming for Apache Kafka.

Configurar o segredo de mTLS

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

Como EventBridge escolhe um corretor de bootstrap

EventBridge escolhe um agente de bootstrap com base nos métodos de autenticação disponíveis em seu cluster e se você fornece um segredo para autenticação. Se você fornecer um segredo para mTLS ou SASL/SCRAM, escolhe EventBridge automaticamente esse método de autenticação. Se você não fornecer um segredo, EventBridge escolha o método de autenticação mais forte que esteja ativo no seu cluster. A seguir está a ordem de prioridade na qual EventBridge seleciona um corretor, da autenticação mais forte para a mais fraca:

  • mTLs (segredo fornecido para mTLs)

  • SASL/SCRAM (segredo fornecido para SASL/SCRAM)

  • SASL IAM (nenhum segredo fornecido, e a autenticação do IAM está ativa)

  • TLS não autenticado (nenhum segredo fornecido, e a autenticação do IAM não está ativa)

  • Texto simples (nenhum segredo fornecido, e a autenticação do IAM e o TLS não autenticado não estão ativos)

nota

Se não EventBridge conseguir se conectar ao tipo de corretor mais seguro, ele não tentará se conectar a um tipo de corretor diferente (mais fraco). Se você quiser EventBridge escolher um tipo de agente mais fraco, desative todos os métodos de autenticação mais fortes em seu cluster.

Configuração de rede

EventBridge deve ter acesso aos recursos da Amazon Virtual Private Cloud (Amazon VPC) associados ao seu cluster Amazon MSK.

  • Para acessar a VPC do seu cluster Amazon MSK, EventBridge você 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 agente Amazon MSK para os grupos de segurança especificados para sua origem.

  • 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 Amazon MSK para os grupos de segurança especificados para sua origem.

    As portas do broker incluem:

    • 9092 para texto simples

    • 9094 para TLS

    • 9096 para SASL

    • 9098 para IAM

nota

Sua configuração da Amazon VPC pode ser detectada pela API do Amazon MSK. Não é necessário defini-la durante a configuração.

ID de grupo de consumidores personalizável

Ao configurar o Apache Kafka como uma origem de eventos, é possível especificar um ID de grupo de consumidores. Este ID de grupo de consumidores é um identificador existente para o grupo de consumidores do Apache Kafka no qual deseja que a função do Lambda ingresse. Você pode usar esse recurso para migrar qualquer configuração contínua de processamento de registros do Apache Kafka de outros consumidores para o. EventBridge

Se você especificar um ID de grupo de consumidores e houver outros pesquisadores ativos dentro desse grupo de consumidores, o Apache Kafka distribuirá mensagens entre todos os consumidores. Em outras palavras, EventBridge não recebe todas as mensagens do tópico Apache Kafka. Se você quiser EventBridge lidar com todas as mensagens do tópico, desative qualquer outra pesquisa nesse grupo de consumidores.

Além disso, se você especificar um ID de grupo de consumidores e o Apache Kafka encontrar um grupo de consumidores válido existente com o mesmo ID, EventBridge ignorará o StartingPosition parâmetro do seu canal. Em vez disso, EventBridge começa a processar os registros de acordo com a compensação comprometida do grupo de consumidores. Se você especificar um ID de grupo de consumidores e o Apache Kafka não conseguir encontrar um grupo de consumidores existente, então EventBridge configura sua fonte com o especificado. StartingPosition

O ID do grupo de consumidores que você especificar deverá ser exclusivo entre todas as origens de eventos do Apache Kafka. Após criar um pipe com o ID do grupo de consumidores especificado, não poderá atualizar este valor.

Ajuste de escala automático da origem do Amazon MSK

Quando você cria inicialmente uma fonte do Amazon MSK, EventBridge aloca um consumidor para processar todas as partições no tópico Apache 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 no pipe, reduzindo o número de mensagens que os consumidores podem recuperar e enviar para o pipe.