Amazon MSK Connect를 사용하여 커넥터를 생성하려고 할 때 발생하는 오류를 해결하려면 어떻게 해야 하나요?

7분 분량
0

Amazon Managed Streaming for Apache Kafka(Amazon MSK) Connect를 사용하여 커넥터를 만들려고 하면 오류가 발생합니다.

간략한 설명

MSK Connect를 사용하여 커넥터를 만들 때 다음 오류 메시지 중 하나가 나타날 수 있습니다.

  • There is an issue with the connector Code: UnknownError.UnknownMessage: The last operation failed. Retry the operation.
  • Invalid parameter connectorConfiguration: The following required field is missing or has invalid value: tasks.max
  • Invalid parameter serviceExecutionRoleArn: A service linked role ARN cannot be provided as service execution role ARN
  • org.apache.kafka.connect.errors.ConnectException: Failed to find any class that implements Connector and which name matches...
  • org.apache.kafka.common.errors.TimeoutException: Timed out waiting to send the call. Call: fetchMetadata
  • org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to s3.eu-central-1.amazonaws.com:443 [s3.eu-central-1.amazonaws.com/52.219.47.235 ] failed: connect timed out
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to firehose.us-east-2.amazonaws.com:443 [firehose.us-east-2.amazonaws.com/52.95.23.168 ] failed: connect timed out
  • Connection to node - 1 (broker endpoint) failed authentication due to : Access Denied
  • 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))

해결 방법

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

MSK Connect에서 커넥터를 생성할 수 없고 커넥터가 Failed 상태로 이동할 때 발생하는 오류입니다.

실패의 근본 원인을 찾으려면 MSK Connect의 로그 이벤트를 검토해야 합니다. MSK Connect는 커넥터 디버깅에 사용할 수 있는 로그 이벤트를 기록합니다. 커넥터를 생성할 때 제로 로그 대상 또는 다음 로그 대상 중 하나를 지정할 수 있습니다.

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

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

구성 끝에 캐리지 리턴(/r) 문자를 사용하면 다음 오류가 발생합니다.

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

다음의 문제 해결 단계를 시도해 오류를 해결합니다.

  • 문서와 같은 다른 소스에서 복사하여 붙여넣는 대신 커넥터 구성 대화 상자에 구성 정보를 수동으로 입력합니다.
  • Windows 운영 체제를 사용하는 경우 텍스트 편집기(예: Notepad++)를 사용합니다. 텍스트 편집기를 사용하면 캐리지 리턴(CRLF) 및 EOL(End-Of-Line) 문자를 확인하고 제거할 수 있습니다. 구성을 복사하여 텍스트 편집기에 붙여 넣어 캐리지 리턴을 제거합니다. 텍스트 편집기에서 보기심볼 표시를 선택합니다. 그런 다음 모든 문자 표시를 선택하여 구성에 있을 수 있는 CRLF 또는 EOL 문자를 검토합니다. 모든 CRLF 문자(“\r\n”)를 LF 문자(“\ n”)로 바꿉니다.

Invalid parameter serviceExecutionRoleArn: 서비스 연결 역할 ARN은 서비스 실행 역할 ARN으로 제공할 수 없습니다.

서비스 연결 역할을 사용하여 커넥터를 만들 때 발생하는 오류입니다. MSK Connect는 서비스 실행 역할로서의 서비스 연결 역할을 지원하지 않습니다. 별도의 서비스 실행 역할을 만들어야 합니다. 사용자 지정 AWS Identity and Access Management(AWS IAM) 역할을 생성하는 방법에 대한 지침은 AWS 서비스에 권한을 위임하기 위한 역할 생성을 참조합니다. 커넥터에서 사용하고자 하는 역할을 지정합니다. 이 역할은 서비스가 내부적으로 커넥터 리소스를 생성할 때 사용하는 AWSServiceRoleForKafkaConnect의 서비스 연결 역할과는 달라야 합니다.

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

