Hello! AWS IoT Core ㅎ.ㅎ

JACKJACK·2023년 2월 20일
1
post-thumbnail

📲AWS IoT Core란?

AWS IoT Core는 Amazon Web Services (AWS)에서 제공하는 사물 인터넷(IoT) 플랫폼 서비스로 IoT 장치와 애플리케이션 간의 연결, 통신 및 보안 관리를 지원한다.

  • AWS IoT Core를 사용해 많은 수의 IoT 장치와 연결하고, 데이터를 수집, 저장, 처리 및 분석하여 비즈니스 용도로 활용할 수 있다.
  • AWS IoT Core는 다양한 프로토콜과 디바이스 SDK를 지원하며, AWS의 다른 서비스와 연동하여 확장성과 유연성을 제공한다.
  • AWS IoT Core는 보안과 데이터 프라이버시를 중요시하여 엄격한 보안 제어를 갖추고 있다.
  • 종합적으로 AWS IoT Core를 사용하면 높은 신뢰성, 확장성, 보안성 및 유연성을 갖춘 IoT 솔루션을 빠르고 쉽게 구축할 수 있다고 한다.

✏ AWS IoT 교육에서는 IoT서비스를 크게 세가지로 나누었는데 간략히 적어보면

  • 첫째는 디바이스 매니지먼트(FreeRTOS, Green Grass, Device SDK)이며,
  • 둘째는 AWS IoT Core(메세지, 라우팅, 연결, 보안, 논리적 Thing 단위를 통한 디바이스 매니징)
  • 셋째는 IoT Analytics & Streaming, TwinMaker(데이터 분석을 통한 인사이트 제공)
    이다.

🖍 이들 중 가장 많이 사용되며 핵심이되는 AWS IoT Core 개념에 대해 알아보자!

IoT Core는 크게 7가지로 구분지을 수 있으며 IoT Defender, IoT Gateway, Message Broker, Rules Engine(데이터 적재 규칙), IoT Shadow, IoT Registry(Thing 사물 개념 등록), Advisor이다. 각각의 요소에서 무슨 기능을 담당하는지 짐작이 갈정도로 네이밍을 잘 해놓았다는 느낌을 받았다.

1. Identity Service(디바이스 인증)
디바이스 인증을 위해서는 세가지 방식이 있는데 첫째는 SigV4라는 인증 프로토콜로 AWS에서 흔하게 쓰이는 IAM과 같은 인증 방법을 뜻하는데 그리 권장하지 않는다고 한다. 둘째는 X.509방식으로 SSL TLS같은 보안 프로토콜에 사용되는 인증서 형식으로, 디바이스 별 인증서(키페어)를 통해 접속하며 가장 많이 쓰인다고 한다. 셋째로 Custom Authorizer는 API Gateway에서 사용하는 사용자 지정 인증, 인가 방식으로 요청에 대해 사용자가 지정한 권한 부여 규칙을 정의할 수 있다고 한다. 주로 Lambda함수로 작성되며 여러 형태의 인증,인가가 가능하다.
2. IoT Gateway(디바이스 연결)
디바이스와 의 연결을 위한 IoT Gateway는 디바이스에서 서비스로, 서비스에서 디바이스의 데이터 전송을 지원해준다. 이를 위해 다양한 프로토콜을 지원하며(MQTT,HTTPS, WebSocket) 이들 중 MQTT(경량 메시징 프로토콜)를 주로 사용한다.
3. Message Broker(메시지 전송)
어플리케이션에서 발생한 이벤트, 알림, 데이터를 전송하는 기능으로 QoS0, QoS1가 현재 서비스 중이며 MQTT프로콜상에서 사용된다. QoS0는 메세지가 전달되지 않거나 중복될 수 있으며 QoS1은 구독자가 최소 한번 받을 수 있게 보장한다. 이후 더욱 높은 신뢰성을 가진 QoS2도 출시 예정이라고 한다.
4. Rules Engine(메시지 처리)
Rules Engine은 수신된 메시지를 처리하고, 다른 AWS 서비스에 메시지를 전달하는 규칙 기반의 데이터 처리 엔진이다. Message Broker와는 1:1의 단방향 메시지 송신에 주로 사용되며 비즈니스 프로세스를 자동화, 최적화 할 때 쓰인다. 사용 예로는 SQL구문을 통한 필터링, JSON의 특정 키 값 전송 등이 있다.
5. Device Shadow(장치 상태 관리)
장치 상태정보를 저장하는 디바이스 쉐도우는 장치가 연결되지 않을 때 상태 조회가 가능하다. 또한 어플리케이션에서 쉐도우의 상태를 조회, 업데이트하여 동기화 시켜 디바이스의 제어가 가능하다.
6. Registry(디바이스 메타데이터&보안 키 저장)
Device의 Profile 저장소로 Certification등 정보를 Thing으로 정의하여 저장한다. Thing(디바이스의 제조일, 시리얼넘버 등의 정보) -> ThingType을 통해 3,4개로 제한 되어 있는 Thing을 50개 이상의 키 값으로 저장할 수 있다, ThingGrouop을 통해 그루핑이 가능한데, 예를들면 자동차 배터리가 20% 이하인 Thing을 Dynamic하게 그루핑이 가능하다.
7. Device Advisor는 특수한 상황에 쓰인다고 하니 스킵!

