Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Como configurar um dispositivo remoto e usar o atendente de IoT

Modo de foco
Como configurar um dispositivo remoto e usar o atendente de IoT - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

O atendente da IoT é usado para receber a mensagem MQTT que inclui o token de acesso do cliente e iniciar um proxy local no dispositivo remoto. Você deverá instalar e executar o atendente IoT no dispositivo remoto se desejar que o encapsulamento seguro entregue o token de acesso do cliente usando MQTT. O atendente da IoT deve assinar o seguinte tópico MQTT reservado da IoT:

nota

Se você quiser entregar o token de acesso do cliente de destino ao dispositivo remoto por meio de métodos diferentes da assinatura do tópico reservado do MQTT, talvez seja necessário um receptor do token de acesso do cliente (CAT) de destino e um proxy local. O receptor CAT deve funcionar com o mecanismo de entrega de token de acesso do cliente escolhido e ser capaz de iniciar um proxy local no modo de destino.

Snippet de atendente de IoT

O atendente de IoT deve se inscrever no seguinte tópico reservado do IoT MQTT para poder receber a mensagem do MQTT e iniciar o proxy local:

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

Onde thing-name está o nome da AWS IoT coisa associada ao dispositivo remoto.

Veja seguir um exemplo de carga da mensagem MQTT:

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

Depois de receber uma mensagem MQTT, o atendente da IoT deve iniciar um proxy local no dispositivo remoto com os parâmetros apropriados.

O código Java a seguir demonstra como usar o AWS IoT Device SDK e a biblioteca Java para criar um agente ProcessBuilderde IoT simples para trabalhar com tunelamento seguro.

// Find the IoT device endpoint for your Conta da 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); } } }
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.