Como solucionar erros ao tentar criar um conector usando o Amazon MSK Connect?

9 minuto de leitura
0

Recebo um erro quando tento criar um conector usando o Amazon Managed Streaming for Apache Kafka (Amazon MSK) Connect.

Breve descrição

Ao criar um conector usando o MSK Connect, você pode receber uma destas mensagens de erro:

  • Há um problema com o conector Código: UnknownError.UnknownMessage: A última operação falhou. Repita a operação.
  • Parâmetro inválido connectorConfiguration: O campo obrigatório a seguir está ausente ou tem um valor inválido: tasks.max
  • Parâmetro inválido serviceExecutionRoleArn: Um perfil vinculado a serviço (ARN) não pode ser fornecido como um ARN de perfil de execução de serviço
  • org.apache.kafka.connect.errors.ConnectException: Falha ao encontrar qualquer classe que implemente o Conector e cujo nome corresponda...
  • org.apache.kafka.common.errors.TimeoutException: Tempo limite atingido ao aguardar para enviar a chamada. Call: fetchMetadata
  • org.apache.kafka.common.errors.SaslAuthenticationException: Muitas conexões
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Não é possível executar a solicitação HTTP: Falha na conexão com s3.eu-central-1.amazonaws.com:443 [s3.eu-central-1.amazonaws.com/52.219.47.235 ]: a conexão atingiu o tempo limite
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Não é possível executar a solicitação HTTP: Falha na conexão com firehose.us-east-2.amazonaws.com:443 [firehose.us-east-2.amazonaws.com/52.95.23.168 ]: a conexão atingiu o tempo limite
  • Falha na autenticação da conexão com o nó - 1 (endpoint do operador) devido a: Acesso negado
  • ERRO: falha na autenticação da conexão com o nó -3 (b-1.<cluster>.<region>.amazonaws.com/INTERNAL_IP) devido a: Um erro: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: Falha ao encontrar as credenciais do AWS IAM\ [Causada por aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: Não é possível carregar credenciais da AWS de qualquer ...........Não é possível carregar credenciais da AWS a partir de variáveis de ambiente (AWS_ACCESS_KEY_ID (ou AWS_ACCESS_KEY) e AWS_SECRET_KEY (ou AWS_SECRET_ACCESS_KEY))

Resolução

Há um problema com o conector Código: UnknownError.UnknownMessage: A última operação falhou. Repita a operação.

Você recebe esse erro quando o MSK Connect não consegue criar o conector, e este é movido para o estado de falha.

Para encontrar a causa raiz da falha, revise os eventos de log do MSK Connect. O MSK Connect grava eventos de log que você pode usar para depurar seu conector. Ao criar um conector, você pode especificar zero destinos de log ou um dos seguintes destinos de log:

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

Parâmetro inválido connectorConfiguration: O campo obrigatório a seguir está ausente ou tem um valor inválido: tasks.max

Se você usar um caractere de retorno de carro (/r) no final de uma configuração, receberá o seguinte erro:

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

Para resolver esse erro, tente as seguintes etapas de solução de problemas:

  • Insira manualmente as informações de configuração na caixa de diálogo de configuração do conector em vez de copiar e colar de outra origem, como a documentação.
  • Se você estiver em um sistema operacional Windows, use um editor de texto (como o Notepad++). Você pode usar o editor de texto para verificar e remover o retorno de carro (CRLF) e quaisquer caracteres de fim de linha (EOL). Para remover o retorno de carro, copie e cole a configuração em um editor de texto. No editor de texto, escolha View (Exibir) e Show Symbol (Mostrar símbolo). Em seguida, escolha Show All Characters (Mostrar todos os caracteres) para rever quaisquer caracteres CRLF ou EOL que possam existir em uma configuração. Substitua todos os caracteres CRLF ("\r\n") por caracteres LF ("\n").

Parâmetro inválido serviceExecutionRoleArn: Um perfil vinculado a serviço (ARN) não pode ser fornecido como um ARN de perfil de execução de serviço.

Você recebe esse erro ao usar um perfil vinculado ao serviço para criar um conector. O MSK Connect não oferece suporte ao uso do perfil vinculado ao serviço como perfil de execução do serviço. Você deve criar um perfil de execução de serviço separado. Para instruções sobre como criar um perfil personalizado do AWS Identity and Access Management (IAM), consulte Creating a role to delegate permissions to an AWS service (Criar uma função para delegar permissões a um serviço da AWS). Especifique o perfil com o qual você deseja que o conector funcione. Esse perfil deve ser diferente do perfil vinculado ao serviço AWSServiceRoleForKafkaConnect que o serviço usa internamente para criar os recursos do conector.

org.apache.kafka.connect.errors.ConnectException: Falha ao encontrar qualquer classe que implemente o Conector e cujo nome corresponda...

Para resolver esse erro, tente as seguintes etapas de solução de problemas:

  • Remova todos os caracteres de retorno de carro (/r) que possam existir na configuração do conector.
  • Se vários arquivos forem necessários para o plug-in do conector, inclua-os no arquivo compactado. O arquivo compactado é usado durante a criação do plug-in do conector. Os arquivos JAR no arquivo compactado também devem ter a estrutura de arquivo esperada documentada para esse plug-in. É uma prática recomendada ativar logs para o MSK Connect e revisá-los para confirmar se a estrutura do arquivo está definida corretamente.

org.apache.kafka.common.errors.TimeoutException: Tempo limite atingido ao aguardar para enviar a chamada. Call: fetchMetadata

Se o conector não conseguir acessar seu cluster do MSK, você receberá um erro TimeOutException. Para resolver esse erro, tente as seguintes etapas de solução de problemas:

org.apache.kafka.common.errors.SaslAuthenticationException: Muitas conexões

Se o cluster do MSK estiver sendo executado em um tipo de agente kafka.t3.small com o controle de acesso do IAM, esteja ciente do limite de conexões. O tipo de instância kafka.t3.small aceita apenas uma conexão TCP por agente por segundo. Quando esse limite de conexão for excedido, o teste de criação falhará. Como resultado, você receberá um erro SaslAuthenticationException indicando credenciais inválidas. Para mais informações sobre clusters do MSK e o controle de acesso do IAM, consulte How Amazon MSK works with IAM (Como o Amazon MSK funciona com o IAM).

Para resolver o erro SaslAuthenticationException, execute uma das seguintes ações:

  • Na configuração de trabalho do MSK Connect, atualize os valores de reconnect.backoff.ms e reconnect.backoff.max.ms para “1000” ou mais.
  • Atualize para um tipo de instância de agente maior (como kafka.m5.large ou superior). Para mais informações sobre os tipos de agentes do Amazon MSK e a escolha do tipo de agente certo, consulte Broker types (Tipos de agentes) e Right-size your cluster (Tamanho certo do cluster).

org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Não é possível executar a solicitação HTTP: Falha na conexão com s3.us-east-1.amazonaws.com:443: a conexão atingiu o tempo limite

Você recebe esse erro quando o conector não consegue se conectar ao Amazon S3. Para solucioná-lo, certifique-se de criar o endpoint da Amazon Virtual Private Cloud (Amazon VPC) a partir da VPC do cluster para o Amazon S3. Para criar um endpoint da Amazon VPC a partir da VPC do cluster para o Amazon S3, conclua as seguintes etapas:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, escolha Endpoints.
  3. Escolha Create endpoint (Criar endpoint).
  4. Para Service category (Categoria de serviço), escolha AWS services (Serviços da AWS).
  5. Em Services (Serviços), escolha o filtro Service Name (Nome do serviço) e selecione com.amazonaws.<region>.s3. Substitua <region> pela sua região da AWS.
    Escolha o filtro Type (Tipo) e, em seguida, escolha Gateway.
  6. Para VPC, selecione a VPC do cluster.
  7. Em Route tables (Tabelas de rotas), selecione a tabela de rotas associada às sub-redes do cluster.
  8. Escolha Create endpoint (Criar endpoint).

org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Não é possível executar a solicitação HTTP: Falha na conexão com firehose.us-east-2.amazonaws.com:443: a conexão atingiu o tempo limite

Você recebe esse erro quando o conector não consegue se conectar ao Amazon Kinesis Data Firehose. Para solucionar esse erro, certifique-se de criar o endpoint da Amazon VPC a partir da VPC do cluster para o Kinesis Data Firehose.

Para criar um endpoint da Amazon VPC a partir da VPC do cluster para o Kinesis Data Firehose, siga as etapas da seção anterior. Use o filtro de **Service name (Nome do **serviço) com.amazonaws.<region>.kinesis-firehose.

Falha na autenticação da conexão com o nó - 1 (b1.<cluster>.<region>.amazonaws.com) devido a: Acesso negado

Você recebe esse erro quando o usuário do IAM para o MSK Connect não tem as permissões necessárias para criar um conector.

Ao criar um conector com o MSK Connect, você deve especificar um perfil do IAM para usar com ele. Sua função de execução de serviço deve ter a seguinte política de confiança para que o MSK Connect possa assumir essa função:

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

Se o cluster do MSK que você deseja usar com seu conector usar a autenticação do IAM, você deverá adicionar a seguinte política de permissões ao perfil de execução do serviço do 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 informações sobre como encontrar o UUID do seu cluster e criar ARNs de tópicos, consulte Resources (Recursos).

ERRO: falha na autenticação da conexão com o nó -3 (b-1.<cluster>.<region>.amazonaws.com/INTERNAL_IP ) devido a: Um erro: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: Falha ao encontrar as credenciais do AWS IAM\ [Causada por aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: Não é possível carregar credenciais da AWS de qualquer ...........Não é possível carregar credenciais da AWS a partir de variáveis de ambiente (AWS_ACCESS_KEY_ID (ou AWS_ACCESS_KEY) e AWS_SECRET_KEY (ou AWS_SECRET_ACCESS_KEY))

Você recebe esse erro quando o perfil do IAM que você usou para criar o conector não tem as permissões necessárias.

Analise as políticas de acesso e a relação de confiança do perfil do IAM para o conector que você usa para acessar o Amazon MSK. Para obter mais informações, consulte Service execution role (Perfil de execução do serviço).

Informações relacionadas

Como conectar-me ao meu cluster do Amazon MSK usando o Kafka-Kinesis-Connector?

MSK Connect

Solução de problemas com o seu cluster do Amazon MSK

AWS OFICIAL
AWS OFICIALAtualizada há um ano