Introdução à Internet das Coisas com AWS IoT

46
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Angelo Carvalho | Arquiteto de Soluções 22 de Setembro de 2016 Introdução à Internet das Coisas com AWS IoT

Transcript of Introdução à Internet das Coisas com AWS IoT

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Angelo Carvalho | Arquiteto de Soluções

22 de Setembro de 2016

Introdução à Internet das Coisas com AWS IoT

A “Internet das Coisas” (plural)

Coisas NÃO são recursos estáticos

O cliente tem várias identidades

A casa é a empresa de alguém

AWS IoT

Demo

Ruído de Roteamento

Device Gateway

Publish / Subscribe

Suporte a Protocolos PadrõesMQTT, HTTP, WebSockets

Conexões de Longa DuraçãoReceber sinais da nuvem

Seguro por PadrãoConecte com segurança usandocertificados X509 e TLS 1.2com Autenticação Mútua

Mensagens dos SensoresSuporte a protocolos padrãoMQTT, HTTP, WebSockets

Tópico/canalHierarquia para roteamento das mensagensControle total da árvore

Conteúdo (JSON)JSON customizado

Encontrando os Sinais

Extraindo o Valor das Mensagens

• Filtrar mensagens usando um critério• Mover mensagens para outros tópicos• Mover mensagens para outros sistemas• Transformar o conteúdo das mensagens• Predizer mensages usando tendências• Reagir baseado nas mensagens

Motor de Regras (Rules Engine)

AWS IoT SQL – Referência

SELECT DATA FROM TOPIC WHERE FILTER

• Similar a ler uma tabela de um banco de dados• A origem padrão é um tópico MQTT

Exemplos:• FROM mqtt(‘meu/topico’)• FROM mqtt(‘meu/coringa/+/topico’)• FROM (‘meu/topico’)

Motor de Regras

• Funções• Manipulação de strings (suporte a expressões regulares)• Operações matemáticas• Funções auxiliares baseadas em contexto• Suporte a criptografia• UUID, timestamp, rand, etc.

• Executar ações em paralelo

novo: Funcionalidades do Motor de Regras

• Versionamento• 2016-10-08 – Versão original • 2016-03-23-beta – Versão beta lançada em uma

determinada data• beta – Última versão beta (mudanças com quebras!)• lts – Última versão estável, atualizada automaticamente

{

"sql": "expression",

"ruleDisabled": false,

"awsIotSqlVersion": "2015-03-23-beta",

"actions": [{

"republish": {

"topic": "my-mqtt-topic",

"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"

}

}]}

novo: Integração com Elasticsearch

novo: Ciclo de Vida de Eventos

novo: Função de Predição

Fluxo básico para usar predição

• Gerar dados• Use uma regra do AWS IoT para enviar dados para o S3• Construa o seu modelo no Amazon Machine Learning

usando o S3 como fonte de dados• Habilite as predições em tempo-real no Amazon ML • Use uma regra do AWS IoT para validar o valor predito

com o Amazon ML• Adicione outras ações

AWS IoT Device Shadow

AWS IoT Device Shadow

1. Dispositivo publica o estado atual

2. Persiste no repositório de dados JSON

3. Aplicativo solicita o estadoatual do dispositivo

4. Aplicativo solicita atualizaçãono estado

5. Device shadow sincronizao estado atualizado

6. Dispositivo publica o estado atual

7. Device shadow confirma a mudança do estado

AWS IoT Fluxo de uso do Device Shadow

AWS IoT Device Shadow: Simples e Poderoso

{"state" : {

“desired" : {“luzes": { "cor": “VERMELHO" },"motor" : "LIGADO"

},"reported" : {

“luzes" : { "cor": “VERDE" },„motor" : "LIGADO"

},"delta" : {

“luzes" : { "cor": "VERMELHO" }} },

"version" : 10}

Dispositivo

Reporta o estado atual para uma ou mais device shadowsObtém o estado desejado da shadow

Aplicação Móvel

Determina o estado desejado do dispositivoObtém o último estado reportado pelo dispositivoApaga a device shadow

Shadow

Shadow informa a diferença (delta), estado desejado (desired) e reportado (reported)incluindo o metadado e versão

Segurança

Princípios de Segurança da AWS

Separação de Papéis

Pessoal diferente para cada função

Privilégio mínimo

Segurança nos Dispositivos

Autenticação Mútua usando TLS

• Criar um CSR• Criar um certificado X.509 a partir do CSR• Ativar o certificado• Criar uma policy• Anexar a policy ao certificado

* Certificado precisa ser emitido pelo AWS IoT

novo: Traga o seu próprio Certificado

• Use os certificados emitidos pela sua própria AC• Aproveitar a Infraestrutura de emissão atual• Usar certificados que já estão embarcados• Acesso limitado a internet na linha de montagem/fábrica• Provisionamento simplificado de dispositivos

• 8 chamadas novas de API para suportar o gerenciamento dos certificados

Exemplo de Policy publish/subscribe

"Effect": "Allow",

"Action": [

"iot:Publish"

],

"Resource": [

"arn:aws:iot:us-east-1:123456789012:topic/foo"

]

},

{

"Effect": "Deny",

"Action": [

”iot:Subscribe"

],

"Resource": [

"arn:aws:iot:us-east-1:123456789012:topic/bar"

]

Permite acesso a topic/foo

Nega acesso a topic/bar

AWS IoT policies

• Resultado (Effect)• Permitir (Allow) ou Negar (Deny)

• Ação (Action)• "iot:Publish" – publicar em um tópico MQTT• "iot:Subscribe" – inscrever em um tópico MQTT• "iot:UpdateThingShadow" – Atualizar uma thing shadow• "iot:GetThingShadow" – Obter uma thing shadow• "iot:DeleteThingShadow - Apagar uma thing shadow

• Recurso (Resource)• Cliente• ARN do tópico ou do filtro do tópico

Protegendo o acesso aos recursos da AWS

Criando um relação de confiança com AWS IoT

P P

PRole

{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "",

"Effect": "Allow",

"Principal": {

"Service": “iot.amazonaws.com”

},

"Action": "sts:AssumeRole"

}

]

}

Protegendo acesso aos recursos da AWS

Protegendo acesso dos usuários

• WebSockets suporta autenticaçãoSignature Version 4

• IAM roles e policies• Pool de Identidade do Amazon Cognito

• Acesso anônimo ao iot:Subscribe• Use o seu próprio padrão de autenticação no nível de

aplicação

SDKs para Dispositivos

Suporte ao SDK para Dispositivos

• Baseado em padrões abertos como Eclipse Paho• Embedded C• JavaScript• Arduíno Yún• Java• Python• iOS• Android

Resumo

• AWS IoT• novo Ciclo de Vida de Eventos• novo Funcionalidades do Motor de Regra

• Elasticsearch• Amazon ML como função de predição

• novo Traga o seu próprio certificado

Muito Obrigado!Angelo Carvalho | [email protected]