org.apache.kafka.common.errors.SaslAuthenticationException: 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 provider in the chain: [aws_msk_iam_auth_shadow.com.amazonaws.auth.AWSCredentialsProviderChain@1d00a730: Unable to load AWS credentials from any provider in the chain: [EnvironmentVariableCredentialsProvider: 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)), SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey), WebIdentityTokenCredentialsProvider: You must specify a value for roleArn and roleSessionName, software.amazon.msk.auth.iam.internals.EnhancedProfileCredentialsProvider@6dff3234: Profile file contained no credentials for profile 'default': ProfileFile(profiles=[]), aws_msk_iam_auth_shadow.com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@7aaa946f: Too Many Requests (Service: null; Status Code: 429; Error Code: null; Request ID: null; Proxy: null)]]]) occurred when evaluating SASL token received from the Kafka Broker. Kafka Client will go to AUTHENTICATION_FAILED state.
2条答案
按热度按时间sr4lhrrt1#
没有具体数字。
根据Connect API的粗略估计,
tasks.max
是上面唯一一个可配置的重要任务。每个任务将启动一组消费者/生产者示例,这些示例只与领导者分区通信。在框架内部,Connect status、offset和config主题之间会产生和使用数据。默认情况下,其中很少有多达50个分区,这意味着每个分区对应一个连接。
数据到达领导分区后,将根据您的因素在集群内复制(仍通过TCP)。
某些源连接器可能还会创建AdminClient连接,以便在写入数据之前创建主题。
其他连接器可能会为
errors.tolerance
死信队列使用多个主题,或者使用更具体的主题,如confluent.license.topic
、Debezium的数据库历史主题或MirrorMaker 2心跳主题。如果您使用Confluent Schema Registry,那么它也会维护一个
_schemas
主题。最后,Sink消费者将写入
__consumer_offsets
主题。对于其中的某些情况,增加内部客户端配置(如使用方
max.poll.records
或生成方batch.size
)将降低建立连接的频率,代价是可能会在错误/重新平衡期间丢弃/复制数据3bygqnnd2#
在我的例子中,我们看到了如下错误。看起来我们从MSK取回了SASL令牌,但被EC2示例元数据服务检索AWS凭据以对其进行评估而限制。结果是,这无法从Kafka客户端(https://kafka.apache.org/documentation/#producerconfigs_reconnect.backoff.ms)的
reconnect.backoff.max.ms
和reconnect.backoff.ms
逻辑重试,MSK文档指示您重试,因为在MSK群集中启用IAM身份验证时,MSK新TCP连接限制(https://docs.aws.amazon.com/msk/latest/developerguide/limits.html#msk-provisioned-quota)我们正在使用Java库aws-msk-iam-auth。我发现存在重试和带有抖动逻辑的指数回退,以解决在客户端上获取AWS凭据时出现的这些瞬时连接错误,这需要对JAAS配置字符串进行一些配置。
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required awsMaxRetries="7" awsMaxBackOffTimeMs="500";
https://github.com/aws/aws-msk-iam-auth#retries-while-getting-credentials
我不清楚这是否正是引发最初问题的原因,但它把我带到了这里和许多其他死胡同。希望这对其他人有所帮助,因为MSK文档只提到了Kafka Connect设置,而这些设置在这个场景中是无效的,我花了很多时间和挫折才在aws-msk-iam-auth库中发现这些设置。