내용으로 건너뛰기

Amazon MSK Connect를 사용해 커넥터를 만들 때 발생하는 오류를 어떻게 해결합니까?

6분 분량
0

Amazon Managed Streaming for Apache Kafka(Amazon MSK) Connect를 사용해 커넥터를 만들었는데 오류가 발생했습니다.

해결 방법

수신된 오류에 대해 다음 문제 해결 단계를 따르십시오.

‘Last operation failed’ 오류

MSK Connect가 커넥터를 만들 수 없고 커넥터 상태가 실패로 이동하면 다음 오류 메시지가 표시됩니다.

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

실패 원인을 찾으려면 MSK Connect의 로그 이벤트를 검토하십시오.

‘Required field is missing’ 오류

구성 끝에 캐리지 리턴(/r) 문자를 사용하면 다음과 같은 오류 메시지가 표시됩니다.

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

이 문제를 해결하려면 다음 작업을 수행하십시오.

  • 커넥터 구성 대화 상자에 구성 정보를 수동으로 입력합니다. 다른 소스에서 구성 정보를 복사하여 붙여넣지 마십시오.
  • Windows 운영 체제(OS)의 경우 텍스트 편집기를 사용하여 CRLF(캐리지 리턴 및 줄 바꿈) 문자와 EOL(줄 끝) 문자를 제거합니다. 캐리지 리턴을 제거하려면 구성을 복사하여 텍스트 편집기에 붙여넣습니다. 텍스트 편집기에서 보기를 선택한 다음, 기호 표시를 선택합니다. 그런 다음, 모든 문자 표시를 선택합니다. 모든 CRLF 문자 \r\n을 줄 바꿈(LF) \n으로 바꿉니다.

‘Invalid parameter’ 오류

MSK Connect 서비스 연결 역할을 사용해 커넥터를 만들면 다음과 같은 오류 메시지가 표시됩니다.

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

MSK Connect가 이 오류를 반환한 이유는 AWSServiceRoleForKafkaConnect 서비스 연결 역할을 서비스 실행 역할로 사용할 수 없기 때문입니다. 이 오류를 해결하려면 필요한 권한이 있는 별도의 IAM 서비스 실행 역할을 만드십시오. 그런 다음, 해당 역할을 선택하여 커넥터를 구성합니다.

‘Failed to find any class that implements Connector’ 오류

다음 오류 메시지가 표시됩니다.

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

이 문제를 해결하려면 다음 작업을 수행하십시오.

  • 커넥터 구성에 있는 CRLF 문자를 제거합니다.
  • 커넥터 플러그인에 여러 파일이 필요한 경우 압축 파일에 해당 파일을 포함합니다. 압축 파일의 JAR 파일에도 플러그인의 예상 파일 구조가 있어야 합니다. MSK Connect의 로그를 활성화하고 로그를 검토하여 파일 구조가 올바른지 확인하는 것이 좋습니다.
  • 모든 필수 종속성 및 클래스가 사용자 지정 플러그인에 포함되어 있어야 합니다.

‘TimeOutException’ 오류

커넥터가 MSK 클러스터에 연결할 수 없는 경우 다음과 같은 오류 메시지가 표시됩니다.

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

위 오류 메시지를 해결하려면 다음 작업을 수행하십시오.

  • 속성 및 포트 번호에서 지정한 부트스트랩 서버가 유효한지 확인합니다.
  • MSK Connect와 연결된 클러스터의 보안 그룹이 클라이언트의 보안 그룹으로부터 인바운드 트래픽을 허용하는지 확인합니다. MSK 클러스터를 사용하는 경우 클러스터에서 인바운드 트래픽을 허용하는 규칙을 추가합니다.
  • 클러스터의 보안 그룹이 MSK Connect와 연결된 보안 그룹으로의 아웃바운드 트래픽을 허용하는지 확인합니다. MSK 클러스터와 MSK 커넥터가 서로 다른 보안 그룹을 사용하는 경우, 아웃바운드 규칙이 MSK 클러스터로의 트래픽을 허용해야 합니다. 또한 MSK 클러스터로부터의 아웃바운드 규칙이 MSK Connect로의 트래픽을 허용해야 합니다.

자세한 내용은 보안 그룹 규칙을 참조하십시오.

‘SaslAuthenticationException’ 오류

MSK 클러스터가 AWS Identity and Access Management(IAM) 액세스 제어를 사용하는 kafka.t3.small 브로커 유형에서 실행되는 경우 연결 할당량을 검토하십시오. kafka.t3.small 인스턴스 유형은 각 브로커에 대하여 초당 4개의 TCP 연결을 수락합니다.

연결 할당량을 초과하면 만들기 테스트가 실패하고, 다음과 같은 오류 메시지가 표시됩니다.

‘org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects’

MSK 클러스터 및 IAM 액세스 제어에 대한 자세한 내용은 Amazon MSK와 IAM의 작동 방식을 참조하십시오.

