Apache Kafka transmite como fuente en Pipes EventBridge - 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 en Pipes EventBridge

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 MSK (Amazon) 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 al uso de Amazon Simple Queue Service (AmazonSQS) 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 de eventos en 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 ] } ] } ]

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.

VPCacceso

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

SASL/autenticación SCRAM

EventBridge Pipes admite la autenticación simple y la autenticación por capa de seguridad/mecanismo de autenticación (SASL/SCRAM) con cifrado de Transport Layer Security (TLS). EventBridge Pipes envía las credenciales cifradas para autenticarse en el clúster. Para obtener más información sobre la SCRAM autenticaciónSASL/, consulte RFC5802.

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

Para la SASL autenticación, las credenciales de inicio de sesión se guardan de forma secreta. AWS Secrets Manager

Autenticación mutua TLS

Mutual TLS (mTLS) proporciona una 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 sobre mTLS, consulta Introducir la TLS autenticación mutua para Amazon MSK como fuente.

Configuración del secreto de certificado de cliente

El AUTH secreto CLIENT CERTIFICATE _ TLS _ _ 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. Tanto el certificado como la clave privada deben estar en PEM formato.

nota

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

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.

La clave privada debe tener el formato PKCS#8 y tener 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 TLS autenticación m 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

Este secreto se crea si los agentes de Apache Kafka utilizan el TLS cifrado con certificados firmados por una entidad emisora de certificados privada. Puede usar el TLS cifrado para la TLS autenticación VPCSCRAM, SASLSASL/PLAIN,/o m.

El secreto del certificado de CA raíz del servidor requiere un campo que contenga en PEM formato el certificado de CA raíz del bróker Apache Kafka. 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 VPC conectividad privada, EventBridge debe tener acceso a los recursos de Amazon Virtual Private Cloud (AmazonVPC) asociados a sus agentes de Apache Kafka.

  • Para acceder a su clúster VPC de Apache Kafka, EventBridge puede utilizar el acceso saliente a Internet para las subredes de su fuente. En el caso de las subredes privadas, puede ser una NAT puerta de enlace o la suya propia. NAT Asegúrese de que NAT tenga una dirección IP pública y de que pueda conectarse a Internet. Para las subredes públicas, debe usar VPC puntos finales (se explica a continuación).

  • 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 Amazon Virtual Private Cloud (Amazon VPC) a un destino de Pipes sin tener que atravesar la Internet pública. 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. También puede usar VPC Endpoints para admitir la entrega desde clústeres de Kafka en subredes públicas.

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

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

  • Reglas de entrada: permita que todo el tráfico en el puerto del broker de 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 que todo el tráfico entre 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.