AWS IoT에 디바이스 연결 - AWS IoT Core

AWS IoT에 디바이스 연결

디바이스는 AWS IoT Core를 통해 AWS IoT 및 다른 서비스에 연결합니다. 디바이스는 AWS IoT Core를 통해 계정 고유의 디바이스 엔드포인트를 사용하여 메시지를 전송하고 수신합니다. AWS IoT Device SDK는 MQTT 및 WSS 프로토콜을 사용하여 디바이스 통신을 지원합니다. 디바이스가 사용할 수 있는 프로토콜에 대한 자세한 내용은 디바이스 통신 프로토콜 단원을 참조하세요.

메시지 브로커

AWS IoT는 메시지 브로커를 통해 디바이스 통신을 관리합니다. 디바이스 및 클라이언트는 메시지 브로커에 메시지를 게시하고 메시지 브로커가 게시하는 메시지를 구독합니다. 메시지는 애플리케이션이 정의한 주제로 식별됩니다. 메시지 브로커는 디바이스 또는 클라이언트에서 게시한 메시지를 수신하면 해당 메시지를 메시지 주제를 구독한 디바이스 및 클라이언트에 다시 게시합니다. 또한 메시지 브로커는 또한 메시지를 AWS IoT 규칙 엔진으로 전달하며, 이 엔진은 메시지 내용에 따라 작동할 수 있습니다.

AWS IoT 메시지 보안

AWS IoT로의 디바이스 연결은 인증을 위해 X.509 클라이언트 인증서AWS V4 서명을 사용합니다. 디바이스 통신은 TLS 버전 1.3로 보호되며 AWS IoT는 디바이스가 연결될 때 디바이스에서 서버 이름 표시(SNI) 확장을 전송하도록 요구합니다. 자세한 내용은 AWS IoT의 전송 보안을 참조하세요.

AWS IoT 디바이스 데이터 및 서비스 엔드포인트

중요

엔드포인트를 디바이스에 캐시하거나 저장할 수 있습니다. 즉, 새 디바이스가 연결될 때마다 DescribeEndpoint API를 쿼리할 필요가 없습니다. AWS IoT Core에서 계정에 엔드포인트를 생성한 후에는 엔드포인트가 변경되지 않습니다.

각 계정에는 계정에 고유한 여러 디바이스 엔드포인트가 있으며 특정 IoT 기능을 지원합니다. AWS IoT 디바이스 데이터 엔드포인트는 IoT 디바이스 통신 요구에 맞게 설계된 게시/구독 프로토콜을 지원합니다. 그러나 애플리케이션에 이러한 엔드포인트가 제공하는 특수 기능이 필요한 경우 앱 및 서비스 등의 다른 클라이언트도 이 인터페이스를 사용할 수 있습니다. AWS IoT 디바이스 서비스 엔드포인트는 보안 및 관리 서비스에 대한 디바이스 중심 액세스를 지원합니다.

계정의 디바이스 데이터 엔드포인트를 알아보려면 AWS IoT Core 콘솔의 설정 페이지에서 확인할 수 있습니다.

디바이스 데이터 엔드포인트를 포함하여 특정 용도에 대한 계정의 디바이스 엔드포인트를 알아보려면, 여기에 나타난 describe-endpoint CLI 명령 또는 DescribeEndpoint REST API를 사용하고 다음 표의 endpointType 파라미터 값을 제공합니다.

aws iot describe-endpoint --endpoint-type endpointType

이 명령은 account-specific-prefix.iot.aws-region.amazonaws.com 형식으로 iot-endpoint를 반환합니다.

