¿Cómo soluciono los problemas de desencadenadores de Lambda que sondean en los clústeres de Kafka autoadministrado y MSK?

12 minutos de lectura
0

La función de AWS Lambda está diseñada para procesar registros del clúster de Amazon Managed Streaming para Apache Kafka (Amazon MSK) o del clúster de Kafka autoadministrado. Sin embargo, el desencadenador de Lambda muestra un mensaje de error.

Descripción breve

Una asignación de orígenes de eventos (ESM) es un recurso de AWS Lambda que lee un origen de eventos e invoca una función de Lambda. Para invocar una función de Lambda, una ESM de Lambda-Kafka debe poder realizar las siguientes acciones:

Si la configuración de red, autenticación o autorización de una ESM impide la comunicación con el clúster, la configuración fallará antes de poder invocar una función. A continuación, el desencadenador muestra un mensaje de error que ayuda a solucionar la causa principal.

Resolución

Comprender ESM

Cuando se configura una función de Lambda con un desencadenador de Amazon MSK o un desencadenador de Kafka autoadministrado, se crea automáticamente un recurso de ESM. Una ESM es independiente de la función de Lambda y sondea continuamente los registros del tema en el clúster de Kafka. La ESM agrupa esos registros en una carga útil. A continuación, llama a la API de invocación de Lambda y entrega la carga útil a la función de Lambda para su procesamiento.

Importante: Las ESM de Lambda-Kafka no heredan la configuración de red de VPC de la función de Lambda. Esto es cierto tanto para los desencadenadores de MSK como para los desencadenadores de Kafka autoadministrado. Una ESM de MSK usa las configuraciones de subred y grupo de seguridad establecidas en el clúster de MSK de destino. Un desencadenador de Kafka autoadministrado tiene acceso WAN de forma predeterminada, pero se puede configurar con acceso de red a una VPC en la misma cuenta y región de AWS. Como la configuración de red es independiente, una función de Lambda puede ejecutar código dentro de una red que no tenga una ruta al clúster de Kafka.

Comprender el proceso de configuración de ESM

Antes de que la ESM pueda invocar la función de Lambda asociada, la ESM completa automáticamente los siguientes pasos:

1.    La ESM llama a las API de AWS STS para obtener un token de seguridad.

2.    Si SourceAccessConfiguration contiene un secreto, extraiga ese secreto de la API de AWS Secrets Manager.

3.    Para la ESM de Kakfa autoadministrado: Lambda resuelve la dirección IP de los puntos de conexión del clúster a partir del nombre de host configurado en la ESM, en selfManagedEventSourceEndPoints.

      Para la ESM de MSK: obtenga las configuraciones de subred y grupo de seguridad del clúster de MSK.

4.    Para la ESM de Kakfa autoadministrado: establezca una conexión de red con el punto de conexión del agente.

      Para la ESM de MSK: cree una interfaz de red elástica de Hyperplane con el grupo de seguridad del clúster de MSK en cada una de las subredes del clúster de MSK.

5.     Autenticación:

  • Si la autenticación mediante TLS está activada, compruebe el certificado SSL que presenta el punto de conexión del agente.
  • Inicie sesión en el agente.

6.    Autorización:

  • Asegúrese de que el tema existe en el clúster. Pregunte a los agentes del clúster si el tema que está configurado en el parámetro Topics de la ESM existe en el clúster.
  • Cree un grupo de consumidores en el clúster con el UUID de la ESM como ID del grupo de consumidores.

7.    Sondear registros del tema.

8.    Agrupe los registros en una carga útil inferior a 6 MB. Este es el límite para las cargas de invocación de Lambda.

9.    La ESM invoca la función de Lambda asociada con la carga útil de registros. Para ello, realice una llamada sincrónica a la API de invocación de Lambda.

Solución de problemas de seguridad de red

Cuando la ESM envía una solicitud a los puntos de conexión del agente y no recibe respuesta, considera que la solicitud ha agotado el tiempo de espera. Cuando se agota el tiempo de espera en el punto de conexión del agente, el desencadenador muestra el siguiente mensaje de error:

