You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aws-iot-sdk-v3(TypeScript)时IoTDataPlane的publish()调用无限挂起

问题:使用AWS IoT Data Plane SDK发布MQTT消息时无限挂起

我尝试向非保留的IoT Core MQTT主题发布消息,但调用publish()时会无限挂起(除非设置特定超时,否则总会触发超时)。我确认所用IAM用户具备发布MQTT主题的正确权限,但怀疑可能存在跨账户问题。不过即便如此,我认为应该出现明确的失败提示,而非端点挂起的情况。

无论在本地还是云端运行,都会出现挂起问题。

基础代码

import {
  IoTDataPlane,
  IoTDataPlaneClientConfig,
  PublishCommandInput
} from '@aws-sdk/client-iot-data-plane';
import { 
  Endpoint,
  Credentials
} from '@aws-sdk/types';

export async function publishToMQTT(payload: Uint8Array, accessKeyId: string, secretKey: string, sessionToken: string): Promise<void> { 
  const endpoint: Endpoint = {
    hostname: 'myendpoint-ats.iot.us-east-1.amazonaws.com',
    protocol: 'mqtt',
    port:  443,
    path: '' //不确定这里是否需要填值;该字段是对象必填项,但我没有对应值
  };

  const creds: Credentials = {
    accessKeyId: accessKeyId,
    secretAccessKey: secretKey,
    sessionToken: sessionToken
  };

  const config: IoTDataPlaneClientConfig = {
    credentials: creds,
    endpoint: endpoint,
    maxAttempts: 1,
    region: 'us-east-1'
  };

  const client = new IoTDataPlane(config);

  const publishInput: PublishCommandInput = {
    payload: payload,
    qos: 0,
    retain: true,
    topic: 'org/test/topic/<device-specific-id>/status_code' //已移除<>
  };

  const result = await this.client.publish(publishInput); // 此处挂起

  /* 后续逻辑 */
}

SDK生成的请求数据

method: 'POST',
hostname: 'myendpoint-ats.iot.us-east-1.amazonaws.com',
port: 443,
protocol: 'mqtt:',
path: '/topics/org%2Ftest%2Ftopic%2Fdevice-specific-id%2Fstatus_code', // 主题已URL编码
query: {
   qos: "0",
   retain: "true"
}

我也尝试改用IoTDataPlaneClient.send(PublishCommand)的写法,但结果仍然是端点挂起。


解决方案

问题根源在于端点的配置方式:之前使用的是@aws-sdk/types中的Endpoint对象,改用字符串格式的端点即可解决问题,消息能正常发布且不再挂起。

修改前代码

const endpoint: Endpoint = {
  hostname: 'myendpoint-ats.iot.us-east-1.amazonaws.com',
  protocol: 'mqtt',
  port:  443,
  path: ''
};

修改后代码

const endpoint: string = 'https://myendpoint-ats.iot.us-east-1.amazonaws.com';

内容的提问来源于stack exchange,提问作者nducasse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:45:30