📄정리하자면!

Device SDK -> Auth(인증) -> MQTT(전송) -> Shadow(상태관리) -> Rule Engine(단방향/비용 효율 고려) -> Registry(기기 별 제어 기능 구분) 의 프로세스로 IoT Core와 함께 디바이스 매니지먼트가 가능하다.


👓 IoT Device Mangement를 조금 더 구체적으로 알아보자!

디바이스 매니지먼트를 할 때 Thing, Shadow를 통해 디바이스를 그루핑 및 제어하며 장치의 모니터링 및 업데이트, 장치의 개별 엑세스를 지원한다. 이 때 fleet indexing을 통해 Thing의 attribute, shadow 정보를 검색하며 디바이스의 상태파악을 한다고 한다.

그렇다면 디바이스 매니지먼트의 꽃과 같은 Device Provisiong에 대해서 알아보자. Device Provisiong은 새로운 장치를 AWS IoT에 등록하고 인증서와 보안 정책을 자동으로 생성해 클라우드에 연결할 수있도록 도아주는 서비스이다. Device Provisiong의 종류는 여러가지가 있으며 간단히 다섯가지만 알아보도록 하자.

  1. Single Device Provisioning -> 하나의 장치를 등록할 때 사용하며 기기 하나마다 인증서를 발행해 AWS IoT에 등록해주는 방식
  2. Bulk Device Provisioning -> 10만개 이상 등 대규모의 디바이스 인증서를 발행할 때 내용을 한꺼번에 받아서 디바이스에 Writing 해주는 방식
  3. Just-In-Time Registration -> Bulk같은 경우 8만대밖에 디바이스가 생산되지 않으면 낭비가 발생하기 때문에 장치가 처음 연결될 때 인증서 및 보안정책을 생성하는 방식
  4. Just-In-Time Provisioning ->위와 유사하지만 보안 정책 생성 과정에서 JITR은 Lambda Function을통해 Thing, Policy를 구성하고 JITP는 미리 만들어둔 Templete을 참고해 Thing, Policy를 구성한다고 한다.
  5. Fleet Provisioning -> Just in time의 단점으로 인해 나온 개념으로 가장 많이 사용한다고 한다. 모든 디바이스가 같은 인증서를 사용하며(Templete을 통해 Thing, Policy 구성) 인증 생성 방식은 D(Device), I(IoT Core)로 두고 설명하면 다음과 같다.

    D: Clain Cert -> I: Device Cert -> D: Templete Name 전송 -> I: Templete에맞게 Thing, Policy 구성, 맵핑 ->D: 구성확인 -> I: D가 구성확인됨을 전달받음
    Thing Indexing을 통해 Thing,Shadow,Connectivity각 속성을 색인화(제조사, 위치, 시리얼넘버) 해 query syntax를 활용해 조회가 가능하다.




💡결론

- AWS IoT Core는 Amazon Web Services (AWS)에서 제공하는 사물 인터넷(IoT) 플랫폼 서비스로 IoT 장치와 애플리케이션 간의 연결, 통신 및 보안 관리를 지원한다.

profile
러닝커브를 빠르게 높이자🎢

0개의 댓글