¿Cómo soluciono los errores al intentar crear un conector con Amazon MSK Connect?

9 minutos de lectura
0

Aparece un error al intentar crear un conector mediante Amazon Managed Streaming para Apache Kafka (Amazon MSK) Connect.

Descripción breve

Al crear un conector mediante MSK Connect, es posible que reciba uno de estos mensajes de error:

  • Hay un problema con el código del conector: UnknownError.UnknownMessage: Falló la última operación. Vuelva a intentar la operación.
  • Parámetro connectorConfiguration no válido: Falta el siguiente campo obligatorio o tiene un valor no válido: tasks.max
  • Parámetro serviceExecutionRoleArn no válido: No se puede proporcionar un ARN de rol vinculado a un servicio como ARN de rol de ejecución de servicios
  • org.apache.kafka.connect.errors.ConnectException: No se pudo encontrar ninguna clase que implemente el conector y cuyo nombre coincida...
  • org.apache.kafka.common.errors.TimeoutException: Se agotó el tiempo de espera para enviar la llamada. Llamada: fetchMetadata
  • org.apache.kafka.common.errors.SaslAuthenticationException: Demasiadas conexiones
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: No se puede ejecutar la solicitud HTTP: Error al conectarse a s3.eu-central-1.amazonaws.com:443 [s3.eu-central-1.amazonaws.com/52.219.47.235 ]: se agotó el tiempo de conexión
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: No se puede ejecutar la solicitud HTTP: Error al conectarse a firehose.us-east-2.amazonaws.com:443 [firehose.us-east-2.amazonaws.com/52.95.23.168 ]: se agotó el tiempo de conexión
  • La conexión al nodo - 1 (punto de conexión del agente) no pudo autenticarse debido a: Acceso denegado
  • ERROR: La conexión al nodo -3 (b-1).<cluster>.<region>.amazonaws.com/INTERNAL_IP) no pudo autenticarse debido a: Un error: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: No se pudieron encontrar las credenciales de AWS IAM [Caused by aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: No se pueden cargar las credenciales de AWS desde ninguna...........No se pueden cargar las credenciales de AWS desde variables de entorno (AWS_ACCESS_KEY_ID (o AWS_ACCESS_KEY) y AWS_SECRET_KEY (o AWS_SECRET_ACCESS_KEY))

Solución

Hay un problema con el código del conector: UnknownError.UnknownMessage: Falló la última operación. Vuelva a intentar la operación.

Este error aparece cuando MSK Connect no puede crear el conector y este pasa al estado de Error.

Para encontrar la causa principal del error, revise el registro de eventos de MSK Connect. MSK Connect escribe eventos de registro que puede utilizar para eliminar fallos del conector. Al crear un conector, puede especificar cero destinos de registro o uno de los siguientes destinos de registro:

  • Registros de Amazon CloudWatch
  • Amazon Simple Storage Service (Amazon S3)
  • Amazon Kinesis Data Firehose

Parámetro connectorConfiguration no válido: Falta el siguiente campo obligatorio o tiene un valor no válido: tasks.max

Si utiliza un carácter de salto de línea (/r) al final de una configuración, recibirá el siguiente error:

Invalid parameter connectorConfiguration: The following required field is missing or has invalid value: tasks.max

Para resolver este error, pruebe los siguientes pasos de resolución de problemas:

  • Introduzca manualmente la información de la configuración en el cuadro de diálogo de configuración del conector en lugar de copiarla y pegarla desde otra fuente, como la documentación.
  • Si utiliza un sistema operativo de Windows, utilice un editor de texto (como Notepad++). Puede utilizar el editor de texto para comprobar y eliminar el salto de línea (CRLF) y cualquier carácter de fin de línea (EOL). Para eliminar el salto de línea, copie y pegue la configuración en un editor de texto. En el editor de texto, seleccione Ver y Mostrar símbolo. A continuación, elija Mostrar todos los caracteres para revisar los caracteres CRLF o EOL que puedan existir en la configuración. Sustituya todos los caracteres CRLF («\r\n») por caracteres LF («\n»).

Parámetro serviceExecutionRoleArn no válido: No se puede proporcionar un ARN de rol vinculado a un servicio como ARN de rol de ejecución de servicios.

Este error aparece al utilizar un rol vinculado a un servicio para crear un conector. MSK Connect no admite el uso del rol vinculado al servicio como rol de ejecución del servicio. Debe crear una función de ejecución de servicios independiente. Para obtener instrucciones sobre cómo crear un rol de AWS Identity and Access Management (IAM) personalizado, consulte Creación de un rol para delegar permisos a un servicio de AWS. Especifique el rol con el que quiere que funcione el conector. Este rol debe ser diferente del rol vinculado al servicio AWSServiceRoleForKafkaConnect que el servicio utiliza internamente para crear los recursos del conector.

org.apache.kafka.connect.errors.ConnectException: No se pudo encontrar ninguna clase que implemente el conector y cuyo nombre coincida...

Para resolver este error, pruebe los siguientes pasos de resolución de problemas:

  • Elimine todos los caracteres de salto de línea (/r) que puedan existir en la configuración del conector.
  • Si se necesitan varios archivos para el complemento del conector, inclúyalos en el archivo comprimido. El archivo comprimido se utiliza durante la creación del complemento del conector. Los archivos JAR del archivo comprimido también deben tener documentada la estructura de archivos prevista para ese complemento. Se recomienda activar los registros de MSK Connect y revisarlos para confirmar que la estructura de archivos está configurada correctamente.

org.apache.kafka.common.errors.TimeoutException: Se agotó el tiempo de espera para enviar la llamada. Llamada: fetchMetadata

Si el conector no puede llegar al clúster de MSK, recibirá un error de TimeOutException. Para resolver este error, pruebe los siguientes pasos de resolución de problemas:

org.apache.kafka.common.errors.SaslAuthenticationException: Demasiadas conexiones

Si su clúster de MSK se ejecuta en un agente del tipo kafka.t3.small con control de acceso de IAM, tenga en cuenta el límite de conexiones. El tipo de instancia kafka.t3.small solo acepta una conexión TCP por agente por segundo. Cuando se supera este límite de conexiones, se produce un error en la prueba de creación. Como resultado, recibirá un error de SaslAuthenticationException, que indica un error de credenciales no válidas. Para obtener más información sobre los clústeres de MSK y el control de acceso de IAM, consulte Cómo funciona Amazon MSK con IAM.

Para resolver el error SaslAuthenticationException, realice una de las siguientes acciones:

  • En su configuración de trabajo de Amazon MSK Connect, actualice los valores de reconnect.backoff.ms y reconnect.backoff.max.ms a «1000» o más.
  • Actualice a un tipo de instancia de agente más grande (como kafka.m5.large o superior). Para obtener más información sobre los tipos de agente de Amazon MSK y cómo elegir el tipo de agente correcto, consulte Tipos de agente y Ajustar el tamaño del clúster.

org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: No se puede ejecutar la solicitud HTTP: No se pudo conectar a s3.us-east-1.amazonaws.com:443: se agotó el tiempo de espera de la conexión

Este error aparece cuando el conector no puede conectarse a Amazon S3. Para solucionar este error, asegúrese de haber creado el punto de conexión de Amazon Virtual Private Cloud (Amazon VPC) desde la VPC del clúster a Amazon S3. Para crear un punto de conexión de Amazon VPC desde la VPC del clúster a Amazon S3, siga estos pasos:

  1. Abra la consola de Amazon VPC.
  2. En el panel de navegación, elija Puntos de enlace.
  3. Elija Crear punto de enlace.
  4. Para la categoría Servicio, elija Servicios de AWS.
  5. En Servicios, seleccione el filtro Nombre del servicio y, a continuación, seleccione com.amazonaws.<region>.s3. Sustituya <region> por su región de AWS.
    Elija el filtro Tipo y, a continuación, elija Puerta de enlace.
  6. Para VPC, seleccione la VPC del clúster.
  7. En Tablas de enrutamiento, seleccione la tabla de enrutamiento que está asociada a las subredes del clúster.
  8. Elija Crear punto de enlace.

org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: No se puede ejecutar la solicitud HTTP: No se pudo conectar a firehose.us-east-2.amazonaws.com:443: se agotó el tiempo de espera de la conexión

Este error aparece cuando el conector no puede conectarse a Amazon Kinesis Data Firehose. Para solucionar este error, asegúrese de haber creado el punto de conexión de Amazon VPC desde la VPC del clúster a Kinesis Data Firehose.

Para crear un punto de conexión de Amazon VPC desde la VPC del clúster a Kinesis Data Firehose, siga los pasos de la sección anterior. Utilice el filtro Nombre del servicio com.amazonaws.<region>.kinesis-firehose.

La conexión al nodo - 1 (b1.<cluster>.<region>.amazonaws.com) no pudo autenticarse debido a: Acceso denegado

Este error aparece cuando el usuario de IAM de MSK Connect no tiene los permisos necesarios para crear un conector.

Al crear un conector con MSK Connect, debe especificar un rol de IAM para usarlo con él. Su rol de ejecución de servicios debe tener la siguiente política de confianza para que MSK Connect pueda asumir el rol:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "Service": "kafkaconnect.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "Account-ID"
            },
            "ArnLike": {
                "aws:SourceArn": "MSK-Connector-ARN"
            }
        }
    }]
}

