Saltar al contenido

¿Cómo soluciono los errores que se muestran al usar Amazon MSK Connect para crear un conector?

9 minutos de lectura
0

He usado Amazon Managed Streaming para Apache Kafka (Amazon MSK) Connect para crear un conector, pero se muestra un error.

Resolución

Sigue estos pasos para solucionar el error que se muestra.

Error "Last operation failed"

Si MSK Connect no puede crear el conector y este pasa al estado Error, se mostrará el siguiente mensaje de error:

"There is an issue with the connector Code: UnknownError.UnknownMessage: The last operation failed. Retry the operation."

Para encontrar la causa del error, revisa los eventos de registro de MSK Connect.

Error "Required field is missing"

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

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

Para solucionar este problema, toma las siguientes medidas:

  • Introduce manualmente la información de configuración en el cuadro de diálogo de configuración del conector. No copies ni pegues la información de configuración de otro origen.
  • En los sistemas operativos (SO) Windows, utiliza un editor de texto para eliminar los caracteres de avance de línea (CRLF) y los caracteres de final de línea (EOL). Para eliminar el salto de línea, copia y pega la configuración en un editor de texto. En el editor de texto, selecciona Ver y, a continuación, selecciona Mostrar símbolo. A continuación, selecciona Mostrar todos los caracteres. Sustituye todos los caracteres CRLF (\r\n) por un avance de línea (LF) (\n).

Error "Invalid parameter"

Cuando utilizas el rol vinculado al servicio MSK Connect para crear un conector, recibes el siguiente mensaje de error:

"Invalid parameter serviceExecutionRoleArn: A service linked role ARN cannot be provided as service execution role ARN."

MSK Connect ha devuelto este error porque no puede usar el rol vinculado al servicio AWSServiceRoleForKafkaConnect como rol de ejecución del servicio. Para resolver este error, crea un rol de ejecución del servicio de IAM independiente con los permisos necesarios. A continuación, selecciona ese rol para configurar el conector.

Error "Failed to find any class that implements Connector"

Se muestra el siguiente mensaje de error:

"org.apache.kafka.connect.errors.ConnectException: Failed to find any class that implements Connector and which name matches..."

Para solucionar este problema, toma las siguientes medidas:

  • Elimina los caracteres CRLF que se encuentran en la configuración del conector.
  • Si el complemento del conector requiere varios archivos, inclúyelos en el archivo comprimido. Los archivos JAR del archivo comprimido también deben tener la estructura de archivos prevista para el complemento. Se recomienda activar los registros de MSK Connect y revisarlos para confirmar que la estructura de archivos es correcta.
  • Asegúrate de que todas las dependencias y clases necesarias estén incluidas en los complementos personalizados.

Error "TimeOutException"

Si el conector no puede llegar al clúster de MSK, se mostrará el siguiente mensaje de error:

"org.apache.kafka.common.errors.TimeoutException: Timed out waiting to send the call. Call: fetchMetadata"

Para resolver el mensaje de error anterior, lleva a cabo las siguientes acciones:

  • Comprueba si los servidores de arranque que has especificado en las propiedades y el número de puerto son válidos.
  • Asegúrate de que el grupo de seguridad de tu clúster permita el tráfico entrante del grupo de seguridad del cliente que está asociado a MSK Connect. Si usas un clúster de MSK, agrega una regla que permita el tráfico entrante desde el clúster.
  • Asegúrate de que el grupo de seguridad de tu clúster permita el tráfico saliente al grupo de seguridad que está asociado a MSK Connect. Si el clúster de MSK y el conector de MSK utilizan grupos de seguridad diferentes, asegúrate de que las reglas de salida permitan el tráfico al clúster de MSK. Además, asegúrate de que las reglas de salida del clúster de MSK permitan el tráfico a MSK Connect.

Para obtener más información, consulta Reglas del grupo de seguridad.

Error "SaslAuthenticationException"

Si tu clúster de MSK se ejecuta en un agente del tipo kafka.t3.small con control de acceso de AWS Identity and Access Management (IAM), revisa tu cuota de conexión. El tipo de instancia kafka.t3.small acepta una 4 conexiones TCP por cada agente por segundo.

Si superas tu cuota de conexión, la prueba de creación falla y se muestra el siguiente mensaje de error:

"org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects"

Para obtener más información sobre los clústeres de MSK y el control de acceso de IAM, consulta Cómo funciona Amazon MSK con IAM.

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

