HTTPS - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

HTTPS

Les clients peuvent publier des messages en faisant des demandes à l'RESTAPIaide des protocoles HTTP 1.0 ou 1.1. Pour l'authentification et les mappages de ports utilisés par les HTTP demandes, consultezProtocols, port mappings, and authentication (Protocoles, mappages de ports et authentification).

Note

HTTPSne supporte pas une clientId valeur comme MQTT le fait. clientIdest disponible lors de l'utilisationMQTT, mais il ne l'est pas lors de l'utilisationHTTPS.

HTTPSmessage URL

Les appareils et les clients publient leurs messages en adressant des POST demandes à un point de terminaison spécifique au client et à un sujet spécifique : URL

https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1
  • IoT_data_endpoint est le point de terminaison des données de l'AWS IoT appareil. Vous pouvez trouver le point de terminaison dans la AWS IoT console sur la page de détails de l'objet ou sur le client à l'aide de la AWS CLI commande :

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

    Le point de terminaison doit ressembler à ceci : a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com

  • url_encoded_topic_name est le nom complet du sujet du message envoyé.

HTTPSexemples de code de message

Voici quelques exemples de la manière d'envoyer un HTTPS message à 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

Vous pouvez utiliser curl à partir d'un client ou d'un appareil pour envoyer un message à AWS IoT.

Pour utiliser curl pour envoyer un message depuis un appareil AWS IoT client
  1. Vérifiez la version curl.

    1. Sur votre client, exécutez cette commande à partir d’une invite de commande.

      curl --help

      Dans le texte d'aide, recherchez les TLS options. Vous devriez voir l'option --tlsv1.2.

    2. Si vous voyez l' option --tlsv1.2, continuez.

    3. Si vous ne voyez pas l'option --tlsv1.2 ou si vous obtenez une erreur command not found, vous devrez peut-être mettre à jour ou installer curl sur votre client ou l'installer opensslavant de continuer.

  2. Installez les certificats sur votre client.

    Copiez les fichiers de certificat que vous avez créés lorsque vous avez enregistré votre client (objet) dans la AWS IoT console. Assurez-vous d'avoir ces trois fichiers de certificat sur votre client avant de continuer.

    • Le fichier de certificat CA (Amazon-root-CA-1.pem dans cet exemple).

    • Le fichier de certificat du client (device.pem.crt dans cet exemple).

    • Le fichier de clé privée du client (private.pem.key dans cet exemple).

  3. Créez la ligne de commande curl en remplaçant les valeurs remplaçables par celles de votre compte et de votre système.

    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

    Utilisez TLS 1.2 (SSL).

    --caceret Amazon-root-CA-1.pem

    Nom et chemin d’accès du fichier de certificat d'autorité de certification, si nécessaire, pour vérifier l'appairage.

    --cert device.pem.crt

    Nom et chemin d’accès du fichier de certificat du client, si nécessaire.

    --clé private.pem.key

    Nom et chemin d’accès du fichier de clé privée du client, si nécessaire.

    --demande POST

    Type de HTTP demande (dans ce cas,POST).

    --données »{ \"message\": \"Hello, world\" }"

    Les HTTP POST données que vous souhaitez publier. Dans ce cas, il s'agit d'une JSON chaîne dont les guillemets internes sont masqués par la barre oblique inverse (\).

    « https ://IoT_data_endpoint:8443/sujets/topic? qos=1 »

    Le point URL de terminaison des données de l' AWS IoT appareil de votre client:8443, suivi du HTTPS port, qui est ensuite suivi du mot clé /topics/ et du nom du sujettopic, dans ce cas. Spécifiez la qualité du service en tant que paramètre de requête, ?qos=1.

  4. Ouvrez le client de MQTT test dans la AWS IoT console.

    Suivez les instructions Afficher les MQTT messages à l'aide du AWS IoT MQTTclient et configurez la console pour vous abonner aux messages dont le nom de sujet est topic utilisé dans votre curl commande, ou utilisez le filtre de sujet générique de#.

  5. Testez la commande.

    Lors de la surveillance de la rubrique dans le client de test de la console AWS IoT , accédez à votre client et émettez la ligne de commande curl que vous avez créée à l'étape 3. Vous devriez voir les messages de votre client dans la console.