The “Internet of Things”
(plural)
Products That Get Better With Time
Devices Network Security Data Collection Smarts
1
IoT 서비스를 할 때 고려할 점
Thing 과 연결 시 어려운 점
• 디바이스가 항상 꼭 연결되어 있어야만 할까요?
• 디바이스가 항상 안정적인 네트워크에 연결되어 있을까요?
• 특정 이벤트에만 처리가 일어나야 효과적일텐데요?
• 스트리밍 데이터가 생성되면 빅데이터 분석이 쉽게 가능해야
할텐데요?
• 보안은 당연한 과제
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
AWS IoT 보안 인증 기능
AWS IoT API
AUTHENTICATION
Secure 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 J
AWS IoT 보안 인증 둘러보기
AWS IoT 디바이스 게이트웨이
MESSAGE BROKER
Communicate with devices via
MQTT and HTTP
AWS IoT API
NDA
AWS IoT 디바이스 게이트웨이
표준 프로토콜 지원
수 천 만개 이상의 장치 또는 앱이 MQTT와
HTTP 를 이용하여 접속 가능
양방향 통신
클라이언트(장치 또는 앱) 송신 및 수신을
지속적인 연결을 유지하면서 사용 가능
높은 보안
X509 인증 또는 TLS 1.2 지원의 양방향
인증
Topic Based
Architecture
(lights/thing-2/color)
Demo #1 J
AWS IoT Pub/Sub 기능
AWS IoT 규칙 엔진
RULES ENGINE
Transform 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 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"
}]
AWS IoT 규칙 엔진 병렬 수행
동시에 여러 규칙 수행
단일 디바이스의 메시지만을 평가하는 것이 아닌 동시에 여러 규칙 적용 가능
규치에 따라 여러 다양한 서비스 액션 설계
단일 메시지를 여러 AWS에 동시에 적용하여 수행 가능
AWS IoT 규칙 엔진과 연동
RULES ENGINE
Transform 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 -> Webhook
Slack, Twillio 등의 Webhook을 지원하는 3rd 파티 서비스에 메시지 전달 연동
SNS
2
Demo #2 J
DynamoDB 로 데이터 보내기
AWS IoT 디바이스 섀도우
AWS IoT API
DEVICE SHADOW
Persistent 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/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
Demo #3 J
Shadow를 이용하여 선풍기 동작
AWS IoT 레지스트리
AWS IoT API
REGISTRY
Identity and Management of
your things
AWS IoT 레지스트리
• key: value 형식으로 저장
• 펌웨어 버젼
• 디바이스 시리얼 넘버
• 기술 지원, 유지 보수
• 참조 정보 및 URL 입력
• 제품 파트 넘버 등
• 왜부 기술 지원 시스템과 연계 참조 가능
AWS IoT – 디바이스 관리
S3에 versioning 기능을 통해 펌웨어 관리 및 저장
메시지를 디바이스 게이트웨이를 통해 디바이스 전체 또는 부분에 전달하고, S3 URL을
전달하여 디바이스가 펌웨어를 직접 다운로드 가능
펌웨어 업데이트
S3에 펌웨어 저장
Publish (디바이스에 알림)
• 원하는 디바이스
업데이트 가능
• 규칙 엔진에서 펌웨어
업데이트 상태를
DynamoDB 등에 저장
관린
• 레지시트리에 버젼 정보
저장 관리
임베디드 디바이스를 쉽게 프로그래밍 할 수 있는 능력이 필요
디바이스를 새로 프로그래밍 하지 못하면 디바이스는 기능의 제약이 생김
IoT 서비스 환경이 가진 어려운 문제
양방향 지연 속도
연결 중단
비싼 네트워크 비용
Things
Sense
& Act
Cloud
Storage
& Compute
Intelligence
Insights &
Logic → Action
AWS IoT 플랫폼 구성
AWS IoT를 통해 IoT 백엔트 환경 활용
Action
Device
State
AWS Services
Applications
Authentication
& Authorization
Device
Gateway
Registry
AWS IoT API
Messages Messages
Messages Messages
Authentication
& Authorization
Device
Gateway
Action
Device
State
AWS Services
Applications
Registry
AWS IoT API
AWS IoT 플랫폼 + 디바이스로 확장
디바이스가 있는 로컬 환경으로 기능 확장
Device
State
Action
Device
Gateway
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)

IoT at the Edge: AWS IoT & Greengrass 활용 방법

  • 2.
    The “Internet ofThings” (plural)
  • 4.
    Products That GetBetter With Time
  • 7.
    Devices Network SecurityData Collection Smarts 1 IoT 서비스를 할 때 고려할 점
  • 8.
    Thing 과 연결시 어려운 점 • 디바이스가 항상 꼭 연결되어 있어야만 할까요? • 디바이스가 항상 안정적인 네트워크에 연결되어 있을까요? • 특정 이벤트에만 처리가 일어나야 효과적일텐데요? • 스트리밍 데이터가 생성되면 빅데이터 분석이 쉽게 가능해야 할텐데요? • 보안은 당연한 과제
  • 9.
    AWS IoT 구성 DEVICESDK 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 로 접속
  • 13.
    상호인증 방식 지원및 암호화 (TLS)
  • 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/*"] }]}
  • 16.
    Demo #0 J AWSIoT 보안 인증 둘러보기
  • 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)
  • 19.
    Demo #1 J AWSIoT Pub/Sub 기능
  • 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
  • 29.
    Demo #2 J DynamoDB로 데이터 보내기
  • 30.
    AWS IoT 디바이스섀도우 AWS IoT API DEVICE SHADOW Persistent thing state during intermittent connections
  • 31.
  • 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
  • 35.
    Demo #3 J Shadow를이용하여 선풍기 동작
  • 36.
    AWS IoT 레지스트리 AWSIoT 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 서비스 환경이 가진 어려운 문제 양방향 지연 속도 연결 중단 비싼 네트워크 비용
  • 40.
    Things Sense & Act Cloud Storage & Compute Intelligence Insights& Logic → Action AWS IoT 플랫폼 구성 AWS IoT를 통해 IoT 백엔트 환경 활용 Action Device State AWS Services Applications Authentication & Authorization Device Gateway Registry AWS IoT API Messages Messages
  • 41.
    Messages Messages Authentication & Authorization Device Gateway Action Device State AWSServices Applications Registry AWS IoT API AWS IoT 플랫폼 + 디바이스로 확장 디바이스가 있는 로컬 환경으로 기능 확장 Device State Action Device Gateway Messages Authentication & Authorization Security
  • 42.
    스마트 홈 농업현장 공장 지역 IoT 커넥티드 디바이스를 위한 로컬 컴퓨팅, 메시징 및 데이터 캐싱 허브 AWS 서버리스 프로그래밍 모델을 그대로 활용하여 원격지 컴퓨팅에서 활용 임베디드 기기 및 원격 대용량 데이터 처리에 용이 IoT 기기 제조 Greengrass 런타임 설치 = + AWS Greengrass
  • 43.
  • 44.
    다양한 AWS IoTSDK 지원 C-SDK (Ideal for embedded OS) JS-SDK (Ideal for Embedded Linux Platforms) Arduino Library (Arduino Yun) Mobile SDK (Android and iOS)