Crie um dispositivo virtual com a Amazon EC2 - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie um dispositivo virtual com a Amazon EC2

Neste tutorial, você criará uma EC2 instância da Amazon para servir como seu dispositivo virtual na nuvem.

Para concluir este tutorial, você precisa de um Conta da AWS. Se você não possuir uma, conclua as etapas descritas em Configurar Conta da AWS antes de continuar.

Configurar uma EC2 instância da Amazon

As etapas a seguir mostram como criar uma EC2 instância da Amazon que funcionará como seu dispositivo virtual no lugar de um dispositivo físico.

Se esta é a primeira vez que você cria uma EC2 instância da Amazon, você pode achar que as instruções em Comece a usar as EC2Linux instâncias da Amazon são mais úteis.

Como iniciar uma instância
  1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

  2. A partir do menu do console à esquerda, expanda a seção Instâncias e selecione Instâncias. A partir do painel Instâncias, selecione Iniciar instâncias à direita para exibir uma lista de configurações básicas.

  3. Na seção Nome e tags, digite um nome para a instância e, opcionalmente, adicione tags.

  4. Na seção Imagens do aplicativo e do sistema operacional (Amazon Machine Image), escolha um AMI modelo para sua instância, como Amazon Linux 2 AMI (HVM). Observe que isso AMI está marcado como “Qualificado para o nível gratuito”.

  5. Na página Selecione um tipo de instância, você pode selecionar a configuração de hardware da instância. Selecione o tipo t2.micro, que é selecionado por padrão. Observe que este tipo de instância está qualificado para o nível gratuito.

  6. Na seção Par de chaves (login), selecione um nome de par de chaves na lista suspensa ou selecione Criar um novo par de chaves para criar um novo. Quando criar um novo par de chaves, certifique-se de baixar o arquivo de chave privada e salvá-lo em um local seguro, pois essa é sua única oportunidade de baixá-lo e salvá-lo. Você precisará fornecer o nome do par de chaves ao iniciar uma instância e a chave privada correspondente sempre que se conectar à instância.

    Atenção

    Não selecione a opção Prosseguir sem um par de chaves. Se você executar sua instância sem um par de chaves, você não poderá conectá-la.

  7. Você pode manter as configurações padrão da seção Configurações de rede e da seção Configurar armazenamento. Quando tudo estiver pronto, selecione Iniciar instância.

  8. Uma página de confirmação informa que sua instância está sendo executada. Selecione Visualizar instâncias para fechar a página de confirmação e voltar ao console.

  9. Na tela Instances, é possível visualizar o status da execução. Demora um pouco para executar uma instância. Ao executar uma instância, seu estado inicial é pending. Depois que a instância é iniciada, seu estado muda para running e ela recebe um DNS nome público. (Se a coluna Público DNS (IPv4) estiver oculta, escolha Mostrar/Ocultar colunas (o ícone em forma de engrenagem) no canto superior direito da página e selecione Público DNS ().) IPv4

  10. Pode levar alguns minutos até que a instância esteja pronta para que você possa se conectar a ela. Certifique-se de que sua instância tenha sido aprovada nas verificações de status. É possível visualizar essas informações na coluna Status Checks.

    Quando a nova instância passar pelas verificações de status, prossiga para o próximo procedimento e conecte-se a ela.

Para se conectar à sua instância

Você pode se conectar a uma instância usando o cliente baseado em navegador selecionando a instância no EC2 console da Amazon e escolhendo se conectar usando o Amazon Instance EC2 Connect. O Instance Connect lida com as permissões e fornece uma conexão bem-sucedida.

  1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

  2. No menu esquerdo, selecione Instâncias.

  3. Selecione a instância e escolha Conectar.

  4. Escolha Amazon EC2 Instance Connect, Connect.

Agora você deve ter uma janela do Amazon EC2 Instance Connect que esteja conectada à sua nova EC2 instância da Amazon.

