Tema de Amazon Managed Streaming para Apache Kafka como origen - 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.

Tema de Amazon Managed Streaming para Apache Kafka como origen

Puede utilizar EventBridge Pipes para recibir registros de un tema de Amazon Managed Streaming para Apache Kafka (Amazon MSK). Si lo desea, también puede filtrar o enriquecer estos registros antes de enviarlos a uno de los destinos disponibles para su procesamiento. Al configurar la canalización, puede elegir ajustes específicos de Amazon MSK. EventBridge Pipes mantiene el orden de los registros del agente de mensajes al enviar esos datos al destino.

Amazon MSK es un servicio completamente administrado que puede usar para crear y ejecutar aplicaciones que utilizan Apache Kafka para procesar datos de streaming. Amazon MSK simplifica la configuración, el escalado y la administración de clústeres que ejecutan Apache Kafka. Con Amazon MSK, puede configurar su aplicación para varias zonas de disponibilidad y para la seguridad con AWS Identity and Access Management (IAM). Amazon MSK es compatible con múltiples versiones de código abierto de Kafka.

Amazon MSK como fuente funciona de manera similar al uso de Amazon Simple Queue Service (Amazon SQS) o Amazon Kinesis. EventBridge sondea internamente nuevos mensajes del origen y luego invoca sincrónicamente el destino. EventBridge lee los mensajes en lotes y los proporciona a su función como carga de eventos. El tamaño máximo del lote es configurable. (El valor predeterminado es 100 mensajes).

Para los orígenes basados en Apache Kafka, EventBridge admite parámetros de control de procesamiento, como los plazos de procesamiento por lotes y el tamaño del lote.

EventBridge lee los mensajes de forma secuencial para cada partición. Después de que EventBridge procese cada lote, confirma los desplazamientos de los mensajes en ese lote. Si el destino de la canalización devuelve un error para cualquiera de los mensajes de un lote, EventBridge intenta volver a procesar todo el lote de mensajes hasta que el procesamiento sea correcto o los mensajes caduquen.

EventBridge envía el lote de mensajes en el evento cuando invoca el origen. La carga de eventos contiene una matriz de mensajes. Cada elemento de matriz contiene detalles del tema y el identificador de partición de Amazon MSK, junto con una marca de hora 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": "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 ] } ] } ]

Posición inicial de flujos y sondeo

Tenga en cuenta que el sondeo de flujos durante la creación de canalizaciones y las actualizaciones es, en última instancia, coherente.

  • Durante la creación de canalizaciones, es posible que se demore varios minutos en iniciar el sondeo de los eventos del flujo.

  • Durante las actualizaciones de las canalizaciones, es posible que se demore varios minutos en detener y reiniciar el sondeo de los eventos del flujo.

Esto significa que, si especifica LATEST como posición inicial del flujo, la canalización podría omitir eventos durante la creación de canalizaciones o las actualizaciones. Para garantizar que no se pierda ningún evento, especifique la posición inicial del flujo como TRIM_HORIZON.

Autenticación de clústeres de MSK

EventBridge necesita permiso para acceder al clúster de Amazon MSK, recuperar registros y llevar a cabo otras tareas. Amazon MSK admite varias opciones para controlar el acceso de los clientes al clúster de MSK. Para obtener más información acerca de este método de autenticación que se utiliza, consulte Cómo elige EventBridge un agente de arranque.

Acceso sin autenticar

Recomendamos utilizar únicamente el acceso no autenticado para el desarrollo. El acceso no autenticado solo funcionará si la autenticación basada en roles de IAM está deshabilitada para el clúster.

Autenticación SASL/SCRAM

Amazon MSK admite autenticación simple y autenticación de capa de seguridad/mecanismo de autenticación de respuesta por desafío saltado (SASL/SCRAM) con cifrado de seguridad de la capa de transporte (TLS). Para que EventBridge se conecte al clúster, debe almacenar las credenciales de autenticación (credenciales de inicio de sesión) en un secreto de AWS Secrets Manager.

