AWS IoT:通过WebSocket连接

编程语言 2026-07-11

我正在尝试通过Websockets连接到 AWS IoT

我已经做到:

  • 确保我的IAM SSO用户具备权限(它拥有所有权限——沙箱环境)
  • SigV4 创建了一个域配置,使用 mqtt over websockets

我的理解是,这应该足以建立连接。现在我先在本地电脑上运行,在执行了 aws sso login 之后,我的代码:

import boto3
from botocore.credentials import get_credentials
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
myMQTTClient = AWSIoTMQTTClient("myClientID", useWebsocket=True)
myMQTTClient.configureEndpoint("<domain>.iot.eu-central-1.amazonaws.com", 443)

session = boto3.Session()
creds = session.get_credentials().get_frozen_credentials()
print(creds)

myMQTTClient.configureIAMCredentials(creds.access_key,creds.secret_key,creds.token
)
myMQTTClient.configureOfflinePublishQueueing(-1)  # Infinite offline Publish queueing
myMQTTClient.configureDrainingFrequency(2)  # Draining: 2 Hz
myMQTTClient.configureConnectDisconnectTimeout(10)  # 10 sec
myMQTTClient.configureMQTTOperationTimeout(5)  # 5 sec
myMQTTClient.connect()
myMQTTClient.publish("myTopic", "myPayload", 0)

在尝试连接时会超时。

解决方案

经过多日的挣扎,我找到了我遗漏的部分。原来我需要附上AWS证书,否则AWS就不回应,莫名其妙地导致超时。日志里没有任何数据,因此真的很难排查。

    myMQTTClient.configureCredentials("AmazonRootCA1.pem")
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章