Instalar o Git, Node.js e configurar a AWS CLI

Nesta seção, você instalará o Git e o Node.js em sua instância do Linux.

Para instalar o Git
  1. Na janela do Amazon EC2 Instance Connect, atualize sua instância usando o comando a seguir.

    sudo yum update -y
  2. Na sua janela do Amazon EC2 Instance Connect, instale o Git usando o comando a seguir.

    sudo yum install git -y
  3. Para verificar se o Git foi instalado e a versão atual do Git, execute o comando a seguir:

    git --version
Para instalar o Node.js
  1. Na janela do Amazon EC2 Instance Connect, instale o node version manager (nvm) usando o comando a seguir.

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

    Usaremos o nvm para instalar o Node.js, pois o nvm pode instalar várias versões do Node.js e permitir que você alterne entre elas.

  2. Na janela do Amazon EC2 Instance Connect, ative o nvm usando esse comando.

    . ~/.nvm/nvm.sh
  3. Na janela do Amazon EC2 Instance Connect, use o nvm para instalar a versão mais recente do Node.js usando esse comando.

    nvm install 16
    nota

    Isso instala a LTS versão mais recente do Node.js.

    Instalar Node.js também instala o gerenciador de pacotes do nó (npm, do inglês "node package manager") para que você possa instalar módulos adicionais, conforme necessário.

  4. Na janela do Amazon EC2 Instance Connect, teste se o Node.js está instalado e funcionando corretamente usando esse comando.

    node -e "console.log('Running Node.js ' + process.version)"

    Este tutorial requer o Node v10.0 ou uma versão posterior. Para obter mais informações, consulte Tutorial: Configurando o Node.js em uma EC2 instância da Amazon.

Para configurar AWS CLI

Sua EC2 instância da Amazon vem pré-carregada com o. AWS CLI No entanto, você deve preencher seu AWS CLI perfil. Para obter mais informações sobre como configurar seuCLI, consulte Configurando o. AWS CLI

  1. O exemplo a seguir mostra valores de exemplo. Substitua os valores pelos seus próprios valores. É possível encontrar esses valores no AWS console nas informações da sua conta em Credenciais de segurança.

    Na janela do Amazon EC2 Instance Connect, digite este comando:

    aws configure

    Depois, insira os valores da sua conta nas solicitações exibidas.

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json
  2. Você pode testar sua AWS CLI configuração com este comando:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    Se o seu AWS CLI estiver configurado corretamente, o comando deverá retornar um endereço de endpoint do seu Conta da AWS.

Crie AWS IoT recursos para seu dispositivo virtual

Esta seção descreve como usar o AWS CLI para criar o objeto objeto e seus arquivos de certificado diretamente no dispositivo virtual. Isso é realizado diretamente no dispositivo para evitar possíveis complicações que possam surgir ao copiá-los para o dispositivo de outro computador. Nesta seção, você criará os recursos a seguir para o dispositivo virtual:

  • Um objeto em que representar seu dispositivo virtual AWS IoT.

  • Um certificado para autenticar um dispositivo virtual.

  • Um documento de política autorizando seu dispositivo virtual a se conectar ao AWS IoT e publicar, receber e assinar mensagens.

Para criar um objeto de AWS IoT coisa na sua instância Linux

Os dispositivos conectados AWS IoT são representados por objetos de coisas no AWS IoT registro. Um objeto representa um dispositivo específico ou uma entidade lógica. Nesse caso, seu objeto de coisa representará seu dispositivo virtual, essa EC2 instância da Amazon.

  1. Na janela do Amazon EC2 Instance Connect, execute o comando a seguir para criar seu objeto.

    aws iot create-thing --thing-name "MyIotThing"
  2. A JSON resposta deve ficar assim:

    { "thingArn": "arn:aws:iot:your-region:your-aws-account:thing/MyIotThing", "thingName": "MyIotThing", "thingId": "6cf922a8-d8ea-4136-f3401EXAMPLE" }
