HTTPS - 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á.

HTTPS

Os clientes podem publicar mensagens fazendo solicitações para a API REST usando os protocolos HTTP 1.0 ou 1.1. Para os mapeamentos de porta e autenticação usados por solicitações HTTP, consulte Protocolos, mapeamentos de porta e autenticação.

nota

Ao contrário de MQTT, HTTPS não oferece suporte a um valor de clientId. Então, enquanto umclientIdestá disponível ao usar o MQTT, não está disponível ao usar HTTPS.

URL da mensagem HTTPS

Dispositivos e clientes publicam suas mensagens fazendo solicitações POST para um endpoint específico do cliente e um URL específico do tópico:

https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1"
  • IOT_Data_Endpointé oAWS IoTterminal de dados do dispositivo. Você pode localizar o endpoint noAWS IoTconsole na página de detalhes da coisa ou no cliente usando oAWS CLIcomando:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    O endpoint deve ser algo parecido com isto: a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com

  • url_encoded_topic_name é o nome de tópico completo da mensagem que está sendo enviada.

Exemplos de código de mensagem HTTPS

Estes são alguns exemplos de como enviar uma mensagem HTTPS paraAWS IoT.

Python
import requests import argparse # define command-line parameters parser = argparse.ArgumentParser(description="Send messages through an HTTPS connection.") parser.add_argument('--endpoint', required=True, help="Your AWS IoT data custom endpoint, not including a port. " + "Ex: \"abcdEXAMPLExyz-ats.iot.us-east-1.amazonaws.com\"") parser.add_argument('--cert', required=True, help="File path to your client certificate, in PEM format.") parser.add_argument('--key', required=True, help="File path to your private key, in PEM format.") parser.add_argument('--topic', required=True, default="test/topic", help="Topic to publish messages to.") parser.add_argument('--message', default="Hello World!", help="Message to publish. " + "Specify empty string to publish nothing.") # parse and load command-line parameter values args = parser.parse_args() # create and format values for HTTPS request publish_url = 'https://' + args.endpoint + ':8443/topics/' + args.topic + '?qos=1' publish_msg = args.message.encode('utf-8') # make request publish = requests.request('POST', publish_url, data=publish_msg, cert=[args.cert, args.key]) # print results print("Response status: ", str(publish.status_code)) if publish.status_code == 200: print("Response body:", publish.text)
CURL

Você pode usarcachode um cliente ou dispositivo para enviar uma mensagemAWS IoT.

Como usar curl a fim de enviar uma mensagem de um dispositivo de cliente do AWS IoT

  1. Verifique ocurlversão.

    1. No cliente, execute esse comando em um prompt de comando.

      curl --help

      No texto de ajuda, procure as opções de TLS. Você deve ver a opção --tlsv1.2.

    2. Se você vir a opção --tlsv1.2, continue.

    3. Se você não vê o--tlsv1.2opção ou você recebe umacommand not founderro, talvez você precise atualizar ou instalar o curl em seu cliente ou instalaropensslantes de continuar.

  2. Instale os certificados no cliente.

    Copie os arquivos de certificado que você criou ao registrar o cliente (coisa) no console do AWS IoT. Verifique se você tem esses três arquivos de certificado no cliente antes de continuar.

    • O arquivo de certificado da CA (Amazon-root-ca-1.pemneste exemplo).

    • O arquivo de certificado do cliente (device.pem.crtneste exemplo).

    • O arquivo de chave privada do cliente (private.pem.keyneste exemplo).

  3. Criar acurllinha de comando, substituindo os valores substituíveis dos de sua conta e sistema.

    curl --tlsv1.2 \ --cacert Amazon-root-CA-1.pem \ --cert device.pem.crt \ --key private.pem.key \ --request POST \ --data "{ \"message\": \"Hello, world\" }" \ "https://IoT_data_endpoint:8443/topics/topic?qos=1"
    --tlsv1.2

    Use TLS 1.2 (SSL).

    —cactoAmazon-root-ca-1.pem

    O nome e o caminho do arquivo, se necessário, do certificado CA para verificar o peer.

    —certificadodevice.pem.crt

    O nome e o caminho do arquivo de certificado do cliente, se necessário.

    —chaveprivate.pem.key

    O nome e o caminho do arquivo de chave privada do cliente, se necessário.

    —solicitar POST

    O tipo de solicitação HTTP (nesse caso, POST).

    —dados”{\ "mensagem\”: \ "Olá, mundo\”}

    Os dados de HTTP POST que você deseja publicar. Nesse caso, é uma string JSON, com as aspas internas escapadas com o caractere de barra invertida (\).

    “https://IOT_Data_Endpoint:8443/tópicos/tópico? qos=1

    O URL do seu clienteAWS IoTterminal de dados do dispositivo, seguido pela porta HTTPS,:8443, que é então seguida pela palavra-chave,/topics/e o nome do tópico,topic, nesse caso. Especifique a Qualidade de Serviço como parâmetro de consulta,?qos=1.

  4. Abra o cliente de teste MQTT naAWS IoTConsole do.

    Siga as instruções emVisualizar mensagens MQTT com o cliente MQTT do AWS IoTe configure o console para assinar mensagens com o nome do tópico detópicousado no seucurlcomando, ou use o filtro de tópico curinga de#.

  5. Teste o comando.

    Ao monitorar o tópico no cliente de teste do console do AWS IoT, acesse o cliente e emita a linha de comando curl criada na etapa 3. Você deve ver as mensagens do cliente no console.