© 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
22-Setembro-2016
Introdução à Internet das Coisas
com AWS IoT
A “Internet das Coisas”
(plural)
Coisas NÃO são recursos estáticos
Propósito != Medição
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
• Similar a sintaxe SQL
• SELECT * FROM tópico WHERE filtro
• 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: Funcionalidades do Motor de Regras
• Coleções JSON
• get(vetor, int) – pegar um item na posição do vetor
• get(string, int) – pegar um caractere na posição da string
• get(objeto, chave) – pegar o valor da chave
• SUB SELECT de coleções
• SELECT (SELECT v FROM e WHERE n = 'temperatura') as
temperatura FROM 'topico'
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
• Gere 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
novo: Registro de Coisas - Tipo
• Registrar uma coisa para que possa localizá-la
posteriormente
• Atributos que podem ser buscados
• Definir coisas usando tipo
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
Demo
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
P
Role
{
"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 Regiões (EU – Frankfurt e AP – Cingapura)
• novo Ciclo de Vida de Eventos
• novo Tipos para o Device Registry
• novo Funcionalidades do Motor de Regra
• Elasticsearch
• Amazon ML como função de predição
• novo Traga o seu próprio certificado
Lembre-se de avaliar as
apresentações!
Muito Obrigado!
David Reis | dreis@amazon.com
Eduardo Horai | ehorai@amazon.com

Path to the future #2 - Internet das coisas com AWS IoT

  • 1.
    © 2016, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. David Reis | Arquiteto de Soluções Eduardo Horai | Gerente Sr. Arquitetura de Soluções 22-Setembro-2016 Introdução à Internet das Coisas com AWS IoT
  • 2.
    A “Internet dasCoisas” (plural)
  • 4.
    Coisas NÃO sãorecursos estáticos
  • 6.
  • 9.
    O cliente temvárias identidades
  • 12.
    A casa éa empresa de alguém
  • 14.
  • 15.
  • 16.
  • 17.
    Publish / Subscribe Suportea 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
  • 18.
    Mensagens dos Sensores Suportea protocolos padrão MQTT, HTTP, WebSockets Tópico/canal Hierarquia para roteamento das mensagens Controle total da árvore Conteúdo (JSON) JSON customizado
  • 19.
  • 20.
    Extraindo o Valordas 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
  • 21.
    Motor de Regras(Rules Engine)
  • 22.
    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’)
  • 23.
    Motor de Regras •Similar a sintaxe SQL • SELECT * FROM tópico WHERE filtro • 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
  • 24.
    novo: Funcionalidades doMotor 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" } }]}
  • 25.
    novo: Funcionalidades doMotor de Regras • Coleções JSON • get(vetor, int) – pegar um item na posição do vetor • get(string, int) – pegar um caractere na posição da string • get(objeto, chave) – pegar o valor da chave • SUB SELECT de coleções • SELECT (SELECT v FROM e WHERE n = 'temperatura') as temperatura FROM 'topico'
  • 26.
  • 27.
  • 28.
    novo: Ciclo deVida de Eventos
  • 29.
  • 30.
    Fluxo básico parausar predição • Gere 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
  • 31.
    Blog de ManutençãoPreditiva: http://bit.ly/aws-iot-aml-blog
  • 32.
    novo: Registro deCoisas - Tipo • Registrar uma coisa para que possa localizá-la posteriormente • Atributos que podem ser buscados • Definir coisas usando tipo
  • 33.
  • 34.
  • 35.
    1. Dispositivo publicao 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
  • 36.
    AWS IoT DeviceShadow: 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
  • 37.
  • 38.
  • 39.
    Princípios de Segurançada AWS Separação de Papéis Pessoal diferente para cada função Privilégio mínimo
  • 41.
  • 42.
    Autenticação Mútua usandoTLS • 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
  • 43.
    novo: Traga oseu 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
  • 44.
    Exemplo de Policypublish/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
  • 45.
    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
  • 46.
    Protegendo o acessoaos recursos da AWS
  • 47.
    Criando um relaçãode confiança com AWS IoT P P P Role { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": “iot.amazonaws.com” }, "Action": "sts:AssumeRole" } ] }
  • 48.
    Protegendo acesso aosrecursos da AWS
  • 49.
    Protegendo acesso dosusuá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
  • 50.
  • 51.
    Suporte ao SDKpara 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)
  • 52.
    Resumo • AWS IoT •novo Regiões (EU – Frankfurt e AP – Cingapura) • novo Ciclo de Vida de Eventos • novo Tipos para o Device Registry • novo Funcionalidades do Motor de Regra • Elasticsearch • Amazon ML como função de predição • novo Traga o seu próprio certificado
  • 53.
    Lembre-se de avaliaras apresentações!
  • 54.
    Muito Obrigado! David Reis| dreis@amazon.com Eduardo Horai | ehorai@amazon.com