Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
HTTPS
Clients können Nachrichten veröffentlichen, indem sie Anfragen an die REST API Protokolle HTTP 1.0 oder 1.1 stellen. Informationen zur Authentifizierung und zu den Portzuordnungen, die von HTTP Anfragen verwendet werden, finden Sie unter. Protokolle, Port-Zuweisungen und Authentifizierung
HTTPSunterstützt keinen clientId
Wert wie MQTT tut. clientId
ist bei der Verwendung verfügbarMQTT, bei der Verwendung jedoch nicht verfügbarHTTPS.
HTTPSNachricht URL
Geräte und Clients veröffentlichen ihre Nachrichten, indem sie POST Anfragen an einen kundenspezifischen Endpunkt und einen themenspezifischen Endpunkt stellen: URL
https://IoT_data_endpoint
/topics/url_encoded_topic_name
?qos=1
-
IoT_data_endpoint
ist der Endpunkt für Gerätedaten AWS IoT . Sie finden den Endpunkt in der AWS IoT Konsole auf der Detailseite der Sache oder auf dem Client mit dem AWS CLI
folgenden Befehl:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
Der Endpunkt sollte etwa so aussehen: a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com
-
url_encoded_topic_name
ist der vollständige Themenname der gesendeten Nachricht.
HTTPSBeispiele für Nachrichtencodes
Dies sind einige Beispiele dafür, wie Sie eine HTTPS Nachricht an senden können 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
-
So verwenden Sie curl zum Senden einer Nachricht an das AWS IoT.
So verwenden Sie Curl, um eine Nachricht von einem AWS IoT Client-Gerät aus zu senden
-
Überprüfen Sie die curl-Version.
-
Führen Sie diesen Befehl auf Ihrem Client an einer Eingabeaufforderung aus.
curl --help
Suchen Sie im Hilfetext nach den TLS Optionen. Sie sollten die --tlsv1.2
-Option sehen.
-
Wenn die --tlsv1.2
-Option angezeigt wird, fahren Sie fort.
-
Wenn die --tlsv1.2
-Option nicht angezeigt wird oder Sie einen command not found
-Fehler angezeigt bekommen, müssen Sie vor dem Fortfahren gegebenenfalls curl auf Ihrem Client aktualisieren oder openssl
installieren.
-
Installieren Sie die Zertifikate auf Ihrem Client.
Kopieren Sie die Zertifikatsdateien, die Sie erstellt haben, als Sie Ihren Client (Ihr Ding) in der AWS IoT Konsole registriert haben. Stellen Sie sicher, dass sich diese drei Zertifikatdateien auf Ihrem Client befinden, bevor Sie fortfahren.
-
Die CA-Zertifikatsdatei (Amazon-root-CA-1.pem
in diesem Beispiel).
-
Die Zertifikatsdatei des Kunden (device.pem.crt
in diesem Beispiel).
-
Die private Schlüsseldatei des Clients (private.pem.key
in diesem Beispiel).
-
Erstellen Sie die curl-Befehlszeile und ersetzen Sie die ersetzbaren Werte gegen die Werte Ihres Kontos und Systems.
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
-
Verwenden Sie TLS 1.2 (SSL).
- --cacert
Amazon-root-CA-1.pem
-
Der Dateiname und Pfad, falls erforderlich, des CA-Zertifikats für die Verifizierung des Peers.
- --cert
device.pem.crt
-
Der Dateiname und Pfad der Clientzertifikatdatei, falls erforderlich.
- --Schlüssel
private.pem.key
-
Der Dateiname und Pfad des privaten Schlüssels des Clients, falls erforderlich.
- --Anfrage POST
-
Die Art der HTTP Anfrage (in diesem FallPOST).
- --Daten“
{ \"message\": \"Hello,
world\" }
"
-
Die HTTP POST Daten, die Sie veröffentlichen möchten. In diesem Fall handelt es sich um eine JSON Zeichenfolge, bei der die internen Anführungszeichen durch einen umgekehrten Schrägstrich (\) maskiert wurden.
- „https://
IoT_data_endpoint
:8443/themen/topic
? qos=1"
-
Der AWS IoT Gerätedatenendpunkt URL Ihres Clients, gefolgt vom HTTPS Port:8443
, gefolgt vom Schlüsselwort /topics/
und dem Themennamentopic
, in diesem Fall. Geben Sie die Servicequalität als Abfrageparameter an, ?qos=1
, an.
-
Öffnen Sie den MQTT Testclient in der AWS IoT Konsole.
Folgen Sie den Anweisungen unter MQTTNachrichten mit dem AWS IoT MQTT Client anzeigen und konfigurieren Sie die Konsole so, dass sie Nachrichten mit dem Themennamen abonniert topic
in Ihrem curl Befehl verwendet, oder verwenden Sie den Themenfilter mit Platzhaltern für#
.
-
Testen Sie den Befehl.
Während Sie das Thema im Testclient der AWS IoT -Konsole überwachen, rufen Sie im Client die in Schritt 3 erstellte curl-Befehlszeile auf. Sie sollten die Nachrichten Ihres Clients in der Konsole sehen.