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).
HTTPSne supporte pas une clientId
valeur comme MQTT le fait. clientId
est 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
-
Vérifiez la version curl.
-
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
.
-
Si vous voyez l' option --tlsv1.2
, continuez.
-
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 openssl
avant de continuer.
-
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.
-
Fichier de certificat de l'autorité de certification (Amazon-root-CA-1.pem
dans cet exemple).
-
Fichier de certificat du client (device.pem.crt
dans cet exemple).
-
Fichier de clé privée du client (private.pem.key
dans cet exemple).
-
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).
- --cacert
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.
- --certificat
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
.
-
Ouvrez le client de MQTT test dans la AWS IoT console.
Suivez les instructions Afficher les messages MQTT avec le client AWS IoT MQTT 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#
.
-
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.