Amazon MSK 주제로 메시지를 전송하지 못하는 AWS IoT 규칙의 문제를 해결하려면 어떻게 해야 합니까?
Amazon Managed Streaming for Apache Kafka(Amazon MSK) 주제로 메시지를 전송하지 못하는 AWS IoT Core 규칙의 문제를 해결하고 싶습니다.
간략한 설명
AWS IoT 규칙이 Amazon MSK 클러스터에 메시지를 게시하지 못하는 경우 다음 오류 메시지 중 하나가 표시될 수 있습니다.
- "KafkaAction failed to send a message to the specified bootstrap servers. Topic <topic_name> not present in metadata after 1000 ms."
- "KafkaAction failed to send a message to the specified bootstrap servers. SSL handshake failed."
- "KafkaAction failed to send a message to the specified bootstrap servers. An unknown error occurred."
- "KafkaAction failed to send a message to the specified bootstrap servers. No resolvable bootstrap urls given in bootstrap.servers."
해결 방법
문제 해결을 시작하기 전에 다음 단계를 완료하십시오.
- AWS IoT 규칙과 동일한 AWS 리전에서 AWS IoT 로깅을 구성합니다.
- AWS IoT 규칙 및 Amazon MSK 클러스터의 설정을 확인합니다. 자세한 내용은 필드 노트: IoT 규칙 작업을 사용하여 Amazon Managed Streaming for Apache Kafka에 메시지 전송의 3단계. AWS Cloud9에서 Kafka 생산자 및 소비자를 설정하여 설정 테스트를 참조하십시오.
수신한 KafkaAction 오류 메시지를 기반으로 문제 해결
참고: 올바른 포트 번호를 사용하여 클라이언트 시스템과 통신해야 합니다.
Error: KafkaAction failed to send a message to the specified bootstrap servers. Topic not present in metadata after 1000 ms.
이 오류는 AWS IoT Core가 Amazon MSK 클러스터에 정의된 주제의 메타데이터에 액세스할 수 없을 때 발생합니다. 이 문제를 해결하려면 다음 단계를 완료하십시오.
-
주제가 Amazon MSK 클러스터에 있는지 확인하십시오.
참고: example-topic-name을 사용자의 주제 이름으로 바꾸십시오../bin/kafka-topics.sh —list —zookeeper $ZOOKEEPER_STRING | grep example-topic-name
-
부트스트랩 서버 및 ZooKeeper의 올바른 연결 문자열이 AWS IoT 규칙 구성에 있는지 확인하십시오. Amazon MSK 설정의 클라이언트 정보 페이지에서 부트스트랩 서버 및 ZooKeeper 연결 문자열을 찾을 수 있습니다.
-
클러스터에 매핑된 보안 그룹을 확인합니다. 보안 그룹은 Amazon Virtual Private Cloud(Amazon VPC) 대상에서 부트스트랩 서버에 매핑된 포트로의 인바운드 트래픽을 허용해야 합니다.
-
ZooKeeper의 포트가 인바운드 트래픽을 허용하는지 확인합니다. ZooKeeper는 일반 텍스트에는 포트 2181을 사용하고 TLS 암호화에는 2182를 사용합니다.
-
(선택 사항) Amazon VPC 대상 및 클러스터가 동일한 Amazon VPC와 서브넷을 공유하지 않는 경우 서브넷에 NAT 게이트웨이를 생성하십시오. 이를 통해 AWS IoT Core에서 퍼블릭 Amazon MSK 클러스터로 메시지를 전달할 수 있습니다. 자세한 내용은 Amazon MSK 클러스터에 연결을 참조하십시오.
-
Amazon MSK 클러스터와 동일한 서브넷에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작합니다.
-
포트가 열려 있는지 확인합니다.
참고: example-port-number를 사용자의 포트 번호로 바꾸십시오.부트스트랩:
telnet bootstrap-broker example-port-number
ZooKeeper:
telnet Apache-ZooKeeper-node example-port-number
-
AWS IoT 규칙에 연결된 AWS Identity and Access Management(IAM) 역할에 올바른 권한이 있는지 확인하십시오. IAM 역할에는 Amazon VPC에서 탄력적 네트워크 인터페이스를 관리할 권한이 있어야 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcAttribute", "ec2:DescribeSecurityGroups" ], "Resource": "*" } ] }
-
Amazon MSK 클러스터가 사용자 이름과 암호로 구성된 경우 권한이 정책에 있는지 확인하십시오.
{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:region:account-id:" }
-
신뢰 정책이 AWS IoT Core에서 역할을 맡을 수 있도록 허용하는지 확인하십시오.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- (선택 사항) 고객 관리형 키를 사용하여 저장 데이터를 암호화하는 경우 IAM 역할에 올바른 권한이 있는지 확인하십시오. IAM 역할에는 호출자의 AWS Key Management Service(AWS KMS) 키를 사용할 권한이 있어야 합니다. 다음 예제 IAM 정책에서는 IAM 역할에 AWS KMS 권한이 부여됩니다.
참고: example-account-id를 사용자의 계정 ID로 바꾸고, example-iam-role을 사용자의 IAM 역할로 바꾸십시오.
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": [ "AWS": { "arn:aws:iam::example-account-id:example-iam-role", "arn:aws:iam::example-account-id:root" } ], "Action": "kms:*", "Resource": "*" }
- AWS IoT 규칙이 가정한 IAM 역할에 IAM 정책에서 AWS KMS 작업을 수행할 수 있는 권한이 있는지 확인합니다.
- 관련 파티션이 Amazon MSK 클러스터에 있는지 확인합니다. 단일 파티션(0)이 있고 AWS IoT 규칙이 파티션(1)에 액세스하려고 하면 오류 메시지가 다시 나타납니다.
Error: KafkaAction failed to send a message to the specified bootstrap servers. SSL handshake failed.
이 오류는 Amazon MSK 클러스터와의 TLS 핸드셰이크 중에 Amazon MSK 클러스터에 문제가 발생할 때 발생합니다. 이 오류가 발생하면 AWS 사설 인증 기관(AWS 사설 CA) 에서 발급한 인증서를 사용해야 합니다. 키 저장소와 AWS IoT 규칙에 AWS 사설 CA 인증서를 추가할 수 있습니다. 자세한 내용은 상호 TLS 인증을 참조하십시오.
Error: KafkaAction failed to send a message to the specified bootstrap servers. An unknown error occurred.
Error: KafkaAction failed to send a message to the specified bootstrap servers. No resolvable bootstrap urls given in bootstrap.servers.
이러한 오류를 해결하려면 이전 1~13단계를 완료하십시오. 그래도 오류 메시지가 표시되면 AWS IoT 주제에 게시되는 메시지를 점차 늘리십시오. 여전히 문제가 발생하면 AWS Support에 문의하십시오.
관련 정보
AWS IoT Core를 Amazon MSK와 통합하는 방법
Amazon Managed Streaming for Apache Kafka(Amazon MSK)에 대규모 데이터 전송
관련 콘텐츠
- 질문됨 7달 전lg...
- 질문됨 2달 전lg...
- 질문됨 9달 전lg...
- 질문됨 2년 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 3년 전