Para criar e anexar AWS IoT chaves e certificados em sua instância Linux

O comando create-keys-and-certificate cria certificados de cliente assinados pela autoridade de certificação raiz da Amazon. Esse certificado é usado para autenticar a identidade do dispositivo virtual.

  1. Na janela do Amazon EC2 Instance Connect, crie um diretório para armazenar seus arquivos de certificados e chaves.

    mkdir ~/certs
  2. Na sua janela do Amazon EC2 Instance Connect, baixe uma cópia do certificado da autoridade de certificação (CA) da Amazon usando este comando.

    curl -o ~/certs/Amazon-root-CA-1.pem \ https://www.amazontrust.com/repository/AmazonRootCA1.pem
  3. Na janela do Amazon EC2 Instance Connect, execute o comando a seguir para criar sua chave privada, chave pública e arquivos de certificado X.509. Esse comando também registra e ativa o certificado com. AWS IoT

    aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/device.pem.crt" \ --public-key-outfile "~/certs/public.pem.key" \ --private-key-outfile "~/certs/private.pem.key"

    A resposta é semelhante à seguinte. Salve o certificateArn para usá-lo em comandos subsequentes. Você precisará dele para anexar seu certificado à suo objeto e anexar a política ao certificado em etapas futuras.

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2", "certificateId": "9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2", "certificatePem": " -----BEGIN CERTIFICATE----- MIICiTCCEXAMPLE6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgEXAMPLEAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSEXAMPLE2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYEXAMPLEb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCEXAMPLEJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAEXAMPLEsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEXAMPLE25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+aEXAMPLE EXAMPLEfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZEXAMPLELG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAEXAMPLEWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9qEXAMPLEyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDEXAMPLEBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n-----END RSA PRIVATE KEY-----\n" } }
  4. Na janela do Amazon EC2 Instance Connect, anexe seu objeto ao certificado que você acabou de criar usando o comando a seguir e o certificateArn na resposta do comando anterior.

    aws iot attach-thing-principal \ --thing-name "MyIotThing" \ --principal "certificateArn"

    Se obtiver êxito, esse comando não retornará nenhuma saída.

Para criar e anexar uma política
  1. Na janela do Amazon EC2 Instance Connect, crie o arquivo de política copiando e colando esse documento de política em um arquivo chamado~/policy.json.

    Se você não tiver um editor do Linux de preferência, pode abrir nano usando o seguinte comando.

    nano ~/policy.json

    Cole o documento de política para policy.json nele. Pressione ctrl+x para sair do editor nano e salve o arquivo.

    Conteúdo do documento de política para policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect" ], "Resource": [ "*" ] } ] }
  2. Na janela do Amazon EC2 Instance Connect, crie sua política usando o comando a seguir.

    aws iot create-policy \ --policy-name "MyIotThingPolicy" \ --policy-document "file://~/policy.json"

    Saída:

    { "policyName": "MyIotThingPolicy", "policyArn": "arn:aws:iot:your-region:your-aws-account:policy/MyIotThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\", \"iot:Subscribe\", \"iot:Connect\" ], \"Resource\": [ \"*\" ] } ] }", "policyVersionId": "1" }
  3. Na janela do Amazon EC2 Instance Connect, anexe a política ao certificado do seu dispositivo virtual usando o comando a seguir.

    aws iot attach-policy \ --policy-name "MyIotThingPolicy" \ --target "certificateArn"

    Se obtiver êxito, esse comando não retornará nenhuma saída.

Instale o AWS IoT dispositivo SDK para JavaScript

Nesta seção, você instalará o AWS IoT Device SDK for JavaScript, que contém o código que os aplicativos podem usar para se comunicar AWS IoT e os programas de amostra. Para obter mais informações, consulte o AWS IoT Dispositivo SDK para JavaScript GitHub repositório.

