iot at the edge: aws iot & greengrass 활용 방법
TRANSCRIPT
The “Internet of Things” (plural)
Products That Get Better With Time
Devices Network Security Data Collection Smarts
1
IoT 서비스를할때고려할점
Thing 과연결시어려운점
• 디바이스가항상꼭연결되어있어야만할까요?
• 디바이스가항상안정적인네트워크에연결되어있을까요?
• 특정이벤트에만처리가일어나야효과적일텐데요?
• 스트리밍데이터가생성되면빅데이터분석이쉽게가능해야할텐데요?
• 보안은당연한과제
AWS IoT 구성
DEVICE SDKSet of client libraries to
connect, authenticate and exchange messages
MESSAGE BROKERCommunicate with devices via
MQTT and HTTP
AUTHENTICATIONSecure with mutual
authentication and encryption
RULES ENGINETransform messages based on rules and
route to AWS Services
AWS Services- - - - -
3P Services
DEVICE SHADOWPersistent thing state
during intermittent connections
APPLICATIONS
AWS IoT API
REGISTRYIdentity and Management of
your things
AWS IoT 보안인증기능
AWS IoT API
AUTHENTICATIONSecure with mutual
authentication and encryption
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
AWS IoT에서안전하게장치와연결
1. 인증서(certificate) 생성
2. 장치에정책(Policy) 등록
3. MQTT 로 접속
상호인증방식지원및암호화 (TLS)
AWS IoT의강력한보안
손쉽게안전한통신을위한키구성
- 단일 API 요청하나로보안키생성CreateKeysAndCertificate()
- 고객의인증키등록사용가능Certificate signing request (CSR)
상세권한설정
디바이스관리
Pub/Sub 메시지사용권한
다른 AWS 서비스사용권한
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/*"]}]}
Demo #0 JAWS IoT 보안 인증 둘러보기
AWS IoT 디바이스게이트웨이
MESSAGE BROKERCommunicate with devices via
MQTT and HTTP
AWS IoT APINDA
AWS IoT 디바이스게이트웨이
표준 프로토콜 지원
수 천 만개 이상의 장치 또는 앱이 MQTT와HTTP 를 이용하여 접속 가능
양방향 통신
클라이언트(장치 또는 앱) 송신 및 수신을지속적인 연결을 유지하면서 사용 가능
높은 보안
X509 인증 또는 TLS 1.2 지원의 양방향인증
Topic Based Architecture
(lights/thing-2/color)
Demo #1 JAWS IoT Pub/Sub 기능
AWS IoT 규칙엔진
RULES ENGINETransform messages based on rules and
route to AWS Services
AWS IoT API
AWS IoT 규칙엔진의기본기능
SELECT * FROM ‘things/thing-2/color’ WHERE color = ‘red’
간단하고 쉬운 문법 지원
- SQL 문형 지원, filter 기능 지원
- WHERE 지원
- JSON 지원
데이터 변환을 위한 함수 지원
- 스트링 변환 (regex 지원)- 수치 연산 지원
- 암호화 지원
- UUID, Timestamp, rand 지원
SELECT *, clientId() as MQTTClientIdFROM '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/OneRoleToRuleThemAll"}]
AWS IoT 규칙엔진병렬수행
동시에 여러 규칙 수행
단일 디바이스의 메시지만을 평가하는 것이 아닌 동시에 여러 규칙 적용 가능
규치에 따라 여러 다양한 서비스 액션 설계
단일 메시지를 여러 AWS에 동시에 적용하여 수행 가능
AWS IoT 규칙엔진과연동
RULES ENGINETransform messages based on rules and
route to AWS Services
AWS IoT API
AWS Services- - - - -
3P Services
AWS IoT 규칙엔진과연동 AWS 서비스
규칙 엔진은 AWS IoT로 들어오는메시지들을 규칙에 따라 평가하여다른 서비스에 메시지를 전달하여다양항 비지니스 로직을 바로 구성가능
Lambda나 SNS(Simple notificaiton service)를 통해 외부서비스와도 연동 가능
Actions
규칙엔진과연동가능한서비스
Lambda 함수 호출
S3 에 파일로 저장
DynamoDB에 데이터입력
SNS로 메시지 전달
Amazon Kinesis로 메시지전달
Firehose로 메시지 전달
AWS IoT에 재전달
ElasticSearch로 바로 메시지 저장
CloudWatch 지표로 전달또는 Alarm 발생
SQS 큐로 메시지 저장
AWS IoT 규칙엔진에서머신러닝서비스연동
모델 생성 및 예측값 반환
Amazon Machine Learning 은 S3에 저장된 디바이스에서 입력된 값을 이용해 Machine Learning 모델 생성
지속적인 모델 개선 가능
새로 업데이트된 데이터를 데이터셋으로 지정하여 보다 나은 Machine Learning 모델생성하여 서비스 적용 가능
Send to S3
Amazon Machine Learning
Re-Train
AWS IoT 규칙엔진과데이터스트리밍연동
여러 다른 센서들의 데이터를 모아서 데이터 스트림으로 Kinesis stream에 전달
전달된 데이터는 데이터베이스, 어플케이션, 분석 서비스 등에서 처리되거나 사용
데이터 스트림
AWS IoT 규칙엔진 & Amazon SNS
푸쉬 서비스 연동
Apple APNS, Google GCM, Amazon ADM 엔트포인트로 메시지 전달하여 푸쉬 문자 전송
Amazon SNS -> WebhookSlack, Twillio 등의 Webhook을 지원하는 3rd 파티 서비스에 메시지 전달 연동
SNS
2
Demo #2 JDynamoDB 로 데이터 보내기
AWS IoT 디바이스섀도우
AWS IoT API
DEVICE SHADOWPersistent thing state
during intermittent connections
AWS IoT 디바이스섀도우
AWS IoT 디바이스섀도우처리순서
Shadow
Device SDK
1. 디바이스에서 현재 상태 전송
2. 저장소에 상태 저장
3. 앱에서 현재 디바이스 상태 요청
4. 앱에서 디바이스 상태 변경 요청5. 디바이스에서 디바이스섀도우의 변경값 확인
6. 변경된 새로운 상태 전송 7. 디바이스 섀도우에서 변경된 상태 확인
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)만 전송도 가능
AWS IoT 디바이스섀도우예시
AWS IoT SDK는 디바이스 섀도우를쉽게 읽고/쓰고/변경할 수 있는 기능을제공하여, 디바이스의 상태를 자동으로쉽게 동기 가능
AWS IoT DEVICE SHADOW
UPDATE: $aws/things/{thingName}/shadow/updateDELTA: $aws/things/{thingName}/shadow/update/delta GET: $aws/things/{thingName}/shadow/getDELETE: $aws/things/{thingName}/shadow/delete
Sensor Reported Desired Delta
LED1 RED YELLOWLED1 = YellowTEMP = 60F
ACCEL X=1,Y=5,Z=4 X=1,Y=5,Z=4
TEMP 83F 60F
Demo #3 JShadow를 이용하여 선풍기 동작
AWS IoT 레지스트리
AWS IoT API
REGISTRYIdentity and Management of
your things
AWS IoT 레지스트리
• key: value 형식으로저장• 펌웨어버젼
• 디바이스시리얼넘버
• 기술지원, 유지보수• 참조정보및 URL 입력
• 제품파트넘버등
• 왜부기술지원시스템과연계참조가능
AWS IoT – 디바이스관리
S3에 versioning 기능을 통해 펌웨어 관리 및 저장
메시지를 디바이스 게이트웨이를 통해 디바이스 전체 또는 부분에 전달하고, S3 URL을전달하여 디바이스가 펌웨어를 직접 다운로드 가능
펌웨어 업데이트
S3에 펌웨어 저장
Publish (디바이스에 알림)
• 원하는 디바이스업데이트 가능
• 규칙 엔진에서 펌웨어업데이트 상태를DynamoDB 등에 저장관린
• 레지시트리에 버젼 정보저장 관리
임베디드 디바이스를 쉽게 프로그래밍 할 수 있는 능력이 필요
디바이스를 새로 프로그래밍 하지 못하면 디바이스는 기능의 제약이 생김
IoT 서비스환경이가진어려운문제
양방향 지연 속도
연결 중단
비싼 네트워크 비용
ThingsSense & Act
CloudStorage& Compute
IntelligenceInsights &Logic → Action
AWS IoT 플랫폼구성AWS IoT를 통해 IoT 백엔트 환경 활용
Action
DeviceState
AWS Services
Applications
Authentication& Authorization
DeviceGateway
Registry
AWS IoT API
Messages Messages
Messages Messages
Authentication& Authorization
DeviceGateway
Action
DeviceState
AWS Services
Applications
Registry
AWS IoT API
AWS IoT 플랫폼 + 디바이스로확장디바이스가 있는 로컬 환경으로 기능 확장
DeviceState
Action
DeviceGateway
Messages
Authentication& Authorization
Security
스마트 홈 농업 현장 공장 지역
IoT 커넥티드 디바이스를 위한 로컬 컴퓨팅, 메시징 및 데이터 캐싱 허브
AWS 서버리스 프로그래밍 모델을 그대로 활용하여 원격지 컴퓨팅에서 활용임베디드 기기 및 원격 대용량 데이터 처리에 용이
IoT 기기제조
Greengrass 런타임 설치
= +
AWS Greengrass
로컬컴퓨팅
로컬데이터캐싱
안전한통신
로컬메시징
클라우드 연결이 간헐적인 경우
AWS Greengrass 특징적인기능
다양한 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)