Apache Kafka transmite como fuente - Amazon EventBridge

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Apache Kafka transmite como fuente

Apache Kafka es una plataforma de secuencia de eventos de código abierto que admite cargas de trabajo como canalizaciones de datos y análisis de streaming. Puede utilizar Amazon Managed Streaming for Apache Kafka (Amazon MSK) o un clúster de Apache Kafka autogestionado. En AWS terminología, un clúster autogestionado se refiere a cualquier clúster de Apache Kafka que no esté hospedado por. AWS Esto incluye tanto los clústeres que gestione usted mismo como los alojados por un proveedor externo, como Confluent CloudCloudKarafka, o Redpanda.

Para obtener más información sobre otras opciones de AWS alojamiento para su clúster, consulte Prácticas recomendadas para ejecutar Apache Kafka en el blog AWS sobre AWS macrodatos.

Apache Kafka como fuente funciona de forma similar a cuando se utiliza Amazon Simple Queue Service (Amazon SQS) o Amazon Kinesis. EventBridgesondea internamente los mensajes nuevos de la fuente y, a continuación, invoca al destino de forma sincrónica. EventBridge lee los mensajes por lotes y los proporciona a su función como carga útil de eventos. El tamaño máximo del lote es configurable. (El valor predeterminado es 100 mensajes).

En el caso de las fuentes basadas en Apache Kafka, EventBridge admite parámetros de control del procesamiento, como las ventanas de procesamiento por lotes y el tamaño del lote.

EventBridge envía el lote de mensajes del parámetro de evento cuando invoca la tubería. La carga de eventos contiene una matriz de mensajes. Cada elemento de la matriz contiene detalles del tema Apache Kafka y el identificador de partición de Apache Kafka, junto con una marca de tiempo y un mensaje codificado en base64.

Eventos de ejemplo

En el siguiente evento de ejemplo se muestra la información que recibe la canalización. Puede usar este evento para crear y filtrar sus patrones de eventos o para definir la transformación de entrada. No todos los campos se pueden filtrar. Para obtener más información sobre los campos que puede filtrar, consulte Filtrado EventBridge de Amazon 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 ] } ] } ]

Autenticación de clústeres de Apache Kafka

EventBridge Pipes admite varios métodos para autenticarse con su clúster Apache Kafka autogestionado. Asegúrese de configurar el clúster de Apache Kafka para que utilice uno de estos métodos de autenticación admitidos. Para obtener más información acerca de la seguridad de Apache Kafka, consulte la sección Seguridad de la documentación de Apache Kafka.

Acceso mediante VPC

Si utiliza un entorno Apache Kafka autogestionado en el que solo los usuarios de Apache Kafka de su VPC tienen acceso a sus agentes de Apache Kafka, debe configurar Amazon Virtual Private Cloud (Amazon VPC) en el código fuente de Apache Kafka.

Autenticación SASL/SCRAM

EventBridge Pipes admite la autenticación simple y la autenticación por capa de seguridad/mecanismo de autenticación por respuesta a desafíos salados (SASL/SCRAM) con cifrado de seguridad de capa de transporte (TLS). EventBridge Pipes envía las credenciales cifradas para autenticarse en el clúster. Para obtener más información acerca de la autenticación SASL/SCRAM, consulte RFC 5802.

EventBridge Pipes admite la autenticación SASL/PLAIN con cifrado TLS. Con la autenticación SASL/PLAIN, EventBridge Pipes envía las credenciales como texto sin cifrar (sin cifrar) al servidor.

Para la autenticación SASL, almacene las credenciales de inicio de sesión como secreto en AWS Secrets Manager.

Autenticación TLS mutua

TLS mutua (mTLS) proporciona autenticación bidireccional entre el cliente y el servidor. El cliente envía un certificado al servidor para que el servidor verifique el cliente, mientras que el servidor envía un certificado al cliente para que el cliente verifique el servidor.

En Apache Kafka autogestionado, EventBridge Pipes actúa como cliente. Configura un certificado de cliente (como secreto en Secrets Manager) para autenticar a EventBridge Pipes con sus agentes de Apache Kafka. El certificado de servidor debe estar firmado por una entidad de certificación que esté en el almacén de confianza del servidor.

El clúster de Apache Kafka envía un certificado de servidor a EventBridge Pipes para autenticar a los agentes de Apache Kafka con Pipes. EventBridge El certificado de servidor puede ser un certificado de entidad de certificación pública o un certificado autofirmado o de entidad de certificación privada. El certificado de CA público debe estar firmado por una CA que se encuentre en el almacén de confianza de EventBridge Pipes. Para un certificado de CA privado autofirmado, se configura el certificado de CA raíz del servidor (como secreto en Secrets Manager). EventBridge Pipes usa el certificado raíz para verificar los agentes de Apache Kafka.

Para obtener más información acerca de mTLS, consulte Presentación de la autenticación de TLS mutua para Amazon MSK como origen.

