Ir para o conteúdo

Como soluciono os erros que recebo quando uso o Amazon MSK Connect para criar um conector?

7 minuto de leitura
0

Quando eu uso o Amazon Managed Streaming for Apache Kafka (Amazon MSK) Connect para criar um conector, recebo uma mensagem de erro.

Resolução

Erro “Last operation failed”

Quando o MSK Connect não consegue criar o conector e o conector passa para o estado Falhou, você recebe a seguinte mensagem de erro:

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

Para encontrar a causa da falha, examine os eventos de log do MSK Connect.

Erro “Required field is missing“

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

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

Para resolver esse problema, realize as seguintes ações:

  • Insira manualmente as informações de configuração na caixa de diálogo de configuração do conector. Não copie e cole as informações de configuração de outra origem.
  • Para sistemas operacionais (SOs) Windows, use um editor de texto para remover os caracteres de retorno de carro e avanço de linha (carriage return and line feed, CRLF) e os caracteres de fim de linha (end-of-line, EOL). Para remover o retorno de carro, copie e cole a configuração em um editor de texto. No editor de texto, selecione Exibir e clique em Mostrar símbolo. Em seguida, clique em Mostrar todos os caracteres. Substitua todos os caracteres CRLF, \r\n, por caracteres de avanço de linha, \n.

Erro “Invalid parameter”

Ao usar o perfil vinculado ao serviço do MSK Connect para criar um conector, você recebe a seguinte mensagem de erro:

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

Não é possível usar o perfil vinculado ao serviço AWSServiceRoleForKafkaConnect como o perfil de execução do serviço. Em vez disso, você deve criar um perfil de serviço separado. Especifique o perfil que você deseja que o conector use.

Erro “Failed to find any class that implements Connector”

Você recebe a seguinte mensagem de erro:

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

Para resolver esse problema, realize as seguintes ações:

  • Remova os caracteres CRLF que estão na configuração do conector.
  • Se o plug-in do conector exigir vários arquivos, inclua-os no arquivo compactado. Os arquivos JAR no arquivo compactado também devem ter a estrutura de arquivo esperada para o plug-in. É uma prática recomendada ativar logs para o MSK Connect e revisá-los para confirmar se a estrutura do arquivo está correta.

Erro “TimeOutException”

Se o conector não conseguir acessar seu cluster do MSK, você receberá a seguinte mensagem de erro:

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

Para resolver a mensagem de erro anterior, execute as seguintes ações:

Erro “SaslAuthenticationException“

Se seu cluster do MSK é executado em um tipo de agente kafka.t3.small com controle de acesso do AWS Identity and Access Management (AWS IAM), revise sua cota de conexão. O tipo de instância kafka.t3.small aceita apenas uma conexão TCP por agente por segundo.

Quando você excede sua cota de conexão, seu teste de criação falha e você recebe a seguinte mensagem de erro:

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

Para obter mais informações sobre clusters do MSK e o controle de acesso do IAM, consulte Como o Amazon MSK funciona com o IAM.

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

Erro “Unable to connect to S3“

Quando o conector não consegue se conectar ao Amazon Simple Storage Service (Amazon S3), você recebe a seguinte mensagem de erro:

“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 esse problema, você deve criar um endpoint da Amazon Virtual Private Cloud (Amazon VPC) da VPC do cluster para o Amazon S3.

Conclua as etapas a seguir:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, escolha Endpoints.
  3. Selecione Criar endpoint.
  4. Em Tipo, selecione Serviços da AWS.
  5. Em Serviços, selecione o filtro Nome do serviço e clique em com.amazonaws.region.s3.
    Observação: substitua region pela sua região da AWS.
  6. Selecione o filtro Tipo e, em seguida, clique em Gateway.
  7. Em VPC, selecione a VPC do cluster.
  8. Em Tabelas de rotas, selecione a tabela de rotas associada às sub-redes do cluster.
  9. Selecione Criar endpoint.

Erro “Unable to execute HTTP request“ no Firehose

Quando o conector não consegue se conectar ao Amazon Data Firehose, você recebe a seguinte mensagem de erro:

“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 esse problema, siga as etapas na seção anterior para criar um endpoint da VPC da VPC do cluster para o Amazon Data Firehose. Use o filtro com.amazonaws.region.kinesis-firehose em Nome do serviço.

Erro “Access denied“

Quando o usuário do IAM do MSK Connect não tem as permissões necessárias para criar um conector, você recebe a seguinte mensagem de erro:

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

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

{    "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ê deve 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 obter mais informações, consulte Recursos da política de autorização.

Erro “Failed to find AWS IAM Credentials“

Quando o perfil do IAM que você usou para criar o conector não tem as permissões necessárias, você recebe a seguinte mensagem de erro:

“ERROR Connection to node -3 (b-1.<cluster>.<region>.amazonaws.com/INTERNAL_IP ) devido a: Um erro: (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 a mensagem de erro anterior, revise as políticas de acesso e a relação de confiança do perfil do IAM para o conector. Para obter mais informações, consulte Saiba mais sobre o perfil de execução do serviço.

Informações relacionadas

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

Saiba mais sobre o MSK Connect

Solução de problemas para o cluster do Amazon MSK

AWS OFICIALAtualizada há 6 meses