© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
David Reis | Arquiteto de Soluções
Eduardo Horai | Gerente Sr. Arquitetura de Soluções
02-Junho-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
Ruído de Roteamento
Device Gateway
Publish / Subscribe
Suporte a Protocolos Padrões
MQTT, HTTP, WebSockets
Conexões de Longa Duração
Receber sinais da nuvem
Seguro por Padrão
Conecte com segurança usando
certificados X509 e TLS 1.2
com Autenticação Mútua
Mensagens dos Sensores
Suporte a protocolos padrão
MQTT, HTTP, WebSockets
Tópico/canal
Hierarquia para roteamento das mensagens
Controle 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 auxiliaries 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
Demo
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
Blog de Manutenção Preditiva:
http://bit.ly/aws-iot-aml-blog
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 estado
atual do dispositivo
4. Aplicativo solicita atualização
no estado
5. Device shadow sincroniza
o 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
shadows
Obtém o estado desejado da shadow
Aplicação Móvel
Determina o estado desejado do dispositivo
Obtém o último estado reportado pelo dispositivo
Apaga 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ção
Signature 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
• C
• Arduino (Yun)
• iOS (Swift)
• Android
• Suporte a WebSocket
• NodeJS
• JS SDK para sites estáticos (WebSockets)
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!David Reis | [email protected]
Eduardo Horai | [email protected]