“PROBLEM: Connection error. Please check your event source connection configuration. If your event source lives in a VPC, try setting up a new Lambda function or EC2 instance with the same VPC, Subnet, and Security Group settings. Connect the new device to the Kafka cluster and consume messages to ensure that the issue is not related to VPC or Endpoint configuration. If the new device is able to consume messages, please contact Lambda customer support for further investigation” (PROBLEMA: error de conexión. Compruebe la configuración de conexión del origen de eventos. Si el origen de eventos se encuentra en una VPC, pruebe a configurar una nueva función de Lambda o instancia de EC2 con la misma configuración de VPC, subred y grupo de seguridad. Conecte el nuevo dispositivo al clúster de Kafka y consuma mensajes para asegurarse de que el problema no esté relacionado con la configuración de la VPC o el punto de conexión. Si el nuevo dispositivo puede consumir mensajes, póngase en contacto con el servicio de atención al cliente de Lambda para continuar con la investigación).

Para solucionar el problema, siga los pasos que se indican en el mensaje de error anterior. Además, tenga en cuenta las configuraciones de red de las siguientes secciones para asegurarse de que su ESM esté configurada correctamente.

Nota: Las solicitudes del ESM agotadas también pueden producirse en situaciones en las que el clúster no disponga de recursos del sistema para gestionar la solicitud. O bien, es posible que se agote el tiempo de espera cuando se configuran ajustes de seguridad incorrectos en el ESM o el clúster. Si recibe este error y no hay ningún problema con la configuración de la red, consulte los registros de acceso del agente de clústeres para obtener información adicional.

Configuración de red que utiliza una ESM de Kafka autoadministrado

La configuración de red de una ESM de Kafka autoadministrado es similar a una función de Lambda. De forma predeterminada, la ESM tiene acceso a la WAN, pero no está configurada para acceder dentro de una VPC. Se puede configurar manualmente con subredes y grupos de seguridad específicos para acceder a un clúster de Kafka. Sin embargo, solo puede acceder a un clúster al que se pueda acceder desde una VPC en la cuenta que contiene la función de Lambda. Como resultado, puede crear una ESM de Kafka autoadministrado para un clúster de Kafka que se encuentre en las siguientes ubicaciones:

  • Un centro de datos en las instalaciones
  • Otro proveedor de servicios en la nube
  • Los agentes de MSK de un clúster de Kafka que se encuentra en la VPC de una cuenta diferente

Nota: Es posible crear un desencadenador de Kafka autoadministrado que consuma información de un clúster de MSK de otra cuenta. Sin embargo, hay algunas desventajas. A diferencia de los desencadenadores de MSK, la autenticación de AWS Identity and Access Management (IAM) no está disponible para los desencadenadores de Kafka autoadministrado. Además, la conexión al clúster de MSK a través de una conexión emparejada de VPC requiere soluciones alternativas de VPC específicas. Para más información, consulte How Goldman Sachs builds cross-account connectivity to their Amazon MSK clusters with AWS PrivateLink (Cómo Goldman Sachs crea conectividad entre cuentas a sus clústeres de Amazon MSK con AWS PrivateLink).

Configuración de red de una ESM de Lambda-MSK

Para comunicarse con el clúster de MSK, una ESM de MSK crea una interfaz de red elástica de Hyperplane dentro de cada subred que utiliza el clúster. Esto es similar al funcionamiento de una función de Lambda dentro de una VPC.

Una ESM de MSK no usa la configuración de VPC de la función de Lambda. En su lugar, la ESM usa las configuraciones de subred y grupo de seguridad establecidas en el clúster de MSK de destino. A continuación, la ESM de MSK crea una interfaz de red dentro de cada una de las subredes que utiliza el clúster de MSK. Estas interfaces de red utilizan el mismo grupo de seguridad que utiliza el clúster de MSK. Los grupos de seguridad y las reglas de entrada o salida que utiliza la ESM de MSK se pueden encontrar con los siguientes comandos de CLI:

1.    Utilice el comando describe-cluster de MSK de AWS CLI para enumerar los grupos de seguridad y las subredes que utiliza el clúster de MSK.

2.    Utilice el comando describe-security-groups en los grupos de seguridad que aparecen en la salida de describe-cluster.

Conceder acceso al tráfico

El grupo de seguridad del clúster de MSK debe incluir una regla que garantice el tráfico de entrada desde sí mismo y el tráfico de salida hacia sí mismo. El tráfico también debe concederse a través de uno de los siguientes puertos de autenticación abierta que utilice el agente:

  • 9092 para texto plano
  • 9094 para TLS
  • 9096 para SASL
  • 443 para todas las configuraciones

