11. MQTT
Voice Control
Shadow
변경
수집된 모든 데이터 저장
Live Data View
운전 패턴을 저장하고 분석함
Control Demo Car
MQTT over
Websockets
Connected Car는 이렇게 구성될 수 있습니다
Connected Car
12. Connected 트럭의 이동 경로 시각화 예제
IoT
rule
IoT
action
Amazon
Elasticsearch
Service
Topic
KibanaConnected 트럭
AWS IoT Blog - Archive AWS IoT Device Shadows in Amazon Elasticsearch Service
https://aws.amazon.com/blogs/iot/archive-aws-iot-device-shadows-in-amazon-elasticsearch-service/
AWS
IoT
13. 목차
• AWS IoT 플랫폼 살펴보기
• 사물과 커뮤니케이션 (Device gateway)
• 인증 (Authentication)
• 정책을 통한 인가 (Authorization by Policy)
• 사물 레지스트리 (Registry)
• 룰 엔진 (Rule Engine)
• 디바이스 섀도 (Device Shadow)
14. AWS IoT 플랫폼
IoT 서비스 구현에 필요한 요소들
• 메시지 브로커
• 룰 엔진
• 디바이스 섀도
• 디바이스 등록
관리형 서비스
• 설치 불필요
• 자동 확장
• 사전 프로비저닝 불필요
• 가용역영에 걸친 이중화
• 사용량에 기반한 과금
15. AWS IoT는 무엇을 해줄까요?
DEVICE SDK
연결, 인증, 메시지 교환을
위한 클라이언트 라이브러리
DEVICE GATEWAY
MQTT 및 HTTP를 이용한
Thing과의 커뮤니케이션
인증
인증서 기반의 상호인증 및
암호화
RULES ENGINE
규칙 기반으로
메시지 변환 및
AWS 서비스로 전달
AWS Services
- - - - -
3P Services
SHADOW
Thing 상태를 영구 저장
(불안정한 연결을 대비해서 사용)
APPLICATIONS
AWS IoT API
REGISTRY
디바이스의 Identity 관리
16. AWS IoT는 AWS 서비스로의 Front Door
Registry
• Thing에 대한 Identity 생성
• Thing의 Attribute와 Capability 같은
메타데이터 관리
Rules / Actions
패턴에 일치하는 메시지에 대해서 다른 AWS
서비스로 전송하거나 AWS IoT로
Re-publish를 수행
Shadows
• Thing의 상태와 동기화
• 앱이나 디바이스가 Shadow에 접근하여
상태를 읽거나 변경함
{Thing Name,
Sensor Temp,
, GetTemp(),
Output LED}
Rules Engine
Shadow
Registry
Amazon S3,
AWS Lambda,
Amazon Kinesis,
Amazon
DynamoDB,
Amazon SNS
Mobile App
19. 표준 프로토콜 지원
수백만 디바이스와 앱이 MQTT 및 HTTP
1.1 프로토콜을 이용해서 연결됨
오래 연결된 상태에서 메시지를 주고 받을
수 있는 강력한 Pub/Sub 브로커
디바이스나 App인 클라이언트는
클라우드로부터 명령을 받고, 신호를
제어할 수 있음
Secure by Default
X.509 인증서 및 TLS 1.2 상호인증을 통한
안전한 연결
토픽 기반의
Architecture
(lights/thing-2/color)
확장성이 높은
Device Gateway
AWS IoT Device Gateway
20. MQTT
MQTT vs HTTPS:
• 93x faster throughput
• 11.89x less battery to send
• 170.9x less battery to receive
• 50% less power to keep connected
• 8x less network overhead
Source: http://stephendnicholas.com/archives/
1217
• AWS IoT 네이티브 지원 프로토콜
• Lightweight, 다수 대 다수 pub/sub
• Long-lived 커넥션
• Secure TCP/IP port 8883
28. - 안전한 통신 채널
- 익명 사용자
- 안전한 통신 채널
- 익명 사물?
사물의 인증
29. - 안전한 통신 채널
- 상호 자격 증명
- 안전한 통신 채널
- 익명 사용자
사물의 인증 : TLS 기반 상호 인증
30. X.509 Certificates
AWS IoT로 생성한 Certificates
• Expired되지 않음
• 각각의 Device (사물)에 고유한 Certificate 권장
타 CA(Certificate Authority)를 통해 서명된 Certificates (BYOC)
• Symantec 혹은 Verisign과 같은 CA로부터 서명된 x.509 certificate 발급
• AWS IoT에서 해당 x.509 certificate 등록
• 서명된 x.509 certificate로 device의 certificate 발급
• AWS IoT에서 해당 device certificate를 등록 (JITR로 자동화 가능)
31. https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/
Register your
CA Cert with
AWSIoT
Sign device certs
with your CAcert
$aws/events/certificates/
registered/<caCertificateID>
{
"certificateId":
"<certificateID>",
"caCertificateId":
"<caCertificateId>",
"timestamp":
"<timestamp>",
"certificateStatus":
"PENDING_ACTIVATION",
"awsAccountId":
“<awsAccountId>",
}
AWSIoT
MQTT Endpoint
AWS IoT Rule
invokes AWS
Lambda function
AWS Lambda function
activates certificate &
attachespolicy
New certificate state set to
PENDING_ACTIVATION
Just-in-Time Registration
41. 사물 레지스트리
AWS IoT에 연결된 모든 디바이스는
레지스트리에 등록
사물과 관련된 정적인 속성을 저장
• 펌웨어 버젼
• 시리얼 번호
• 디바이스 유형
• 디바이스 그룹
• 디바이스 설명
• 센서 설명
지원 및 유지보수 목적의 추가 속성
• 설명서의 URL
• 부품 번호
44. 사물 레지스트리 : 타입
http://docs.aws.amazon.com/iot/latest/developerguide/thing-registry.html
aws iot create-thing-type --thing-type-name "LightBulb"
--thing-type-properties "thingTypeDescription=light bulb type,
searchableAttributes=wattage,model"
타입을 사용하면 같은 타입의 모든 사물에 대한
구성 정보를 동일하게 설정할 수 있습니다.
48. 간단하고 친숙한 문법을 사용
• SQL 문장으로 토픽 필터 정의
• (옵션) WHERE절 사용
• 향상된 JSON 지원
시그널:노이즈 비율을 개선하기 위한
함수들
• String 변환 (정규식 지원)
• 수학 연산
• Context 기반의 지원 함수들
• 암호 지원
• UUID, Timestamp, rand, 등
SELECT * FROM ‘things/thing-2/color’
WHERE color = ‘red’
룰 엔진은 …
49. 1. 직접 연동되는
AWS Services
Rules Engine
Action
AWS
Lambda
Amazon
SNS
Amazon
SQS
Amazon
S3
Amazon
Kinesis
Amazon
DynamoDB Amazon RDS
Amazon
Redshift
Amazon Glacier
Amazon
EC2
3. 외부 Endpoints
(Lambda 및 SNS를 통해서 연동)
룰 엔진 액션은 AWS IoT를
외부 Endpoint들과 AWS
서비스를 연결하는 역할을
합니다.
2. 간접 연동되는 AWS
서비스
(Amazon Kinesis, AWS
Lambda, Amazon S3 등을
통해서 연동)
룰 엔진 액션
50. 룰 엔진 액션과 연동되는 AWS 서비스
Lambda function 호출
S3 bucket에 객체를 저장
DynamoDB 테이블에
insert 및 update
SNS topic 또는
endpoint에 Publish
Kinesis stream에 Publish
Firehose에 Publish
AWS IoT로 Republish
Elasticsearch로 Publish
CloudWatch
metric 생성 또는 알람 변경
SQS queue에 쓰기
51. AWS
IoT SDK
ECOSYSTEM OF
SMART DEVICES
Amazon EMR
TIME TO INSIGHT
Amazon Machine Learning
AWS Lambda
AWS Kinesis Analytics
많은 데이터, 빠르게 인사이트 도출
✓ 제품 경고, 임계치 모니터링
✓ 중대한 사용자 이벤트 감지 및 통보
변경이 쉽고, 서버리스이고, 저렴한 실행 비용
✓ 제품 추론 및 데이터 운영
✓ 복잡한 이벤트 프로파일 및 비즈니스 로직
쉽게 머신러닝 모델 생성, 머신 러닝 툴들 제공
✓ 예방 정비
✓ 사용자 행동 분석
대용량 데이터, 유연한 분석 엔진
✓ 패턴 이력에 대한 배치 분석
✓ 전체적인 인사이트
디바이스 데이터 분석을 위한 서비스 선택은 …
HOT
WARM
COOL
COLD
56. ‘desired’ 상태
device 상태를 변경하고자 사용
- JSON 페이로드를 통해 변경하고자 디바이스 상태로 변경 요청
‘reported’, ‘desired’, ‘delta’ 차이
- 변경 요청되었으나 아직 변경 처리가 안되어 실제 현재 디바이스
상태값인 reported값과 다른 값이 delta 로 보임
57. 디바이스 섀도 : delta
Initial state
Requested updated state
Combined state
Delta notification