모든 고객에게는 iot:Data-ATSiot:Data 엔드포인트가 있습니다. 각 엔드포인트는 X.509 인증서를 사용하여 클라이언트를 인증합니다. Symantec 인증 기관에 대해 만연해 있는 불신과 관련된 문제를 피하려면 iot:Data-ATS 엔드포인트 유형을 사용하는 것이 좋습니다. 이전 버전과의 호환성을 위해 VeriSign 인증서를 사용하는 이전 엔드포인트에서 데이터를 검색하는 디바이스용 iot:Data 엔드포인트를 제공합니다. 자세한 내용은 서버 인증을 참조하세요.

AWS IoT디바이스용 엔드포인트

엔드포인트 용도

endpointType

설명

AWS IoT Core - 데이터 영역 작업

iot:Data-ATS

메시지 브로커, 디바이스 섀도우 및 AWS IoT의 규칙 엔진 구성 요소와 데이터를 주고받는 데 사용됩니다.

iot:Data-ATS은(는) ATS 서명 데이터 엔드포인트를 반환합니다.

AWS IoT Core - 데이터 영역 작업(레거시)

iot:Data

iot:Data는 이전 버전과의 호환성을 위해 제공된 VeriSign 서명 데이터 엔드포인트를 반환합니다. MQTT 5는 Symantec(iot:Data) 엔드포인트에서 지원되지 않습니다.

AWS IoT Core 자격 증명 액세스

iot:CredentialProvider

다른 AWS 서비스와 직접 연결하기 위해 디바이스의 기본 제공 X.509 인증서를 임시 자격 증명과 교환하는 데 사용됩니다. 다른 AWS 서비스에 연결하는 방법에 대한 자세한 내용은 AWS 서비스에 대한 직접 호출 권한 부여를 참조하세요.

AWS IoT Device Management - 작업 데이터 작업

iot:Jobs

작업 디바이스 HTTPS API를 사용하여 디바이스가 AWS IoT 작업 서비스와 상호작용하도록 하는데 사용됩니다.

iot:Jobs는 IPv4에만 사용할 수 있습니다. 듀얼 스택 엔드포인트(IPv4 및 IPv6)를 사용하는 경우 iot:Data-ATS 엔드포인트 유형을 사용합니다.

AWS IoT Device Advisor 작업

iot:DeviceAdvisor

Device Advisor를 사용하여 디바이스를 테스트하는 데 사용되는 테스트 엔드포인트 유형입니다. 자세한 내용은 Device Advisor 섹션을 참조하세요.

AWS IoT Core 데이터 베타(미리 보기)

iot:Data-Beta

베타 릴리스용으로 예약된 엔드포인트 유형입니다. 현재 사용에 대한 자세한 내용은 도메인 구성 섹션을 참조하세요.

또한 example.com과 같은 고유한 정규화된 도메인 이름(FQDN)과 연결된 서버 인증서를 사용하여 도메인 구성로 디바이스를 AWS IoT에 연결할 수 있습니다.

AWS IoT Device SDK

AWS IoT Device SDK는 IoT 디바이스를 AWS IoT Core에 연결하는 데 사용할 수 있고 MQTT 및 MQTT over WSS 프로토콜을 지원합니다.

AWS IoT Device SDK는 IoT 디바이스의 특수 통신 요구 사항을 지원하지만 AWS SDK가 지원하는 모든 서비스를 지원하지 않는다는 점에서 AWS IoT Device SDK는 AWS SDK와 다릅니다. AWS IoT Device SDK는 AWS 서비스를 모두 지원하는 AWS SDK와 호환됩니다. 그러나 다른 인증 방법을 사용하고 다른 엔드포인트에 연결하므로 IoT 디바이스에서 AWS SDK를 사용하는 것이 비실용적일 수 있습니다.

모바일 디바이스

AWS Mobile SDK는 MQTT 디바이스 통신, 일부 AWS IoT 서비스 API 및 다른 AWS 서비스의 API를 모두 지원합니다. 지원되는 모바일 디바이스에서 개발하는 경우 IoT 솔루션 개발에 가장 적합한 옵션인지 확인하기 위해 SDK를 검토하세요.

C++

AWS IoT C++ Device SDK