Para instalar o AWS IoT dispositivo SDK JavaScript em sua instância Linux
  1. Na janela do Amazon EC2 Instance Connect, clone o AWS IoT dispositivo SDK para JavaScript repositório no aws-iot-device-sdk-js-v2 diretório do seu diretório inicial usando este comando.

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
  2. Navegue até o diretório aws-iot-device-sdk-js-v2 criado na etapa anterior.

    cd aws-iot-device-sdk-js-v2
  3. Use o npm para instalar o. SDK

    npm install

Executar os aplicativos de exemplo

Os comandos das próximas seções pressupõem que seus arquivos de chave e certificado estão armazenados em seu dispositivo virtual, conforme mostrado na seguinte tabela.

Nomes de arquivos de certificado

Arquivo

Caminho do arquivo

Chave privada

~/certs/private.pem.key

Certificado de dispositivo

~/certs/device.pem.crt

Certificado CA raiz

~/certs/Amazon-root-CA-1.pem

Nesta seção, você instalará e executará o aplicativo de pub-sub.js amostra encontrado no aws-iot-device-sdk-js-v2/samples/node diretório do AWS IoT Dispositivo SDK para JavaScript. Este aplicativo mostra como um dispositivo, sua EC2 instância da Amazon, usa a MQTT biblioteca para publicar e assinar MQTT mensagens. O aplicativo de exemplo pub-sub.js assina um tópico, topic_1, publica 10 mensagens no tópico e exibe as mensagens à medida que elas são recebidas do agente de mensagens.

Para instalar e executar o aplicativo de exemplo
  1. Na janela do Amazon EC2 Instance Connect, navegue até o aws-iot-device-sdk-js-v2/samples/node/pub_sub diretório que SDK criou e instale o aplicativo de amostra usando esses comandos.

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install
  2. Na sua janela do Amazon EC2 Instance Connect, obtenha your-iot-endpoint de AWS IoT usando esse comando.

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  3. Na janela do Amazon EC2 Instance Connect, insira your-iot-endpoint conforme indicado e execute este comando.

    node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint

O aplicativo de exemplo:

  1. Conecta-se AWS IoT Core à sua conta.

  2. Assina o tópico de mensagens topic_1 e exibe as mensagens recebidas sobre esse tópico.

  3. Publica 10 mensagens no tópico topic_1.

  4. Exibe uma saída semelhante à seguinte:

    Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":1} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":2} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":3} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":4} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":5} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":6} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":7} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":8} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":9} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":10}

Se você estiver com problemas para executar a aplicação de exemplo, examine Solucionar problemas com o aplicativo de amostra.

Também é possível adicionar o parâmetro --verbosity debug à linha de comando para que o aplicativo de exemplo exiba mensagens detalhadas sobre sua operação. Essas informações podem fornecer a ajuda necessária para você corrigir o problema.

Visualizar mensagens do aplicativo de exemplo no console do AWS IoT

Você pode ver as mensagens do aplicativo de amostra à medida que elas passam pelo agente de mensagens usando o cliente de MQTT teste no AWS IoT console.

Para ver as MQTT mensagens publicadas pelo aplicativo de amostra
  1. Consulte Exibir MQTT mensagens com o AWS IoT MQTT cliente. Isso ajuda você a aprender como usar o cliente de MQTT teste no AWS IoT console para visualizar MQTT as mensagens à medida que elas passam pelo agente de mensagens.

  2. Abra o cliente de MQTT teste no AWS IoT console.

  3. Em Assinar um tópico, assine o tópico topic_1.

  4. Na janela do Amazon EC2 Instance Connect, execute o aplicativo de amostra novamente e assista às mensagens no cliente de MQTT teste no AWS IoT console.

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint

Para obter mais informações sobre MQTT e como AWS IoT Core oferece suporte ao protocolo, consulte MQTT.