내용으로 건너뛰기

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

5분 분량
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."

AWSServiceRoleForKafkaConnect 서비스 연결 역할을 서비스 실행 역할로 사용할 수 없습니다. 대신 별도의 서비스 역할을 만들어야 합니다. 그런 다음, 커넥터에서 사용할 역할을 지정합니다.

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

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

‘SaslAuthenticationException’ 오류

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

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

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

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

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

  • MSK Connect 워커 구성에서 reconnect.backoff.msreconnect.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. 탐색 창에서 Endpoints(엔드포인트)를 선택합니다.
  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",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "Account-ID"
            },
            "ArnLike": {
                "aws:SourceArn": "MSK-Connector-ARN"
            }
        }
    }]
}

커넥터와 함께 사용하려는 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-*"
            ]
        }
    ]
}

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

‘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 역할의 액세스 정책 및 신뢰 관계를 검토하십시오. 자세한 내용은 서비스 실행 역할 이해를 참조하십시오.

관련 정보

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

MSK Connect 이해

Amazon MSK 클러스터 문제 해결

AWS 공식업데이트됨 5달 전