Slide 1

Slide 1 text

serverless IoT-Applications Niko Will, innoQ @n1ko_w1ll

Slide 2

Slide 2 text

@n1ko_w1ll about me > Developer since 2005 > living in a Smarthome since 2012 > became an IoT Geek > before: worked on Bosch IoT Suite for 3 years > now: Consultant at innoQ > follow me on Twitter: @n1ko_w1ll

Slide 3

Slide 3 text

@n1ko_w1ll agenda > AWS > IoT > Lambda > use-cases > JITR | on-boarding | pairing > list / search things | command & control | telemetry > connected / disconnected / LWT > encrypted file transfer | firmware update

Slide 4

Slide 4 text

@n1ko_w1ll AWS

Slide 5

Slide 5 text

@n1ko_w1ll AWS Amazon S3 Amazon Elasticsearch Amazon Kinesis Amazon SNS Amazon SQS Amazon DynamoDB Amazon Cognito Amazon API Gateway AWS Lambda Amazon CloudWatch AWS IoT State Fast Data

Slide 6

Slide 6 text

@n1ko_w1ll AWS Lambda

Slide 7

Slide 7 text

@n1ko_w1ll AWS Lambda > Functions-as-a-Service (FaaS) > serverless > „small“ functions > stateless compute containers > event-driven

Slide 8

Slide 8 text

@n1ko_w1ll AWS Lambda > advantages > scalable > pay-per-execution / pay-as-you-go > no upfront capacity planning > significantly reduce operational cost

Slide 9

Slide 9 text

@n1ko_w1ll AWS Lambda > disadvantages > vendor lock-in > startup latency > testing > debugging > execution duration

Slide 10

Slide 10 text

@n1ko_w1ll AWS IoT

Slide 11

Slide 11 text

@n1ko_w1ll AWS IoT > managed service > message broker > rules engine > shadows > registry > security

Slide 12

Slide 12 text

@n1ko_w1ll message broker > topic based > publish / subscribe > topic wildcards > protocols > MQTT > MQTT + WebSockets > HTTP $aws/events/presence/connected/clientId $aws/events/presence/disconnected/clientId $aws/things/thingName/shadow/update $aws/things/thingName/shadow/update/delta

Slide 13

Slide 13 text

@n1ko_w1ll rules engine > SQL-like syntax > augument or filter data > rule actions > state stores > fast data pipelines > CloudWatch > Lambda > republish SELECT *, newuuid() AS requestId, clientId() AS clientId, timestamp() AS timestamp, topic(2) AS deviceId, topic(4) AS sensorId FROM 'device/+/sensor/+/v1' WHERE temperature > 50 AND color <> 'red'

Slide 14

Slide 14 text

@n1ko_w1ll shadows > JSON document > current state of thing > connection independent > supports client tokens > supports versioning > MQTT topics > RESTful API { "state" : { "desired" : { "color" : "RED" }, "reported" : { "color" : „GREEN" } }, "metadata" : { "desired" : { "color" : { "timestamp" : 12345 } }, "reported" : { "color" : { "timestamp" : 12345 } } }, "version" : 10, "clientToken" : "UniqueClientToken", "timestamp": 123456789 }

Slide 15

Slide 15 text

@n1ko_w1ll registry > manage your things > physical device or sensor > logical entity > attributes > thing types { "version": 3, "thingName": "MyLightBulb", "defaultClientId": "MyLightBulb", "thingTypeName": "LightBulb", "attributes": { "model": "123", "wattage": "75" } }

Slide 16

Slide 16 text

@n1ko_w1ll security > mutual authentication with X509 certificates + TLS 1.2 > or SigV4 for HTTPS and WebSockets > bring your own certificate > JITR > Atmel ECC508 > policy based access with dynamic values > role based rules action execution

Slide 17

Slide 17 text

@n1ko_w1ll use-cases

Slide 18

Slide 18 text

@n1ko_w1ll just in time registration (JITR) thing AWS IoT Device Registry $aws/events/certificates/ registered/caCertificateID IoT Policy IoT Rule AWS Lambda

Slide 19

Slide 19 text

@n1ko_w1ll on-boarding thing AWS IoT AWS Lambda custom/clientId/register IoT Rule IoT Policy Device Shadow Amazon DynamoDB

Slide 20

Slide 20 text

@n1ko_w1ll thing IoT Policy Device Shadow mobile client AWS Lambda Amazon Cognito Amazon API Gateway AWS IoT thing pairing exchange OAuth token for AWS credentials

Slide 21

Slide 21 text

@n1ko_w1ll list / search things things mobile client AWS Lambda Amazon Cognito Amazon API Gateway AWS IoT Amazon DynamoDB

Slide 22

Slide 22 text

@n1ko_w1ll command & control thing mobile client AWS Lambda Amazon Cognito Amazon API Gateway AWS IoT Device Shadow

Slide 23

Slide 23 text

@n1ko_w1ll command & control thing mobile client Amazon Cognito AWS IoT Device Shadow

Slide 24

Slide 24 text

@n1ko_w1ll command & control thing Amazon Cognito AWS IoT Amazon Echo AWS Lambda Alexa Skill Device Shadow

Slide 25

Slide 25 text

@n1ko_w1ll telemetry AWS IoT things Amazon Kinesis Amazon DynamoDB telemetry rule telemetry topic Amazon EMR

Slide 26

Slide 26 text

@n1ko_w1ll { "state": { "reported": { "connected": true } } } { "state": { "reported": { "connected": true } } } connected / disconnected / LWT Device Shadow thing AWS IoT shadow update topic

Slide 27

Slide 27 text

@n1ko_w1ll { "state": { "reported": { "connected": true } } } { "state": { "reported": { "connected": false } } } { "state": { "reported": { "connected": false } } } connected / disconnected / LWT Device Shadow thing AWS IoT shadow update topic

Slide 28

Slide 28 text

@n1ko_w1ll { "state": { "reported": { "connected": true } } } { "state": { "reported": { "connected": false } } } connected / disconnected / LWT Device Shadow thing AWS IoT LWT rule custom LWT topic LWT { "state": { "reported": { "connected": false } } } shadow update topic republish

Slide 29

Slide 29 text

@n1ko_w1ll encrypted file transfer Amazon S3 thing AWS IoT AWS Lambda AWS KMS

Slide 30

Slide 30 text

@n1ko_w1ll firmware update Device Shadow AWS Lambda thing AWS IoT Amazon S3 Amazon DynamoDB

Slide 31

Slide 31 text

@n1ko_w1ll summary > scalable plattform > common IoT use-cases > w/o own infrastructure > w/o upfront capacity planning > very secure > very extensible

Slide 32

Slide 32 text

@n1ko_w1ll Thank you. Questions? Comments @n1ko_w1ll Niko Will [email protected] innoQ Deutschland GmbH Krischerstr. 100 40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 innoQ Schweiz GmbH Gewerbestr. 11 CH-6330 Cham Switzerland Phone: +41 41 743 0116 www.innoq.com Ohlauer Straße 43 10999 Berlin Germany Phone: +49 2173 3366-0 Ludwigstr. 180E 63067 Offenbach Germany Phone: +49 2173 3366-0 Kreuzstraße 16
 80331 München Germany Phone: +49 2173 3366-0