【以下的问题经过翻译处理】 使用 KafkaJS 连接到 MSK 集群时收到错误代码 UNSUPPORTED_SASL_MECHANISM,虽然集群支持 IAM 和 SASL/SCRAM 身份验证。
使用的代码及错误信息如下:
import {AclOperationTypes, AclPermissionTypes, AclResourceTypes, Kafka, ResourcePatternTypes} from "kafkajs";
const kafka = new Kafka({
clientId: 'test',
brokers: [
`BROKER1`,
`BROKER2`,
`BROKER3`
],
ssl: true,
sasl: {
mechanism: 'aws',
authorizationIdentity: 'ROLE_ID',
accessKeyId: 'ACCESS_KEY',
secretAccessKey: 'SECRET_KEY',
}
});
(async () => {
const admin = kafka.admin()
await admin.connect();
console.log(await admin.describeAcls({
resourceType: AclResourceTypes.ANY,
resourcePatternType: ResourcePatternTypes.ANY,
operation: AclOperationTypes.ALL,
permissionType: AclPermissionTypes.ANY
}))
})();
{"level":"ERROR","timestamp":"2023-03-09T14:17:16.414Z","logger":"kafkajs","message":"[Connection] Response SaslHandshake(key: 17, version: 1)","broker":"BROKER","clientId":"test","error":"The broker does not support the requested SASL mechanism","correlationId":1,"size":23}
{"level":"ERROR","timestamp":"2023-03-09T14:17:16.416Z","logger":"kafkajs","message":"[BrokerPool] The broker does not support the requested SASL mechanism","retryCount":0,"retryTime":346}
path\to\node_modules\kafkajs\src\protocol\error.js:581
return new KafkaJSProtocolError(errorCodes.find(e => e.code === code) || unknownErrorCode(code))
^
KafkaJSProtocolError: The broker does not support the requested SASL mechanism
at createErrorFromCode (path\to\node_modules\kafkajs\src\protocol\error.js:581:10)
retriable: false,
helpUrl: undefined,
type: 'UNSUPPORTED_SASL_MECHANISM',
code: 33
}