Error "Unable to connect to S3"

Si el conector no se puede conectar a Amazon Simple Storage Service (Amazon S3), se mostrará el siguiente mensaje de error:

"org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to s3.us-east-1.amazonaws.com:443 failed: connect timed out"

Para resolver este problema, debes crear un punto de enlace de Amazon Virtual Private Cloud (Amazon VPC) desde la VPC del clúster a Amazon S3.

Sigue estos pasos:

  1. Abre la consola de Amazon VPC.
  2. En el panel de navegación, selecciona Puntos de enlace.
  3. Selecciona Crear punto de enlace.
  4. En Tipo, selecciona Servicios de AWS.
  5. En Servicios, selecciona el filtro Nombre del servicio y, a continuación, selecciona com.amazonaws.region.s3.
    Nota: Sustituye region por tu región de AWS.
  6. Selecciona el filtro Tipo y, a continuación, selecciona Puerta de enlace.
  7. Para VPC, selecciona la VPC del clúster.
  8. En Tablas de enrutamiento, selecciona la tabla de enrutamiento que está asociada a las subredes del clúster.
  9. Selecciona Crear punto de enlace.

Error "Unable to execute HTTP request" para Firehose

Si el conector no se puede conectar a Amazon Data Firehose, se mostrará el siguiente mensaje de error:

"org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to firehose.us-east-2.amazonaws.com:443 failed: connect timed out"

Para resolver este problema, sigue los pasos de la sección anterior para crear un punto de enlace de VPC desde la VPC del clúster a Amazon Data Firehose. Usa el filtro de Nombre del servicio com.amazonaws.region.kinesis-firehose.

Error "Access denied"

Si el usuario de IAM de MSK Connect no tiene los permisos necesarios para crear un conector, se mostrará el siguiente mensaje de error:

"Connection to node - 1 (b1.<cluster>.<region>.amazonaws.com) failed authentication due to : Access Denied"

Al crear un conector con MSK Connect, debes especificar un rol de IAM para usarlo con él. Tu rol de ejecución del servicio 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"
    }
  ]
}

Si el clúster de MSK para tu conector utiliza la autenticación de IAM, agrega la siguiente política de permisos al rol de ejecución del servicio 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 más información, consulta Recursos de la política de autorización.

Si tu organización usa políticas de control de servicios (SCP), asegúrate de que tus SCP no restrinjan el acceso a los usuarios y roles de IAM. Si tus SCP están configurados con una lista de permitidos para los servicios de AWS, asegúrate de que la acción kafka-cluster no esté incluida como servicio permitido. Las solicitudes de MSK Connect no tienen acceso a tu clúster de MSK aunque el rol de ejecución del servicio incluya los permisos necesarios. Revisa tus conjuntos de permisos de SCP y asegúrate de que las acciones de kafka-cluster estén permitidas de forma explícita.

Para obtener más información, consulta Políticas de control de servicios (SCP).

Error "Failed to find AWS IAM Credentials"

Si el rol de IAM que utilizaste para crear el conector no tiene los permisos necesarios, se mostrará el siguiente mensaje de error:

"ERROR Connection to node -3 (b-1.cluster.region.amazonaws.com/INTERNAL_IP ) failed authentication due to: An error: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: Failed to find AWS IAM Credentials [Caused by aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: Unable to load AWS credentials from any ...........Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY))"

Para solucionar el mensaje de error anterior, revisa las políticas de acceso y la relación de confianza del rol de IAM del conector. Para obtener más información, consulta Descripción del rol de ejecución del servicio.

Este error también puede producirse cuando faltan las propiedades de configuración del conector requeridas o son incorrectas. Por ejemplo, los conectores de Amazon S3 deben incluir la región de AWS correcta. Si las propiedades requeridas no están configuradas, es posible que el conector no se autentique con tus credenciales de AWS y no logre la autenticación.

Para solucionar este problema, revisa la configuración del conector y asegúrate de que todas las propiedades necesarias son correctas. Para obtener más información sobre las propiedades necesarias del conector, consulta la documentación de terceros del complemento de conectores para obtener más información.

Información relacionada

¿Cómo utilizo Kafka-Kinesis-Connector para conectarme a mi clúster de Amazon MSK?

Descripción de MSK Connect

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

Solución de problemas en Amazon MSK Connect

OFICIAL DE AWSActualizada hace 6 meses