View a markdown version of this page

Terbitkan HTTPS - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terbitkan HTTPS

Klien dapat mempublikasikan pesan dengan membuat permintaan ke REST API menggunakan protokol HTTP 1.0 atau 1.1. Untuk otentikasi dan pemetaan port yang digunakan oleh permintaan HTTP, lihat. Protokol, pemetaan port, dan otentikasi

catatan

HTTPS tidak mendukung clientId nilai seperti MQTT. clientIdtersedia saat menggunakan MQTT, tetapi tidak tersedia saat menggunakan HTTPS.

URL pesan HTTPS

Perangkat dan klien mempublikasikan pesan mereka dengan membuat permintaan POST ke titik akhir khusus klien dan URL khusus topik:

https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1
  • IoT_data_endpointadalah titik akhir data AWS IoT perangkat. Anda dapat menemukan titik akhir di AWS IoT konsol pada halaman detail benda atau di klien dengan menggunakan AWS CLI perintah:

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

    Titik akhir akan terlihat seperti ini: a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com

  • url_encoded_topic_nameadalah nama topik lengkap dari pesan yang dikirim.

Contoh kode pesan HTTPS

Berikut adalah beberapa contoh cara mengirim pesan HTTPS ke 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

Anda dapat menggunakan curl dari klien atau perangkat untuk mengirim pesan ke AWS IoT.

Untuk menggunakan curl untuk mengirim pesan dari AWS IoT perangkat klien
  1. Periksa ver curl sinya.

    1. Pada klien Anda, jalankan perintah ini di command prompt.

      curl --help

      Dalam teks bantuan, cari opsi TLS. Anda harus melihat --tlsv1.2 opsi.

    2. Jika Anda melihat --tlsv1.2 opsi, lanjutkan.

    3. Jika Anda tidak melihat --tlsv1.2 opsi atau mendapatkan command not found kesalahan, Anda mungkin perlu memperbarui atau menginstal curl di klien atau menginstal openssl sebelum melanjutkan.

  2. Instal sertifikat pada klien Anda.

    Salin file sertifikat yang Anda buat saat mendaftarkan klien (benda) Anda di AWS IoT konsol. Pastikan Anda memiliki tiga file sertifikat ini di klien Anda sebelum melanjutkan.

    • File sertifikat CA (Amazon-root-CA-1.pemdalam contoh ini).

    • File sertifikat klien (device.pem.crtdalam contoh ini).

    • File kunci pribadi klien (private.pem.keydalam contoh ini).

  3. Buat baris curl perintah, ganti nilai-nilai yang dapat diganti untuk akun dan sistem Anda.

    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

    Gunakan TLS 1.2 (SSL).

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

    Nama file dan jalur, jika perlu, dari sertifikat CA untuk memverifikasi rekan.

    --sertifikat device.pem.crt

    Nama dan jalur file sertifikat klien, jika perlu.

    --kunci private.pem.key

    Nama dan jalur file kunci pribadi klien, jika perlu.

    --minta POST

    Jenis permintaan HTTP (dalam hal ini, POST).

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

    Data HTTP POST yang ingin Anda publikasikan. Dalam hal ini, ini adalah string JSON, dengan tanda kutip internal lolos dengan karakter garis miring terbalik (\).

    “https://IoT_data_endpoint:8443/topics/topic? qos=1"

    URL titik akhir data AWS IoT perangkat klien Anda, diikuti oleh port HTTPS,:8443, yang kemudian diikuti oleh kata kunci, /topics/ dan nama topik,topic, dalam kasus ini. Tentukan Kualitas Layanan sebagai parameter kueri,?qos=1.

  4. Buka klien uji MQTT di AWS IoT konsol.

    Ikuti petunjuk di Lihat pesan MQTT dengan AWS IoT Klien MQTT dan konfigurasikan konsol untuk berlangganan pesan dengan nama topik yang topic digunakan dalam curl perintah Anda, atau gunakan filter topik wildcard dari#.

  5. Uji perintahnya.

    Saat memantau topik di klien uji AWS IoT konsol, buka klien Anda dan keluarkan baris perintah curl yang Anda buat pada langkah 3. Anda akan melihat pesan klien Anda di konsol.