检查您的代码并确保已在AWS IoT身份验证器设置中设置了有效的令牌密钥名称。以下是在AWS Lambda中使用Node.js运行AWS IoT身份验证器时可能出现这种错误的示例代码:
const AWS = require('aws-sdk'); const iot = new AWS.Iot();
exports.handler = async (event, context) => { const tokenKeyName = null; // 这会导致错误
// 获取令牌密钥值
const tokenKeyValue = 'myToken123';
// 设置身份验证器
const authParams = {
tokenKeyName: tokenKeyName, // 引发错误的行
tokenKeyValue: tokenKeyValue
}
const authorizer = iot.createAuthorizer({
authorizerFunctionArn: "arn:aws:iot:us-east-1:myaccountid:function/mqtt-auth-function",
tokenSigningPublicKeys: {
myToken123PublicKey: "-----BEGIN PUBLIC KEY-----\nMII...==\n-----END PUBLIC KEY-----\n"
}
});
// 进行身份验证
const authorizationResult = await authorizer.authorize(authParams);
return authorizationResult;
}
为避免出现此错误,请确保将有效的令牌密钥名称设置为tokenKeyName变量的值。例如:
const tokenKeyName = 'myToken123KeyName'; // 设置有效的令牌密钥名称
然后您的代码应该正常运行,而不会引发“AWS IoT验证器mqtt-authorizer的令牌密钥名称不能为空”错误。
上一篇:AWSIOT同时连接多个设备问题