Я помог автору этого вопроса решить эту проблему на другой платформе, но я публикую решение для справки.
Проблема заключается в том, что JWT, которые были сгенерированы в учебном пособии, за которым следовал OP, истекает примерно через час и также не содержит код для обновления токена после истечения срока его действия. Для получения дополнительной информации о создании и обновлении JWT см. здесь .
edit: По запросу добавляем фрагмент кода для обновления jwts. В этом случае get_client
создает соединение MQTT, которое также обрабатывает создание JWT. Предполагается, что срок действия JWT истекает через 60 минут, но в Cloud IoT Core JWT могут быть действительны в течение 24 часов.
seconds_since_issue = (datetime.datetime.utcnow() - jwt_iat).seconds
if seconds_since_issue > 60 * jwt_exp_mins:
print('Refreshing token after {}s').format(seconds_since_issue)
jwt_iat = datetime.datetime.utcnow()
client = get_client(
args.project_id, args.cloud_region,
args.registry_id, args.device_id, args.private_key_file,
args.algorithm, args.ca_certs, args.mqtt_bridge_hostname,
args.mqtt_bridge_port)