amazon-web-services - 无法使用 AWSIoTPythonSDK 通过 MQTT 连接到 AWS IoT Core
问题描述
我已逐步遵循 AWS 教程。https://aws.amazon.com/premiumsupport/knowledge-center/iot-core-publish-mqtt-messages-python/
我用 * 创建了开放式策略,注册了一个东西并将其附加到策略中,生成、下载并激活了证书。我尝试使用适用于 Python v2 的 AWS IoT SDK 和原始 sdk 连接并发布到订阅,但都不起作用。我使用的代码直接来自 AWS 的演示示例连接代码,但它们只是无法连接。
在使用适用于 Python v2 的 AWS IoT 开发工具包时,我收到以下错误消息:
RuntimeError: 1038 (AWS_IO_FILE_VALIDATION_FAILURE): A file was read and the input did not match the expected value
使用原始 SDK 时,我收到以下错误消息:
TimeoutError: [Errno 60] Operation timed out
我正在使用的python代码:
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
import time as t
import json
import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT
# Define ENDPOINT, CLIENT_ID, PATH_TO_CERT, PATH_TO_KEY, PATH_TO_ROOT, MESSAGE, TOPIC, and RANGE
ENDPOINT = "XXXXX-ats.iot.ap-southeast-2.amazonaws.com"
CLIENT_ID = "testDevice"
PATH_TO_CERT = "certs/XXXX-certificate.pem.crt"
PATH_TO_KEY = "certs/XXXX-private.pem.key"
PATH_TO_ROOT = "certs/root.pem"
MESSAGE = "Hello World"
TOPIC = "test/testing"
RANGE = 20
myAWSIoTMQTTClient = AWSIoTPyMQTT.AWSIoTMQTTClient(CLIENT_ID)
myAWSIoTMQTTClient.configureEndpoint(ENDPOINT, 8883)
myAWSIoTMQTTClient.configureCredentials(PATH_TO_ROOT, PATH_TO_KEY, PATH_TO_CERT)
myAWSIoTMQTTClient.connect()
print('Begin Publish')
for i in range (RANGE):
data = "{} [{}]".format(MESSAGE, i+1)
message = {"message" : data}
myAWSIoTMQTTClient.publish(TOPIC, json.dumps(message), 1)
print("Published: '" + json.dumps(message) + "' to the topic: " + "'test/testing'")
t.sleep(0.1)
print('Publish End')
myAWSIoTMQTTClient.disconnect()
(我审查了端点和证书 ID)
(我正在使用 macbook air 并在公立学校网络上)
解决方案
我回家测试了它,它工作得很好。如果您有同样的问题,请尝试排除网络故障。我认为我的学校阻止了 MQTT 或其他东西。
推荐阅读
- python - 将实例传递给对象与稍后将实例作为属性添加
- c# - 是否可以遍历 word 文档并获取所有日期?
- python - Python pandas 使用 3 列分组
- python - 熊猫数据框与列 dayofweek 和 time 作为键合并
- postgresql - docker-compose psql 不在 127.0.0.1 上提供服务
- arrays - 在 C 中,如何打印用户选择输入的值的索引?
- directory - 文件管理器的操作
- sql-server - 如何查询系统版本表以获取最近的更改?
- javascript - three.js — faceVertexUvs 在 r.133 版本上未定义
- php - 比较 date() 和时间戳 PHP