기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HTTPS
클라이언트는 1.0 또는 HTTP 1.1 프로토콜을 REST API 사용하여 에 요청하여 메시지를 게시할 수 있습니다. HTTP 요청에 사용되는 인증 및 포트 매핑은 섹션을 참조하세요프로토콜, 포트 매핑 및 인증.
참고
HTTPS 는 MQTT 와 같은 clientId
값을 지원하지 않습니다. 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 콘솔에 클라이언트(사물)를 등록할 때 생성한 인증서 파일을 복사합니다. 계속하기 전에 클라이언트에 이 세 가지 인증서 파일이 있는지 확인합니다.
-
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
-
1.2(SSL)TLS를 사용합니다.
- --캐서트
Amazon-root-CA-1.pem
-
피어를 확인하는 데 필요한 경우 CA 인증서의 파일 이름과 경로입니다.
- --cert
device.pem.crt
-
필요한 경우 클라이언트의 인증서 파일 이름과 경로입니다.
- --키
private.pem.key
-
필요한 경우 클라이언트의 프라이빗 키 파일 이름과 경로입니다.
- --요청 POST
-
HTTP 요청 유형(이 경우 POST).
- --데이터 “
{ \"message\": \"Hello, world\" }
" -
게시하려는 HTTP POST 데이터입니다. 이 경우 내부 따옴표가 백슬래시 문자(\)로 이스케이프되는 JSON 문자열입니다.
- “https://
IoT_data_endpoint
:8443/주제/topic
“qos=1” -
클라이언트의 AWS IoT 디바이스 데이터 엔드포인트URL의 , 다음에 HTTPS 포트
:8443
, , 뒤에 키워드, 이 경우/topics/
주제 이름topic
가 차례입니다. 쿼리 파라미터?qos=1
로 서비스 품질을 지정합니다.
-
AWS IoT 콘솔에서 MQTT 테스트 클라이언트를 엽니다.
의 지침에 따라 주제 이름이 인 메시지를 구독하도록 콘솔을 클라이언트를 AWS IoT MQTT 사용하여 MQTT 메시지 보기 구성합니다.
topic
curl 명령에 사용되거나 와일드카드 주제 필터인 를 사용합니다#
. -
명령을 테스트합니다.
AWS IoT 콘솔의 테스트 클라이언트에서 주제를 모니터링하는 동안 클라이언트로 이동하여 3단계에서 만든 curl 명령줄을 실행합니다. 콘솔에 클라이언트의 메시지가 표시되어야 합니다.
-