다음의 문제 해결 단계를 시도해 오류를 해결합니다.

  • 커넥터 구성에 있을 수 있는 캐리지 리턴(/r) 문자를 모두 제거합니다.
  • 커넥터 플러그인에 여러 파일이 필요하다면, 파일을 압축 파일에 포함합니다. 압축 파일은 커넥터 플러그인을 만드는 동안 사용됩니다. 압축 파일의 JAR 파일에는 해당 플러그인에 대한 예상 파일 구조 또한 문서화되어 있어야 합니다. MSK Connect의 로그를 켜고 로그를 검토하여 파일 구조가 올바르게 설정되었는지 확인하는 것을 가장 권장합니다.

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

커넥터를 MSK 클러스터에 연결할 수 없을 때 TimeoutException 오류가 발생합니다. 다음의 문제 해결 단계를 시도해 오류를 해결합니다.

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

IAM 액세스 제어가 가능한 kafka.t3.small 브로커 유형에서 MSK 클러스터가 실행 중이라면 연결 제한에 유의해야 합니다. kafka.t3.small 인스턴스 유형은 브로커별로 초당 하나의 TCP 연결만을 허용합니다. 이 연결 제한을 초과하면 생성 테스트는 실패합니다. 그로 인해 유효하지 않은 자격 증명 오류를 나타내는 ** SaslAuthenticationException** 오류가 발생합니다. MSK 클러스터 및 IAM 액세스 제어에 대한 자세한 내용은 Amazon MSK가 IAM과 함께 작동하는 방식을 참조합니다.

다음 작업 중 하나를 진행해 SaslAuthenticationException 오류를 해결합니다.

  • Amazon MSK Connect 작업자 구성에서 reconnect.backoff.msreconnect.backoff.max.ms의 값을 1000 이상으로 업데이트합니다.
  • 더 큰 브로커 인스턴스 유형(예: kafka.m5.large 이상)으로 업그레이드합니다. Amazon MSK 브로커 유형 및 알맞은 브로커 유형 선택에 대한 자세한 내용은 브로커 유형알맞은 크기의 클러스터을 참조합니다.

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

Amazon S3에 커넥터를 연결할 수 없을 때 발생하는 오류입니다. 이 오류를 해결하려면 클러스터의 VPC에서 Amazon S3로 Amazon Virtual Private Cloud(VPC) 엔드포인트를 만들었는지 확인합니다. 다음 단계를 완료하여 클러스터의 VPC에서 Amazon S3로 Amazon VPC 엔드포인트를 생성합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 엔드포인트를 선택합니다.
  3. 엔드포인트 생성을 선택합니다.
  4. 서비스 범주AWS 서비스를 선택합니다.
  5. 서비스에서 서비스 이름 필터를 선택하고 com.amazonaws을 선택합니다.<region>.s3를 선택합니다. 을(를)<region> 사용자의 AWS 리전으로 변경합니다.
    유형 필터를 선택한 다음 게이트웨이를 선택합니다.
  6. VPC는 클러스터의 VPC를 선택합니다.
  7. 라우팅 테이블에서 클러스터의 서브넷과 연결된 라우팅 테이블을 선택합니다.
  8. 엔드포인트 생성을 선택합니다.

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

커넥터를 Amazon Kinesis Data Firehose에 연결할 수 없을 때 발생하는 오류입니다. 이 오류를 해결하려면 클러스터의 VPC에서 Kinesis Data Firehose로 Amazon VPC 엔드포인트를 생성했는지 확인해야 합니다.

클러스터의 VPC에서 Kinesis Data Firehose로 Amazon VPC 엔드포인트를 생성하려면 이전 섹션의 단계를 따라합니다. 서비스 이름 필터 com.amazonaws.<region>.kinesis-firehose를 사용합니다.

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

MSK Connect에 대한 IAM 사용자에게 커넥터 생성에 필요한 권한이 없을 때 발생하는 오류입니다.

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

클러스터의 UUID 및 구성 주제 ARN을 찾는 방법에 대한 자세한 내용은 리소스를 참조합니다.

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 MSK에 액세스하는 데 사용하는 커넥터에 대한 IAM 역할의 액세스 정책 및 신뢰 관계를 검토해야 합니다. 자세한 내용은 서비스 실행 역할을 참조합니다.

관련 정보

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

MSK Connect

아마존 MSK 클러스터 문제 해결

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