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”.

HTTPS

Modo de foco
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á.

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

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

O HTTPS é compatível com um valor de clientId como o MQTT. O clientId está disponível ao usar o MQTT, mas 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é o endpoint de dados do AWS IoT dispositivo. Você pode encontrar o endpoint no AWS IoT console na página de detalhes da coisa ou no cliente usando o AWS CLI comando:

    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 completo do tópico da mensagem que está sendo enviada.

Exemplos de código de mensagem HTTPS

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

Python (port 8443)
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)
Python (port 443)
import requests import http.client import json import ssl ssl_context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_CLIENT) ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2 # note the use of ALPN ssl_context.set_alpn_protocols(["x-amzn-http-ca"]) ssl_context.load_verify_locations(cafile="./<root_certificate>") # update the certificate and the AWS endpoint ssl_context.load_cert_chain("./<certificate_in_PEM_Format>", "<private_key_in_PEM_format>") connection = http.client.HTTPSConnection('<the ats IoT endpoint>', 443, context=ssl_context) message = {'data': 'Hello, I'm using TLS Client authentication!'} json_data = json.dumps(message) connection.request('POST', '/topics/device%2Fmessage?qos=1', json_data) # make request response = connection.getresponse() # print results print(response.read().decode())
CURL

Você pode usar o curl de um cliente ou dispositivo para enviar uma mensagem para a AWS IoT.

Para usar o curl para enviar uma mensagem de um dispositivo AWS IoT cliente
  1. Verifique a versão do curl.

    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 vir a opção --tlsv1.2 ou receber um erro command not found, pode ser necessário atualizar ou instalar o curl no cliente ou instalar o openssl antes de continuar.

  2. Instale os certificados no cliente.

    Copie os arquivos de certificado que você criou quando registrou seu cliente (coisa) no AWS IoT console. Verifique se você tem esses três arquivos de certificado no cliente antes de continuar.

    • O arquivo de certificado CA (Amazon-root-CA-1.pem neste exemplo).

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

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

  3. Crie a linha de comando curl, substituindo os valores substituíveis pelos da sua conta e do 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).

    --cacert Amazon-root-CA-1.pem

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

    --certificado device.pem.crt

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

    --chave private.pem.key

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

    --solicitação POST

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

    --dados "” { \"message\": \"Hello, world\" }

    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/topics/? topic qos = 1"

    A URL do endpoint de dados do AWS IoT dispositivo do seu cliente, seguida pela porta HTTPS:8443, seguida pela palavra-chave /topics/ e pelo nome do tópicotopic, nesse caso. Especifique a qualidade do serviço como o parâmetro de consulta, ?qos=1.

  4. Abra o cliente de teste MQTT no AWS IoT console.

    Siga as instruções Exibir mensagens MQTT com o cliente AWS IoT MQTT e configure o console para assinar mensagens com o nome do tópico topic usado em seu curl comando 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.

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)
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.