‘SaslAuthenticationException’ 오류를 해결하려면 다음 작업 중 하나를 수행하십시오.

  • MSK Connect 워커 구성에서 reconnect.backoff.ms 및 reconnect.backoff.max.ms의 값을 1000 이상으로 업데이트합니다.
  • 더 큰 브로커 인스턴스 유형(예: kafka.m5.large 이상)으로 업그레이드합니다. 자세한 내용은 Amazon MSK 브로커 유형 및 표준 브로커 모범 사례를 참조하십시오.

‘Unable to connect to S3’ 오류

커넥터가 Amazon Simple Storage Service(Amazon S3)에 연결할 수 없는 경우, 다음과 같은 오류 메시지가 표시됩니다.

‘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’

이 문제를 해결하려면 클러스터의 VPC에서 Amazon S3로 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 만들어야 합니다.

다음 단계를 완료하십시오.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 엔드포인트를 선택합니다.
  3. 엔드포인트 만들기를 선택합니다.
  4. 유형에서 AWS 서비스를 선택합니다.
  5. 서비스에서 서비스 이름 필터를 선택하고 com.amazonaws.region.s3를 선택합니다.
    참고: region을 AWS 리전으로 바꾸십시오.
  6. 유형 필터를 선택한 다음, 게이트웨이를 선택합니다.
  7. VPC에서 클러스터의 VPC를 선택합니다.
  8. 라우팅 테이블에서 클러스터의 서브넷과 연결된 라우팅 테이블을 선택합니다.
  9. 엔드포인트 만들기를 선택합니다.

Firehose의 ‘Unable to execute HTTP request’ 오류

커넥터가 Amazon Data Firehose에 연결할 수 없는 경우 다음과 같은 오류 메시지가 표시됩니다.

‘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’

이 문제를 해결하려면 위 섹션의 단계에 따라 클러스터의 VPC에서 Amazon Data Firehose로 VPC 엔드포인트를 만드십시오. 서비스 이름 필터 com.amazonaws.region.kinesis-firehose를 사용하십시오.

‘Access denied’ 오류

MSK Connect의 IAM 사용자에게 커넥터를 만드는 데 필요한 권한이 없는 경우, 다음과 같은 오류 메시지가 표시됩니다.

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

MSK Connect로 커넥터를 만들 때는 커넥터와 함께 사용할 IAM 역할을 지정해야 합니다. MSK Connect가 역할을 수임할 수 있도록 서비스 실행 역할에 다음과 같은 트러스트 정책이 있어야 합니다.

{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "kafkaconnect.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

커넥터의 MSK 클러스터가 IAM 인증을 사용하는 경우, 커넥터의 서비스 실행 역할에 다음 권한 정책을 추가합니다.

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

자세한 내용은 권한 부여 정책 리소스를 참조하십시오.

조직에서 서비스 제어 정책(SCP)을 사용하는 경우, SCP가 IAM 사용자 및 IAM 역할에 대한 액세스를 제한하지 않아야 합니다. SCP가 AWS 서비스에 대한 허용 목록을 사용하여 구성된 경우, kafka-cluster 작업이 허용된 서비스로 포함되지 않았어야 합니다. MSK Connect 요청은 서비스 실행 역할에 필요한 권한이 포함되어 있더라도 MSK 클러스터에 대한 액세스가 거부됩니다. SCP 권한 세트를 검토하고 kafka-cluster 작업이 명시적으로 허용되는지 확인하십시오.

자세한 내용은 서비스 제어 정책(SCP)을 참조하십시오.

‘Failed to find AWS IAM Credentials’ 오류

커넥터를 만드는 데 사용한 IAM 역할에 필요한 권한이 없는 경우, 다음과 같은 오류 메시지가 표시됩니다.

‘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))’

위 오류 메시지의 문제를 해결하려면 커넥터에 대한 IAM 역할의 액세스 정책 및 트러스트 관계를 검토하십시오. 자세한 내용은 서비스 실행 역할 이해를 참조하십시오.

필수 커넥터 구성 속성이 누락되었거나 잘못되었어도 이 오류가 발생할 수 있습니다. 예를 들어 Amazon S3 커넥터에는 올바른 AWS 리전을 포함해야 합니다. 필수 속성이 구성되지 않은 경우 커넥터가 AWS 자격 증명으로 인증하지 않고 인증이 실패할 수 있습니다.

이 문제를 해결하려면 커넥터 구성을 검토하고 모든 필수 속성이 올바른지 확인하십시오. 필수 커넥터 속성에 대한 자세한 내용은 커넥터 플러그인의 타사 설명서를 참조하십시오.

관련 정보

Kafka-Kinesis-Connector를 사용하여 Amazon MSK 클러스터에 연결하려면 어떻게 해야 합니까?

MSK Connect 이해

Amazon MSK 클러스터 문제 해결

Amazon MSK Connect 문제 해결

AWS 공식업데이트됨 8달 전