Si el clúster de MSK que quiere usar con su conector utiliza la autenticación de IAM, debe añadir la siguiente política de permisos al rol de ejecución de servicios del conector:

{
    "Version": "2012-10-17",
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "cluster-arn"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic"
            ],
            "Resource": [
                "ARN of the topic that you want a sink connector to read from"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:WriteData",
                "kafka-cluster:DescribeTopic"
            ],
            "Resource": [
                "ARN of the topic that you want a source connector to write to"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:CreateTopic",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic"
            ],
            "Resource": [
                "arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/__amazon_msk_connect_*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/__amazon_msk_connect_*",
                "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/connect-*"
            ]
        }
    ]
}

Para obtener información sobre cómo encontrar el UUID del clúster y crear ARN de temas, consulte Recursos.

ERROR: La conexión al nodo -3 (b-1).<cluster>.<region>.amazonaws.com/INTERNAL_IP) no pudo autenticarse debido a: Un error: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: No se pudieron encontrar las credenciales de AWS IAM [Caused by aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: No se pueden cargar las credenciales de AWS desde ninguna...........No se pueden cargar las credenciales de AWS desde variables de entorno (AWS_ACCESS_KEY_ID (o AWS_ACCESS_KEY) y AWS_SECRET_KEY (o AWS_SECRET_ACCESS_KEY))

Este error aparece cuando el rol de IAM que utilizó para crear el conector no tiene los permisos necesarios.

Revise las políticas de acceso y la relación de confianza del rol de IAM del conector que utiliza para acceder a Amazon MSK. Para obtener más información, consulte Rol de ejecución de servicios.

Información relacionada

¿Cómo me conecto a mi clúster de Amazon MSK mediante Kafka-Kinesis-Connector?

MSK Connect

Solución de problemas del clúster de Amazon MSK

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año