Amazon MSK Connect を使用してコネクタを作成する際のエラーをトラブルシューティングする方法を教えてください。
Amazon Managed Streaming for Apache Kafka (Amazon MSK) Connect を使用してコネクタを作成する際、エラーが発生します。
解決策
"Last operation failed" エラー
MSK Connect がコネクタを作成できず、コネクタが Failed ステータスに移行した場合、次のエラーメッセージが表示されます。
"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"
上記のエラーメッセージを解決するには、次の手順を実行します。
- プロパティ (ポート番号を含む) で指定したブートストラップサーバーが有効かつ正確かどうかを確認します。
- クラスターのセキュリティグループが、MSK Connect に関連付けられたクライアントのセキュリティグループからのインバウンドトラフィックを許可していることを確認します。MSK クラスターを使用する場合は、クラスターからのインバウンドトラフィックを許可するルールを追加します。詳細については、「セキュリティグループのルール」を参照してください。
"SaslAuthenticationException" エラー
MSK クラスターが AWS Identity and Access Management (IAM) アクセス制御が設定された kafka.t3.small ブローカータイプで実行されている場合は、接続クォータを確認します。kafka.t3.small インスタンスタイプは、1 秒につき、ブローカーごとに 1 つの 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 のブローカータイプ」および「Standard ブローカーのベストプラクティス」を参照してください。
"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) エンドポイントを作成する必要があります。
次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [エンドポイント] を選択します。
- [エンドポイントを作成] を選択します。
- [タイプ] で [AWS サービス] を選択します。
- [サービス] で [サービス名] のフィルターを選択し、com.amazonaws.region.s3 を選択します。
注: region を実際の AWS リージョンに置き換えてください。 - [タイプ] フィルターを選択し、[ゲートウェイ] を選択します。
- [VPC] でクラスターの VPC を選択します。
- [ルートテーブル] でクラスターのサブネットに関連付けられたルートテーブルを選択します。
- [エンドポイントを作成] を選択します。
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) 認証が失敗した理由は次のとおりです。 エラー :(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 クラスターに接続する方法を教えてください
