Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

25
AWS IoT & GreenGrass Jeremy Cowan, Enterprise Solutions Architect [email protected]

Transcript of Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Page 1: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT & GreenGrass

Jeremy Cowan, Enterprise Solutions [email protected]

Page 2: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

25billion devices by 2020

Page 3: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Everyday things will be connected…

http://www.washingtonpost.com/sf/brand-connect/wp-content/uploads/sites/3/2015/05/cc_heroimage_v2.jpg

Page 4: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"
Page 5: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"
Page 6: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT

DEVICE SDKSet of client libraries to

connect, authenticate and exchange messages

DEVICE GATEWAYCommunicate with devices

via MQTT, HTTPand Web Sockets

AUTHENTICATIONAUTHORIZATION

Secure 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

DEVICE REGISTRYIdentity and Management of

your things

Page 7: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

MQTT Primer

MQ Telemetry Transport – the IoT protocol

Senders ‘Publish’ to topics and send messages Receivers ‘Subscribe’ to topics and receive messages All subscribers receive all messages sent to a topic Topic names can be subscribed to using ‘wildcards’

topicname/path Use the path depth that makes sense for

your application

Page 8: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

MQTT Primer

Pub: sensors/temp/room1

If the receiver subscribes to the exact full path, they only receive

messages sent to the exact full path

All messages published on this topic are received by all

subscribers to the topic

Sub: sensors/temp/room1

Page 9: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

MQTT Primer

Pub: sensors/temp/room1

The plus (+) matches exactly one item in the topic hierarchy so here the subscriber will receivemessages for all sensors in room 1

All messages published on this topic are received by all

subscribers to the topic

Sub: sensors/+/room1

Page 10: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Pub: sensors/temp/room1

The Hash (#) means the subscriber will receive messages for all

temperature sensors in all rooms

All messages published on this topic are received by all

subscribers to the topic

Sub: sensors/temp/#

MQTT Primer

Page 11: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT

DEVICE SDKSet of client libraries to

connect, authenticate and exchange messages

DEVICE GATEWAYCommunicate with devices

via MQTT, HTTPand Web Sockets

AUTHENTICATIONAUTHORIZATION

Secure 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

DEVICE REGISTRYIdentity and Management of

your things

Page 12: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Device Shadow• Plan for devices to lose connectivity

– Device may need to shut down when idle to conserve battery. – Device may be stable, but the network could be unreliable.

• Send devices commands through Shadows– Instead of wrangling custom topics and keeping state yourself, use the

Device Shadow to abstract away the topics and connectivity issues.

• Query device state through Shadows– The Device Shadow is always available, even if the device is not.

• Addresses message ordering for command and control– Uses optimistic locking (version number)

Page 13: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Device Shadow

Thing

reported state

desired state

MQ

TTAWS Lambda

The device itself is the source of truth for the

‘reported’ state.

Interested parties set the ‘desired’ state to request a change to the state of

the device.

Page 14: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

• Used to request a change to device stateInterested parties request device state change through the JSON payload.

• Difference between ‘reported’ and ‘desired’ triggers a ‘delta’ message to the deviceThe AWS IoT device shadow compares the ‘reported’ state with the ‘desired’ state, and any properties of ‘desired’ not present or different in the ‘reported’ state are notified via a ‘delta’ message.

‘Desired’ state

Page 15: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT Reserved Topics

$aws/things/SmartHub/shadow/update

Topic names that begin with $aws are reserved for AWS IoT special uses, such as addressing the device shadow for a thing.

Page 16: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

The Device Shadow listens to a well-known topic and interprets the JSON payload it receives.

You can publish well-formed messages to$aws/things/SmartHub/shadow/updateto update the shadow, or more conveniently,

use the aws-iot-sdk abstractions.

Page 17: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT SDKs• Supported languages / environments

• Python• Embedded C• iOS• Android

• Javascript• NodeJS• Java• Arduino Yun

• Support device shadow and custom topicsBuilt on top of Paho MQTT client library, the SDKs abstract the device shadow but allow direct pub/sub

• Fully documentedRich documentation with examples on GitHub

Page 18: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT – How Do You Connect a Device?

1. Provision a certificateAWS IoT can generate the Cert/Public/Private keys for youAlternatively, BYO certificate to more easily integrate with existing workflows

2. Attach an IoT PolicyAssociate an IoT Policy document with the certificate to scope down what the certificate holder can do

3. Connect over MQTTUse the AWS IoT SDKs or roll-your-own

4. Send some dataPublish a payload!

Page 19: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT – How Do You Secure Communications?• Mutual authentication X.509 certificate-based auth

– When devices connect to the AWS IoT broker, they use certificate-based authentication. You assign policies to certificates.

• AWS SigV4– When browsers use WebSockets, connections are signed using SigV4, which

identifies the user principal that you can attach AWS IoT policies to.

• Amazon Cognito simplifies signing SigV4 requests– Takes care of steps necessary to create a unique identifier for users and

retrieve temporary, limited-privilege AWS credentials.

Page 20: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

AWS IoT

DEVICE SDKSet of client libraries to

connect, authenticate and exchange messages

DEVICE GATEWAYCommunicate with devices

via MQTT, HTTPand Web Sockets

AUTHENTICATIONAUTHORIZATION

Secure 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

DEVICE REGISTRYIdentity and Management of

your things

Page 21: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Rules Engine• Augment or filter data received from a device.• Write data received to an Amazon DynamoDB database.• Save a file to Amazon S3.• Send a push notification to all users of Amazon SNS.• Publish data to an Amazon SQS queue.• Invoke a Lambda function to extract data.• Push data into Elastic Search.• Process messages from a large number

of devices using Amazon Kinesis.• Republish the message to another MQTT topic.

Page 22: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Example Rule

SELECT * FROM '#'

The entire contentsof the MQTT message

All messages that arrive at the message broker

Page 23: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Example Rule

SELECT * FROM '$aws/things/SmartHub/shadow/update'

The entire contentsof the MQTT message

Only messages as part of a shadow update request

Page 24: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Example Rule

SELECT state.reported.info as info FROM '$aws/things/SmartHub/shadow/update' WHERE state.reported.target="LightBulb"

Just the ‘info’ property in the reported state message

Only messages that have a ‘target’ value set to ‘LightBulb’

Page 25: Jeremy Cowan's AWS user group presentation "AWS Greengrass & IoT demo"

Demo:

Color Cube Demo

http://bit.ly/2nS3GVN