AWS IoT C++ Device SDK는 개발자가 AWS 및 AWS IoT Core 서비스 API를 사용하여 커넥티드 애플리케이션을 개발할 수 있는 키트입니다. 특히 이 SDK는 리소스의 제한을 받지 않으면서 메시지 대기열, 멀티-스레딩 지원, 최신 언어 같은 고급 기능이 필요한 디바이스를 위해 설계되었습니다. 자세한 내용은 다음 자료를 참조하세요.

Python

Python용 AWS IoT 디바이스 SDK

AWS IoT Device SDK for Python는 개발자가 디바이스를 사용하여 MQTT 또는 MQTT over WebSocket Secure(WSS) 프로토콜을 통해 AWS IoT 플랫폼에 액세스하는 Python 스크립트를 작성할 수 있게 해줍니다. 사용자는 자신의 디바이스를 AWS IoT Core 서비스의 API에 연결함으로써 AWS IoT Core이(가) 제공하는 메시지 브로커, 규칙 및 디바이스 섀도우 서비스 작업 및 AWS Lambda, Amazon Kinesis, Amazon S3 등의 다른 AWS 서비스 작업을 안전하게 수행할 수 있습니다.

JavaScript

JavaScript용 AWS IoT 디바이스 SDK

AWS IoT Device SDK for JavaScript는 Java 개발자가 MQTT 또는 MQTT over WebSocket 프로토콜을 통해 AWS IoT Core의 API에 액세스하는 JavaScript 애플리케이션을 작성할 수 있게 해줍니다. 이 패키지는 Node.js 환경 및 브라우저 애플리케이션에서 사용할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.

Java

Java용 AWS IoT 디바이스 SDK

AWS IoT Device SDK for Java는 Java 개발자가 MQTT 또는 MQTT over WebSocket 프로토콜을 통해 AWS IoT Core의 API에 액세스할 수 있게 해줍니다. SDK는 디바이스 섀도우 서비스를 지원합니다. 섀도우는 GET, UPDATE, DELETE 등의 HTTP 메서드를 사용하여 액세스할 수 있습니다. 또한 이 SDK는 간소화된 섀도우 액세스 모델을 지원합니다. 이 모델에서는 개발자가 JSON 문서를 직렬화 또는 역직렬화할 필요 없이 getter 및 setter 메서드를 사용하여 데이터를 섀도우와 교환할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.

Embedded C

AWS IoT Device SDK for Embedded C

중요

이 SDK는 숙련된 임베디드 소프트웨어 개발자가 사용하기 위한 것입니다.

AWS IoT Device SDK for Embedded C(C-SDK)는 MIT 오픈 소스 라이선스에 따라 제공되는 C 소스 파일의 모음으로, IoT 디바이스를 AWS IoT Core에 안전하게 연결하기 위해 임베디드 애플리케이션에서 사용할 수 있습니다. 여기에는 MQTT, JSON 파서 및 AWS IoT 디바이스 섀도우 라이브러리 등이 포함됩니다. 소스 형식으로 배포되며 애플리케이션 코드, 기타 라이브러리 및 선택적으로 RTOS(실시간 운영 체제)와 함께 고객 펌웨어에 구축됩니다.

AWS IoT Device SDK for Embedded C는 일반적으로 최적화된 C 언어 런타임을 필요로 하는 리소스 제약 디바이스를 대상으로 합니다. 모든 운영 체제에서 SDK를 사용하고, 모든 프로세서 유형(예: MCU 및 MPU)에서 호스팅할 수 있습니다. 디바이스에 사용 가능한 메모리와 처리 리소스가 충분하면 다른 AWS IoT 디바이스 및 Mobile SDK(예: AWS IoT 디바이스 SDK for C++, Java, JavaScript 또는 Python) 중 하나를 사용하는 것이 좋습니다.

자세한 내용은 다음 자료를 참조하세요.