小编Jen*_*nuJ的帖子

Mqtt连接为aws IOT预签名URL提供403

我有aws lambda函数,它生成IOT websocket URL,如下所示.

const v4 = require('aws-signature-v4');
const crypto = require('crypto');

const WSSURL = v4.createPresignedURL(
        'GET',
        process.env.IOT_ENDPOINT_HOST.toLowerCase(),
        '/mqtt',
        'iotdevicegateway',
        crypto.createHash('sha256').update('', 'utf8').digest('hex'),
        {
            'key': process.env.IOT_ACCESS_KEY,
            'secret': process.env.IOT_SECRET_KEY,
            'protocol': 'wss',
            'region': process.env.IOT_AWS_REGION,
        }
    );
Run Code Online (Sandbox Code Playgroud)

我在客户端有mqttjs使用此URL并尝试连接web套接字如下.

var options = {
        will    : {
            topic  : LAST_WILL_TOPIC,
            payload: getMessageString(wss_userId, wss_email, wss_userType, {})
        },
        clientId: wss_userType + '||' + wss_userId
    };

    wssClient = mqtt.connect(WSSURL, options); 
Run Code Online (Sandbox Code Playgroud)

这个代码在几个月之前就完美了,但是现在连接没有启动并且出现以下错误

failed: Error during WebSocket handshake: Unexpected response code: 403
Run Code Online (Sandbox Code Playgroud)

websocket http-status-code-403 mqtt iot aws-iot

6
推荐指数
1
解决办法
563
查看次数

标签 统计

aws-iot ×1

http-status-code-403 ×1

iot ×1

mqtt ×1

websocket ×1