Solución de problemas que puedan surgir durante la inicialización, el sondeo y la invocación

“PROBLEM: Connection error. Your VPC must be able to connect to Lambda and STS, as well as Secrets Manager if authentication is required. You can provide access by configuring PrivateLink or a NAT Gateway” (PROBLEMA: error de conexión. Su VPC debe poder conectarse a Lambda y STS, así como a Secrets Manager, si es necesaria la autenticación. Para proporcionar acceso, puede configurar PrivateLink o una puerta de enlace de NAT).

El error anterior se produce por cualquiera de los siguientes motivos:

  • La ESM se configura en una VPC y las llamadas a la API de STS fallan o se agota el tiempo de espera.
  • La ESM se configura en una VPC y los intentos de conexión a la API de Secrets Manager fallan o se agota el tiempo de espera.
  • El desencadenador puede acceder a su clúster de Kafka, pero se agota el tiempo de espera al invocar su función a través de la API de Lambda.

Estos problemas pueden deberse a una configuración de VPC incorrecta que impide que su ESM llegue a otros servicios, como AWS STS y AWS Secrets Manager. Siga los pasos que se indican en Setting up AWS Lambda with an Apache Kafka cluster within a VPC (Configuración de AWS Lambda con un clúster de Apache Kafka dentro de una VPC) para establecer correctamente la configuración de la VPC.

Si las llamadas a la API de STS fallan o se agota el tiempo de espera, la configuración de la VPC impide que la ESM llegue al punto de conexión regional de Lambda en el puerto 443. Para resolver este problema, consulte Setting up AWS Lambda with an Apache Kafka cluster within a VPC (Configuración de AWS Lambda con un clúster de Apache Kafka dentro de una VPC).

Si SourceAccessConfiguration contiene un secreto, asegúrese de recuperarlo en Secrets Manager.

“PROBLEM: Certificate and/or private key must be in PEM format” (PROBLEMA: El certificado o la clave privada deben estar en formato PEM).

El error anterior se produce si tiene un secreto que no está en un formato que pueda descifrar la ESM.

Para solucionar este problema, compruebe el formato del secreto. Tenga en cuenta que Secrets Manager solo admite archivos de certificado X.509 en formato .pem. Para más información, consulte La clave privada o el certificado proporcionados no son válidos (Amazon MSK) o El certificado o la clave privada proporcionados no son válidos (Kafka).

“PROBLEM: The provided Kafka broker endpoints cannot be resolved” (PROBLEMA: Los puntos de conexión del agente de Kafka proporcionados no se pueden resolver).

El error anterior se produce cuando su ESM no puede traducir el nombre de host a una dirección IP.

Para resolver este error, asegúrese de que la ESM pueda llegar a un servidor DNS que pueda traducir el nombre de host. Si el nombre de host del punto de conexión está dentro de una red privada, configure la ESM para usar una VPC con una configuración de DNS que pueda resolver el nombre de host.

“PROBLEM: Server failed to authenticate Lambda or Lambda failed to authenticate server” (PROBLEMA: El servidor no ha podido autenticar a Lambda o Lambda no ha podido autenticar al servidor).

El error anterior se produce cuando el servidor al que está conectada la ESM no es el servidor que estableció en la configuración de la ESM.

Para solucionar este problema, compruebe que ha configurado los ajustes de su ESM para el servidor al que se está conectando.

“PROBLEM: SASL authentication failed” (PROBLEMA: Error en la autenticación SASL).

El error anterior se produce cuando se produce un fallo al intentar iniciar sesión en el servidor.

Las funciones de AWS Lambda que se desencadenan a partir de un tema de Amazon MSK pueden acceder a los nombres de usuario y contraseñas protegidos por AWS Secrets Manager mediante SASL/SCRAM. Aparece un error cuando el nombre de usuario y la contraseña no se reconocen como válidos.

Para resolver este error, inicie sesión en el agente y compruebe los registros de acceso.

Nota:

“PROBLEM: Cluster failed to authorize Lambda” (PROBLEMA: El clúster no ha podido autorizar a Lambda).

El error anterior se produce cuando la ESM inicia sesión en el agente, pero el usuario de la ESM no tiene permiso para sondear los registros del tema. Para solucionar este problema, consulte El clúster no pudo autorizar a Lambda (Amazon MSK) o El clúster no pudo autorizar a Lambda (Kafka).


Información relacionada

Errores de autenticación y autorización

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año