翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HTTPS
クライアントは、1.0 または HTTP 1.1 プロトコルRESTAPIを使用して にリクエストを行うことで、メッセージを発行できます。HTTP リクエストで使用される認証とポートマッピングについては、「」を参照してくださいプロトコル、ポートマッピング、認証。
注記
HTTPS は、 のようなclientId
値をサポートしていませんMQTT。 clientId
は を使用する場合に使用できますがMQTT、 を使用する場合は使用できませんHTTPS。
HTTPS メッセージ URL
デバイスとクライアントは、クライアント固有のエンドポイントとトピック固有の にPOSTリクエストを行うことでメッセージを発行しますURL。
https://
IoT_data_endpoint
/topics/url_encoded_topic_name
?qos=1
-
IoT_data_endpoint
はAWS IoT デバイスデータエンドポイント です。エンドポイントは、 AWS IoT コンソールのモノの詳細ページまたは コマンドを使用して AWS CLI クライアントで確認できます。aws iot describe-endpoint --endpoint-type iot:Data-ATS
エンドポイントは次のようになります:
a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com
-
url_encoded_topic_name
は、送信されるメッセージの完全なトピック名です。
HTTPS メッセージコードの例
以下は、 に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
-
クライアントまたはデバイスから curl
を使用して、 AWS IoTにメッセージを送信できます。 curl を使用して AWS IoT クライアントデバイスからメッセージを送信するには
-
curl バージョンを確認します。
-
クライアントで、コマンドプロンプトからこのコマンドを実行します。
curl --help
ヘルプテキストで、TLSオプションを探します。
--tlsv1.2
オプションが表示されます。 -
--tlsv1.2
オプションが表示された場合は、続行します。 -
--tlsv1.2
オプションが表示されない場合、またはcommand not found
エラーが発生した場合は、続行する前にクライアントで curl を更新またはインストールするか、openssl
をインストールします。
-
-
クライアントに証明書をインストールします。
AWS IoT コンソールでクライアント (モノ) を登録したときに作成した証明書ファイルをコピーします。続行する前に、クライアントに次の 3 つの証明書ファイルがあることを確認します。
-
CA 証明書ファイル (
Amazon-root-CA-1.pem
この例では )。 -
クライアントの証明書ファイル (
device.pem.crt
この例では )。 -
クライアントのプライベートキーファイル (
private.pem.key
この例では )。
-
-
curl コマンドラインを作成し、アカウントとシステムの置き換え可能な値を置き換えます。
curl --tlsv1.2 \ --cacert
Amazon-root-CA-1.pem
\ --certdevice.pem.crt
\ --keyprivate.pem.key
\ --request POST \ --data "{ \"message\": \"Hello, world\" }
" \ "https://IoT_data_endpoint
:8443/topics/topic
?qos=1"- --tlsv1.2
-
1TLS.2 (SSL) を使用します。
- --cacert
Amazon-root-CA-1.pem
-
ピアを検証する CA 証明書のファイル名とパス (必要な場合)。
- --cert
device.pem.crt
-
クライアントの証明書のファイル名とパス (必要な場合)。
- -- キー
private.pem.key
-
クライアントのプライベートキーのファイル名とパス (必要な場合)。
- -- リクエスト POST
-
HTTP リクエストのタイプ (この場合は POST)。
- --data "
{ \"message\": \"Hello, world\" }
" -
公開するHTTPPOSTデータ。この場合、内部引用符がバックスラッシュ文字 (\) でエスケープされたJSON文字列です。
- 「https://
IoT_data_endpoint
:8443/トピック/topic
?qos=1" -
topic
この場合、クライアントの AWS IoT デバイスデータエンドポイントURLの にHTTPSポート が続き:8443
、その後にキーワード/topics/
が続き、トピック名 が続きます。サービス品質をクエリパラメータ?qos=1
として指定します。
-
AWS IoT コンソールでMQTTテストクライアントを開きます。
「」の手順に従って、トピック名 のメッセージをサブスクライブするようにコンソールMQTT クライアントで AWS IoT MQTT メッセージを表示するを設定します。
topic
curl コマンドで使用するか、 のワイルドカードトピックフィルターを使用します#
。 -
コマンドをテストします。
AWS IoT コンソールのテストクライアントでトピックをモニタリングしながらクライアントに移動し、ステップ 3 で作成した curl コマンドラインを発行します。コンソールにクライアントのメッセージが表示されます。
-