Configuración del secreto de certificado de cliente

El secreto CLIENT_CERTIFICATE_TLS_AUTH requiere un campo de certificado y un campo de clave privada. Para una clave privada cifrada, el secreto requiere una contraseña de clave privada. El certificado y la clave privada deben estar en formato PEM.

nota

EventBridge Pipes admite los algoritmos de cifrado de clave privada PBES1 (pero no PBES2).

El campo de certificado debe contener una lista de certificados y debe comenzar por el certificado de cliente, seguido de cualquier certificado intermedio, y finalizar con el certificado raíz. Cada certificado debe comenzar en una nueva línea con la siguiente estructura:

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

Secrets Manager admite secretos de hasta 65 536 bytes, que supone suficiente espacio para cadenas de certificados largas.

El formato de la clave privada debe ser PKCS #8, con la siguiente estructura:

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

Para una clave privada cifrada, utilice la siguiente estructura:

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

El siguiente ejemplo muestra el contenido de un secreto para la autenticación de mTLS mediante una clave privada cifrada. Para una clave privada cifrada, incluya la contraseña de la clave privada en el secreto.

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

Configuración del secreto de certificado de entidad de certificación raíz del servidor

Cree este secreto si sus agentes de Apache Kafka utilizan cifrado TLS con certificados firmados por una entidad de certificación privada. Puede utilizar el cifrado TLS para autenticación VPC, SASL/SCRAM, SASL/PLAIN o mTLS.

El secreto de certificado de entidad de certificación raíz del servidor requiere un campo que contenga el certificado de entidad de certificación raíz del agente de Apache Kafka en formato PEM. La estructura del secreto se muestra en el ejemplo siguiente.

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

Configuración de red

Si utiliza un entorno Apache Kafka autogestionado que utiliza conectividad de VPC privada EventBridge , debe tener acceso a los recursos de Amazon Virtual Private Cloud (Amazon VPC) asociados a sus agentes de Apache Kafka.

  • Para acceder a la VPC de su clúster de Apache Kafka, EventBridge puede utilizar el acceso saliente a Internet para las subredes de su fuente. Para las subredes públicas, debe ser una puerta de enlace NAT administrada. Para las subredes privadas, puede ser una puerta de enlace NAT o su propia NAT. Asegúrese de que la NAT tiene una dirección IP pública y puede conectarse a Internet.

  • EventBridge Pipes también admite la entrega directa de eventos AWS PrivateLink, lo que te permite enviar eventos desde una fuente de eventos ubicada en un Amazon Virtual Private Cloud (Amazon VPC) a un destino de Pipes sin tener que atravesar la red pública de Internet. Puedes usar Pipes para sondear desde Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka autogestionado y Amazon MQ fuentes que residen en una subred privada sin necesidad de implementar una puerta de enlace a Internet, configurar reglas de firewall o configurar servidores proxy.

    Para configurar un punto de enlace de VPC, consulte Crear un punto de enlace de VPC en la Guía del usuario.AWS PrivateLink Para el nombre del servicio, seleccione. com.amazonaws.region.pipes-data

Configure sus grupos de seguridad de Amazon VPC con las siguientes reglas (como mínimo):

  • Reglas de entrada: permita que todo el tráfico en el puerto del broker Apache Kafka esté destinado a los grupos de seguridad especificados para su origen.

  • Reglas de salida: permiten todo el tráfico en el puerto 443 para todos los destinos. Permita todo el tráfico en el puerto del broker de Apache Kafka para los grupos de seguridad especificados para su origen.

    Los puertos de broker incluyen:

    • 9092 para texto sin formato

    • 9094 para TLS

    • 9096 para SASL

    • 9098 para IAM

Escalado automático para consumidores con fuentes de Apache Kafka

Al crear inicialmente una fuente de Apache Kafka, EventBridge asigna un consumidor para procesar todas las particiones del tema de Kafka. Cada consumidor tiene varios procesadores que se ejecutan en paralelo para gestionar el aumento de las cargas de trabajo. Además, aumenta o reduce EventBridge automáticamente el número de consumidores en función de la carga de trabajo. Para conservar el orden de mensajes en cada partición, el número máximo de consumidores es un consumidor por partición en el tema.

En intervalos de un minuto, EventBridge evalúa el desfase de compensación por consumo de todas las secciones del tema. Si el retraso es demasiado alto, la partición recibe los mensajes más rápido de lo que EventBridge puede procesarlos. Si es necesario, EventBridge añade o elimina consumidores del tema. El proceso de escalado para agregar o eliminar consumidores se produce dentro de los tres minutos posteriores a la evaluación.

Si tu público objetivo está sobrecargado, EventBridge reduce el número de consumidores. Esta acción reduce la carga de trabajo de la función al reducir el número de mensajes que los consumidores pueden recuperar y enviar a la función.