기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
클라이언트는 HTTP 1.0 또는 1.1 프로토콜을 사용하여 REST API에 요청하여 메시지를 게시할 수 있습니다. HTTP 요청에 사용되는 인증 및 포트 매핑에 대해서는 프로토콜, 포트 매핑 및 인증 단원을 참조하세요.
참고
HTTPS는 MQTT와 같이 clientId
값을 지원하지 않습니다. clientId
는 MQTT를 사용할 때 이용할 수 있지만 HTTPS를 사용할 때는 이용할 수 없습니다.
HTTPS 메시지 URL
디바이스와 클라이언트는 클라이언트별 엔드포인트 및 주제별 URL에 대한 POST 요청을 함으로서 메시지를 게시합니다.
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
은 전송되는 메시지의 전체 topic name입니다.
HTTPS 메시지 코드 예제
다음은 HTTPS 메시지를 AWS IoT에 전송하는 방법에 대한 몇 가지 예입니다.
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)