Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Configuración de un dispositivo remoto y uso de un agente de IoT

Modo de enfoque
Configuración de un dispositivo remoto y uso de un agente de IoT - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

El agente IoT se utiliza para recibir el mensaje MQTT que incluye el token de acceso de cliente e iniciar un proxy local en el dispositivo remoto. Debe instalar y ejecutar el agente IoT en el dispositivo remoto si desea un túnel seguro para entregar el token de acceso del cliente mediante MQTT. El agente de IoT debe suscribirse al siguiente tema reservado de MQTT de IoT:

nota

Si desea entregar el token de acceso del cliente de destino al dispositivo remoto mediante métodos distintos de la suscripción al tema MQTT reservado, es posible que necesite un oyente del token de acceso del cliente (CAT) de destino y un proxy local. El oyente CAT debe funcionar con el mecanismo de entrega de los tokens de acceso al cliente que haya elegido y poder iniciar un proxy local en el modo de destino.

Fragmento de agente de IoT

El agente de IoT debe suscribirse al siguiente tema reservado de MQTT sobre IoT para poder recibir el mensaje MQTT e iniciar el proxy local:

$aws/things/thing-name/tunnels/notify

donde thing-name es el nombre de la cosa AWS IoT asociada con el dispositivo remoto.

A continuación, se muestra un ejemplo de una carga útil de mensaje MQTT:

{ "clientAccessToken": "destination-client-access-token", "clientMode": "destination", "region": "aws-region", "services": ["destination-service"] }

Después de recibir un mensaje MQTT, el agente IoT debe iniciar un proxy local en el dispositivo remoto con los parámetros apropiados.

El siguiente código Java muestra cómo utilizar el SDK de dispositivo de AWS IoT y ProcessBuilder de la biblioteca Java para crear un agente de IoT sencillo que funcione con la tunelización segura.

// Find the IoT device endpoint for your Cuenta de AWS final String endpoint = iotClient.describeEndpoint(new DescribeEndpointRequest().withEndpointType("iot:Data-ATS")).getEndpointAddress(); // Instantiate the IoT Agent with your AWS credentials final String thingName = "RemoteDeviceA"; final String tunnelNotificationTopic = String.format("$aws/things/%s/tunnels/notify", thingName); final AWSIotMqttClient mqttClient = new AWSIotMqttClient(endpoint, thingName, "your_aws_access_key", "your_aws_secret_key"); try { mqttClient.connect(); final TunnelNotificationListener listener = new TunnelNotificationListener(tunnelNotificationTopic); mqttClient.subscribe(listener, true); } finally { mqttClient.disconnect(); } private static class TunnelNotificationListener extends AWSIotTopic { public TunnelNotificationListener(String topic) { super(topic); } @Override public void onMessage(AWSIotMessage message) { try { // Deserialize the MQTT message final JSONObject json = new JSONObject(message.getStringPayload()); final String accessToken = json.getString("clientAccessToken"); final String region = json.getString("region"); final String clientMode = json.getString("clientMode"); if (!clientMode.equals("destination")) { throw new RuntimeException("Client mode " + clientMode + " in the MQTT message is not expected"); } final JSONArray servicesArray = json.getJSONArray("services"); if (servicesArray.length() > 1) { throw new RuntimeException("Services in the MQTT message has more than 1 service"); } final String service = servicesArray.get(0).toString(); if (!service.equals("SSH")) { throw new RuntimeException("Service " + service + " is not supported"); } // Start the destination local proxy in a separate process to connect to the SSH Daemon listening port 22 final ProcessBuilder pb = new ProcessBuilder("localproxy", "-t", accessToken, "-r", region, "-d", "localhost:22"); pb.start(); } catch (Exception e) { log.error("Failed to start the local proxy", e); } } }
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.