8. Thing 과 연결 시 어려운 점
• 디바이스가 항상 꼭 연결되어 있어야만 할까요?
• 디바이스가 항상 안정적인 네트워크에 연결되어 있을까요?
• 특정 이벤트에만 처리가 일어나야 효과적일텐데요?
• 스트리밍 데이터가 생성되면 빅데이터 분석이 쉽게 가능해야
할텐데요?
• 보안은 당연한 과제
9. AWS IoT 구성
DEVICE SDK
Set of client libraries to
connect, authenticate and
exchange messages
MESSAGE BROKER
Communicate with devices via
MQTT and HTTP
AUTHENTICATION
Secure with mutual
authentication and encryption
RULES ENGINE
Transform messages
based on rules and
route to AWS Services
AWS Services
- - - - -
3P Services
DEVICE SHADOW
Persistent thing state
during intermittent
connections
APPLICATIONS
AWS IoT API
REGISTRY
Identity and Management of
your things
10. AWS IoT 보안 인증 기능
AWS IoT API
AUTHENTICATION
Secure with mutual
authentication and encryption
11. MQTT, HTTPS 를 지원하는 안전한 통신 지원
MQTT + Mutual Auth TLS AWS Auth + HTTPS
Server Auth TLS + Cert TLS + Cert
Client Auth TLS + Cert AWS API Keys
Confidentiality TLS TLS
Protocol MQTT HTTP
Identification AWS ARNs AWS ARNs
Authorization AWS Policy AWS Policy
12. AWS IoT에서 안전하게 장치와 연결
1. 인증서(certificate) 생성
2. 장치에 정책(Policy) 등록
3. MQTT 로 접속
14. AWS IoT의 강력한 보안
손쉽게 안전한 통신을 위한 키 구성
- 단일 API 요청 하나로 보안 키 생성
CreateKeysAndCertificate()
- 고객의 인증 키 등록 사용 가능
Certificate signing request (CSR)
상세 권한 설정
디바이스 관리
Pub/Sub 메시지 사용 권한
다른 AWS 서비스 사용 권한
15. Pub/Sub 메시지 사용 권한 설정 예
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["iot:Publish"],
"Resource":
["arn:aws:iot:us-east-1:123456972007:topic/foo"]
},
{
"Effect": "Allow",
"Action": ["iot:Subscribe"],
"Resource":
["arn:aws:iot:us-east-1:123456972007:topicfilter/foo/bar/*"]
}]}
17. AWS IoT 디바이스 게이트웨이
MESSAGE BROKER
Communicate with devices via
MQTT and HTTP
AWS IoT API
NDA
18. AWS IoT 디바이스 게이트웨이
표준 프로토콜 지원
수 천 만개 이상의 장치 또는 앱이 MQTT와
HTTP 를 이용하여 접속 가능
양방향 통신
클라이언트(장치 또는 앱) 송신 및 수신을
지속적인 연결을 유지하면서 사용 가능
높은 보안
X509 인증 또는 TLS 1.2 지원의 양방향
인증
Topic Based
Architecture
(lights/thing-2/color)
20. AWS IoT 규칙 엔진
RULES ENGINE
Transform messages
based on rules and
route to AWS Services
AWS IoT API
21. AWS IoT 규칙 엔진의 기본 기능
SELECT * FROM ‘things/thing-2/color’
WHERE color = ‘red’
간단하고 쉬운 문법 지원
- SQL 문형 지원, filter 기능 지원
- WHERE 지원
- JSON 지원
데이터 변환을 위한 함수 지원
- 스트링 변환 (regex 지원)
- 수치 연산 지원
- 암호화 지원
- UUID, Timestamp, rand 지원
SELECT *, clientId() as MQTTClientId
FROM 'one/rule'
WHERE
startsWith(topic(2), 'IME33') AND
(state = 'INIT' OR hydro_temp >
surface_temp)",
"actions": [
{
"republish": {
"topic":
"controllers/${substring(topic(3),
3, 5)}",
"roleArn":
"arn:aws:iam::123456789012:role/OneR
oleToRuleThemAll"
}]
22. AWS IoT 규칙 엔진 병렬 수행
동시에 여러 규칙 수행
단일 디바이스의 메시지만을 평가하는 것이 아닌 동시에 여러 규칙 적용 가능
규치에 따라 여러 다양한 서비스 액션 설계
단일 메시지를 여러 AWS에 동시에 적용하여 수행 가능
23. AWS IoT 규칙 엔진과 연동
RULES ENGINE
Transform messages
based on rules and
route to AWS Services
AWS IoT API
AWS Services
- - - - -
3P Services
24. AWS IoT 규칙 엔진과 연동 AWS 서비스
규칙 엔진은 AWS IoT로 들어오는
메시지들을 규칙에 따라 평가하여
다른 서비스에 메시지를 전달하여
다양항 비지니스 로직을 바로 구성
가능
Lambda나 SNS(Simple
notificaiton service)를 통해 외부
서비스와도 연동 가능
Actions
25. 규칙 엔진과 연동 가능한 서비스
Lambda 함수 호출
S3 에 파일로 저장
DynamoDB에 데이터
입력
SNS로 메시지 전달
Amazon Kinesis로 메시지
전달
Firehose로 메시지 전달
AWS IoT에 재전달
ElasticSearch로 바로 메시지 저장
CloudWatch 지표로 전달
또는 Alarm 발생
SQS 큐로 메시지 저장
26. AWS IoT 규칙 엔진에서 머신 러닝 서비스 연동
모델 생성 및 예측값 반환
Amazon Machine Learning 은 S3에 저장된 디바이스에서 입력된 값을 이용해 Machine
Learning 모델 생성
지속적인 모델 개선 가능
새로 업데이트된 데이터를 데이터셋으로 지정하여 보다 나은 Machine Learning 모델
생성하여 서비스 적용 가능
Send to S3
Amazon
Machine
Learning
Re-Train
27. AWS IoT 규칙 엔진과 데이터 스트리밍 연동
여러 다른 센서들의 데이터를 모아서 데이터 스트림으로 Kinesis stream에 전달
전달된 데이터는 데이터베이스, 어플케이션, 분석 서비스 등에서 처리되거나 사용
데이터 스트림
28. AWS IoT 규칙 엔진 & Amazon SNS
푸쉬 서비스 연동
Apple APNS, Google GCM, Amazon ADM 엔트포인트로 메시지 전달하여 푸쉬 문자 전송
Amazon SNS -> Webhook
Slack, Twillio 등의 Webhook을 지원하는 3rd 파티 서비스에 메시지 전달 연동
SNS
2
32. AWS IoT 디바이스 섀도우 처리 순서
Shadow
Device SDK
1. 디바이스에서 현재 상태 전송
2. 저장소에 상태 저장
3. 앱에서 현재 디바이스 상태 요청
4. 앱에서 디바이스 상태 변경 요청
5. 디바이스에서 디바이스
섀도우의 변경값 확인
6. 변경된 새로운 상태 전송
7. 디바이스 섀도우에서 변경된 상태 확인
33. AWS IoT 디바이스 섀도우 구조
{
"state" : {
“desired" : {
"lights": { "color": "RED" },
"engine" : "ON"
},
"reported" : {
"lights" : { "color": "GREEN" },
"engine" : "ON"
},
"delta" : {
"lights" : { "color": "RED" }
} },
"version" : 10
}
Thing
디바이스는 현재 상태를 디바이스 섀도우에 보고
섀도우로부터 변경을 원하는 값을 읽음
Mobile App
앱은 디바이스에 변경 (desired) 값을 설정
가장 최근 값(reported)을 읽음
필요에 따라 섀도우 삭제
Shadow
섀도우 delta, desired, reported의 값을 버젼 정보와
같이 전달.
차이값(delta)만 전송도 가능
34. AWS IoT 디바이스 섀도우 예시
AWS IoT SDK는 디바이스 섀도우를
쉽게 읽고/쓰고/변경할 수 있는 기능을
제공하여, 디바이스의 상태를 자동으로
쉽게 동기 가능
AWS IoT DEVICE SHADOW
UPDATE: $aws/things/{thingName}/shadow/update
DELTA: $aws/things/{thingName}/shadow/update/delta
GET: $aws/things/{thingName}/shadow/get
DELETE: $aws/things/{thingName}/shadow/delete
Sensor Reported Desired Delta
LED1 RED YELLOW
LED1 =
Yellow
TEMP = 60F
ACCEL X=1,Y=5,Z=4 X=1,Y=5,Z=4
TEMP 83F 60F
36. AWS IoT 레지스트리
AWS IoT API
REGISTRY
Identity and Management of
your things
37. AWS IoT 레지스트리
• key: value 형식으로 저장
• 펌웨어 버젼
• 디바이스 시리얼 넘버
• 기술 지원, 유지 보수
• 참조 정보 및 URL 입력
• 제품 파트 넘버 등
• 왜부 기술 지원 시스템과 연계 참조 가능
38. AWS IoT – 디바이스 관리
S3에 versioning 기능을 통해 펌웨어 관리 및 저장
메시지를 디바이스 게이트웨이를 통해 디바이스 전체 또는 부분에 전달하고, S3 URL을
전달하여 디바이스가 펌웨어를 직접 다운로드 가능
펌웨어 업데이트
S3에 펌웨어 저장
Publish (디바이스에 알림)
• 원하는 디바이스
업데이트 가능
• 규칙 엔진에서 펌웨어
업데이트 상태를
DynamoDB 등에 저장
관린
• 레지시트리에 버젼 정보
저장 관리
39. 임베디드 디바이스를 쉽게 프로그래밍 할 수 있는 능력이 필요
디바이스를 새로 프로그래밍 하지 못하면 디바이스는 기능의 제약이 생김
IoT 서비스 환경이 가진 어려운 문제
양방향 지연 속도
연결 중단
비싼 네트워크 비용
42. 스마트 홈 농업 현장 공장 지역
IoT 커넥티드 디바이스를 위한 로컬 컴퓨팅, 메시징 및 데이터 캐싱 허브
AWS 서버리스 프로그래밍 모델을 그대로 활용하여 원격지 컴퓨팅에서 활용
임베디드 기기 및 원격 대용량 데이터 처리에 용이
IoT 기기
제조
Greengrass
런타임 설치
= +
AWS Greengrass
44. 다양한 AWS IoT SDK 지원
C-SDK
(Ideal for embedded
OS)
JS-SDK
(Ideal for Embedded
Linux Platforms)
Arduino Library
(Arduino Yun)
Mobile SDK
(Android and iOS)