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

如何解决AWS IoT Core Python SDK的属性错误及MQTT超时问题

解决AWS IoT Core Python SDK的两个常见错误

1. 修复'awscrt.mqtt' has no attribute 'OnConnectionFailuredata'错误

这个错误是属性名称拼写错误导致的。正确的回调事件名称是OnConnectionFailed,你应该是手误多写了data后缀。

示例代码里使用的是正确名称,你需要检查自己代码中引用该回调的部分,把错误的OnConnectionFailuredata替换为OnConnectionFailed。比如正确的回调绑定代码:

mqtt_connection = mqtt.Connection(
    client_bootstrap=client_bootstrap,
    client_id=client_id,
    host_name=endpoint,
    port=port,
    on_connection_failed=on_connection_failed_callback,  # 此处为正确参数名
    # 其他参数...
)

如果是通过事件方式绑定,确保使用awscrt.mqtt.OnConnectionFailed这个正确属性。

2. 排查AWS_ERROR_MQTT_TIMEOUT超时错误

既然示例代码能正常运行,说明环境本身没问题,问题出在自定义设备的配置或参数上,按以下步骤排查:

  • 校验设备凭证:确认设备证书、私钥、根CA证书正确有效:
    • 证书在AWS IoT控制台中处于激活状态(未被吊销或禁用)
    • 私钥与证书匹配,根CA证书使用AWS官方提供的版本(比如Amazon Root CA 1)
  • 检查端点与端口:
    • 确认AWS IoT Core的端点地址正确(从控制台>设置>设备数据端点获取)
    • 使用8883端口(MQTT over TLS),若网络有代理或防火墙,确保该端口开放
  • 连接参数检查:
    • 避免重复使用同一个client_id(AWS IoT不允许同一ID同时在线)
    • 调整keep_alive_interval_secs参数,不要设置过短(建议默认300秒,网络不稳定时可适当延长)
  • IoT Policy权限验证:
    • 确认设备已附加正确的IoT Policy,Policy必须包含iot:Connect权限,资源范围覆盖设备client ID,示例Policy:
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "iot:Connect",
                  "Resource": "arn:aws:iot:us-east-1:123456789012:client/${iot:ClientId}"
              }
          ]
      }
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:52:46