Para obtener más información sobre Secrets Manager, consulte Autenticación de usuario y contraseña con AWS Secrets Manager (en la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka.

Amazon MSK no admite la autenticación SASL/PLAIN.

Autenticación basada en roles de IAM

Puede utilizar IAM para autenticar la identidad de los clientes que se conectan al clúster de MSK. Si la autenticación de IAM está activa en el clúster de MSK y no proporciona un secreto para la autenticación, Lambda utilizará de forma automática la autenticación de IAM. Para crear e implementar políticas basadas en roles o usuarios de IAM, utilice la consola o la API de IAM. Para obtener más información, consulte IAM access control (Control de acceso de IAM) en la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka.

Para permitir que EventBridge se conecte al clúster de MSK, lea registros y lleve a cabo otras acciones necesarias, agregue los siguientes permisos al rol de ejecución de su canalización.

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

Puede asignar estos permisos a un clúster, un tema y un grupo específicos. Para obtener más información, consulte Acciones de Amazon MSK para Kafka en la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka.

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 el caso de Amazon MSK, EventBridge actúa como cliente. Puede configurar un certificado de cliente (como secreto en Secrets Manager) para autenticar a EventBridge con los agentes del clúster de MSK. 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 MSK envía un certificado de servidor a EventBridge para autenticar a los agentes con EventBridge. El certificado de servidor debe estar firmado por una entidad de certificación en el almacén de confianza de AWS.

Amazon MSK no admite certificados de servidor autofirmados porque todos los agentes de Amazon MSK utilizan certificados públicos firmados por entidades de certificación de Amazon Trust Services, en los que EventBrige confía de forma predeterminada.

Para obtener más información sobre mTLS para Amazon MSK, consulte Mutual TLS Authentication (Autenticación con TLS mutua) en la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka.

Configuración del secreto de mTLS

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 admite los algoritmos de cifrado de claves privadas 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-----" }

Cómo elige EventBridge un agente de arranque

EventBridge elige un agente de arranque en función de los métodos de autenticación disponibles en el clúster y de si proporciona un secreto para la autenticación. Si proporciona un secreto para mTLS o SASL/SCRAM, EventBridge elige de forma automática ese método de autenticación. Si no proporciona ningún secreto, EventBridge selecciona el método de autenticación más seguro que se encuentre activo en el clúster. El siguiente es el orden de prioridad en el que EventBridge selecciona un agente, de la autenticación más segura a la menos segura:

  • mTLS (secreto proporcionado para mTLS)

  • SASL/SCRAM (secreto proporcionado para SASL/SCRAM)

  • SASL IAM (no se proporciona secreto y la autenticación de IAM está activa)

  • TLS no autenticada (no se proporciona secreto y la autenticación de IAM no está activa)

  • Texto sin formato (no se proporciona secreto y tanto la autenticación de IAM como la TLS no autenticada no están activas)

nota

Si EventBridge no puede conectarse al tipo de agente más seguro, no intentará conectarse a un tipo de agente diferente (menos seguro). Si quiere que EventBridge elija un tipo de agente más débil, desactive todos los métodos de autenticación más seguros del clúster.

Configuración de red

EventBridge debe tener acceso a los recursos de Amazon Virtual Private Cloud (Amazon VPC) asociados a su clúster de Amazon MSK. Para acceder a la VPC de su clúster de Amazon MSK, EventBridge necesita acceso saliente a Internet para las subredes de su origen. 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.

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

  • Reglas de entrada: permiten todo el tráfico en el puerto del agente de Amazon MSK (9092 para texto sin formato, 9094 para TLS, 9096 para SASL, 9098 para IAM) para los grupos de seguridad especificados para su origen.

  • Reglas de salida: permiten todo el tráfico en el puerto 443 para todos los destinos. Permiten todo el tráfico en el puerto del agente de Amazon MSK (9092 para texto sin formato, 9094 para TLS, 9096 para SASL, 9098 para IAM) para los grupos de seguridad especificados para su origen.

nota

La configuración de Amazon VPC se puede detectar a través de la API de Amazon MSK. No tiene que configurarla durante la configuración.

ID del grupo de consumidores personalizable

Al configurar Apache Kafka como origen, puede especificar un ID de grupo de consumidores. Este ID de grupo de consumidores es un identificador existente para el grupo de consumidores de Apache Kafka al que desea que se una su canalización. Puede utilizar esta característica para migrar cualquier configuración de procesamiento de registro de Apache Kafka en curso de otros consumidores a EventBridge.

Si especifica un ID de grupo de consumidores y hay otros sondeadores activos dentro de ese grupo de consumidores, Apache Kafka distribuirá los mensajes entre todos los consumidores. En otras palabras, EventBridge no recibe todos los mensajes del tema de Apache Kafka. Si desea que EventBridge gestione todos los mensajes del tema, desactive los demás sondeadores de ese grupo de consumidores.

Además, si especifica un ID de grupo de consumidores y Apache Kafka encuentra un grupo de consumidores existente válido con el mismo ID, EventBrige ignora el parámetro StartingPosition para su canalización. En cambio, EventBridge comienza a procesar los registros de acuerdo con la compensación comprometida del grupo de consumidores. Si especifica un ID de grupo de consumidores y Apache Kafka no puede encontrar un grupo de consumidores existente, EventBridge configura su origen con el StartingPosition especificado.

El ID del grupo de consumidores que especifique debe ser único entre todos los orígenes de eventos de Apache Kafka. Tras crear una canalización con el ID de grupo de consumidores especificado, no puede actualizar este valor.

Escalado automático del origen de Amazon MSK

Al crear inicialmente un origen de eventos de Amazon MSK, Lambda asigna un consumidor para procesar todas las particiones del tema de Apache Kafka. Cada consumidor tiene varios procesadores que se ejecutan en paralelo para gestionar el aumento de las cargas de trabajo. Además, EventBridge reduce o escala verticalmente de manera automática 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 retraso de compensación del consumidor de todas las particiones del tema. Si el retraso es demasiado alto, la partición recibe mensajes más rápido de lo que EventBridge puede procesarlos. Si es necesario, EventBridge agrega o elimina a los 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 su destino está sobrecargado, EventBridge reduce el número de consumidores. Esta acción reduce la carga de trabajo de la canalización al reducir el número de mensajes que los consumidores pueden recuperar y enviar a la canalización.