Crear un dispositivo virtual con Amazon EC2
En este tutorial, creará una instancia de Amazon EC2 para que sirva como dispositivo virtual en la nube.
Para completar este tutorial, se necesita una Cuenta de AWS. Si no la tiene, complete los pasos que se describen en Configuración de Cuenta de AWS antes de continuar.
En este tutorial, recorrerá los siguientes pasos:
Configurar una instancia de Amazon EC2
Los siguientes pasos le muestran cómo crear una instancia de Amazon EC2 que actuará como su dispositivo virtual en lugar de un dispositivo físico.
Si es la primera vez que crea una instancia de Amazon EC2, puede que las instrucciones de Introducción a las instancias de Amazon EC2Linux le resulten más útiles.
Cómo lanzar una instancia
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el menú de la consola de la izquierda, expanda la sección Instancias y elija Instancias. En el panel Instancias, seleccione Lanzar instancias a la derecha para ver una lista de configuraciones básicas.
-
En la sección Nombre y etiquetas, introduzca un nombre para la instancia y, si lo desea, agregue etiquetas.
-
En la sección Imágenes de aplicaciones y sistema operativo (Imagen de máquina de Amazon), elija una plantilla de AMI para la instancia, como la de Amazon Linux 2 AMI (HVM). Observe que estas AMI están marcadas como "Free tier eligible" (Apta para el nivel gratuito).
-
En la sección Tipo de instancia, puede seleccionar la configuración de hardware de su instancia. Seleccione el tipo
t2.micro, que es la opción predeterminada. Observe que este tipo de instancia es apta para la capa gratuita. -
En la sección Par de claves (inicio de sesión), elija un nombre de par de claves de la lista desplegable o elija Crear un nuevo par de claves para crear uno nuevo. Al crear un nuevo par de claves, asegúrese de descargar el archivo de clave privada y guardarlo en un lugar seguro, ya que es la única forma de descargarlo y guardarlo. Deberá proporcionar el nombre de su par de claves al lanzar una instancia, y la clave privada correspondiente cada vez que se conecte a dicha instancia.
aviso
No seleccione la opción Continuar sin un par de claves. Si lanza la instancia sin un par de claves, no podrá conectarse a ella.
-
En la sección Configuración de redes y en la sección Configurar el almacenamiento, puede conservar la configuración predeterminada. Cuando todo esté preparado, elija Lanzar instancias.
-
Verá una página de confirmación que indicará que la instancia se está lanzando. Elija View instances para cerrar la página de confirmación y volver a la consola.
-
Puede ver el estado del lanzamiento en la pantalla Instancias. La instancia tarda poco tiempo en lanzarse. Al lanzar una instancia, su estado inicial es
pending. Una vez iniciada la instancia, el estado cambia arunningy recibe un nombre del DNS público. (Si la columna DNS público (IPv4) está oculta, elija Mostrar/ocultar columnas (el icono con forma de engranaje) en la esquina superior derecha de la página y, a continuación, seleccione DNS público (IPv4)). -
Puede que transcurran unos minutos hasta que la instancia esté lista para conectarse a ella. Compruebe que la instancia haya superado las comprobaciones de estado; puede ver esta información en la columna Status Checks.
Cuando la nueva instancia haya superado las comprobaciones de estado, continúe con el siguiente procedimiento y conéctese a ella.
Para conectarse a la instancia
Puede conectarse a una instancia mediante el cliente basado en navegador seleccionando la instancia en la consola de Amazon EC2 y eligiendo conectarse mediante Amazon EC2 Instance Connect. Instance Connect gestiona los permisos y proporciona una conexión exitosa.
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el menú de la izquierda, seleccione Instancias.
-
Seleccione la instancia y elija Connect (Conectar).
-
Elija Amazon EC2 Instance Connect , Conectar.
Ahora debería ver una ventana Amazon EC2 Instance Connect conectada a su nueva instancia de Amazon EC2.
Instalar Git, Node.js y configurar la AWS CLI
En esta sección, instalará Git y Node.js en su instancia de Linux.
Para instalar Git
-
En la ventana Amazon EC2 Instance Connect, actualice la instancia mediante el siguiente comando.
sudo yum update -y -
En la ventana Amazon EC2 Instance Connect, instale Git mediante el siguiente comando.
sudo yum install git -y -
Para comprobar si Git está instalado y cuál es su versión actual, ejecute el siguiente comando:
git --version
Para instalar Node.js
-
En la ventana Amazon EC2 Instance Connect, instale el administrador de versiones de nodos (nvm) mediante el siguiente comando.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bashUtilizaremos nvm para instalar Node.js, ya que nvm puede instalar varias versiones de Node.js y permitirle alternar entre ellas.
-
En la ventana Amazon EC2 Instance Connect, active nvm mediante este comando.
. ~/.nvm/nvm.sh -
En la ventana Amazon EC2 Instance Connect, utilice nvm para instalar la última versión de Node.js mediante este comando.
nvm install 16nota
Esto instala la versión de LTS más reciente de Node.js.
Si instala Node.js también instalará el administrador de paquetes de nodos (npm) para poder instalar módulos adicionales según sea necesario.
-
En la ventana Amazon EC2 Instance Connect, compruebe que Node.js está instalado y se ejecuta correctamente mediante este comando.
node -e "console.log('Running Node.js ' + process.version)"Este tutorial requiere la versión Node v10.0 o posterior. Para obtener más información, consulte Tutorial: Configuración de Node.js en una instancia de Amazon EC2.
Para configurar AWS CLI
La instancia de Amazon EC2 viene precargada con la AWS CLI. Sin embargo, debe completar el perfil de su AWS CLI. Para obtener más información acerca de cómo configurar la CLI, consulte Configuración de la AWS CLI.
-
En el ejemplo siguiente se muestran los valores de ejemplo. Reemplácelos con valores propios. Puede encontrar estos valores en la consola de AWS, en la información de su cuenta, en la sección Credenciales de seguridad
. En la ventana Amazon EC2 Instance Connect, escriba este comando:
aws configureA continuación, introduzca los valores de su cuenta en las instrucciones que se muestran.
AWS Access Key ID [None]:AKIAIOSFODNN7EXAMPLEAWS Secret Access Key [None]:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]:us-west-2Default output format [None]:json -
Puede probar la configuración de la AWS CLI con este comando:
aws iot describe-endpoint --endpoint-type iot:Data-ATSSi la AWS CLI está configurada correctamente, el comando debería devolver una dirección de punto de conexión de su Cuenta de AWS.
Crear recursos de AWS IoT para su dispositivo virtual
En esta sección se describe cómo usar AWS CLI para crear el objeto y sus archivos de certificado directamente en el dispositivo virtual. Esto se hace directamente en el dispositivo para evitar las posibles complicaciones que podrían surgir al copiarlos al dispositivo desde otro ordenador. En esta sección, creará los siguientes recursos para su dispositivo virtual:
-
Un objeto en el que representar su dispositivo virtual en AWS IoT.
-
Un certificado para autenticar su dispositivo virtual.
-
Un documento de política para autorizar al dispositivo virtual a conectarse a AWS IoT, y para publicar, recibir y suscribirse a mensajes.
Para crear un objeto de AWS IoT en su instancia de Linux
Los dispositivos conectados a AWS IoT están representados por cosas en el registro de AWS IoT. Una cosa representa un dispositivo específico o una entidad lógica. En este caso, el objeto representará su dispositivo virtual, esta instancia de Amazon EC2.
-
En la ventana Amazon EC2 Instance Connect, ejecute el comando que se incluye a continuación para crear su objeto.
aws iot create-thing --thing-name "MyIotThing" -
El resultado JSON debe tener el siguiente aspecto:
{ "thingArn": "arn:aws:iot:your-region:your-aws-account:thing/MyIotThing", "thingName": "MyIotThing", "thingId": "6cf922a8-d8ea-4136-f3401EXAMPLE" }
Para crear y asociar claves y certificados de AWS IoT en su instancia de Linux
El comando create-keys-and-certificate
-
En la ventana Amazon EC2 Instance Connect, cree un directorio para almacenar los archivos de certificados y claves.
mkdir ~/certs -
En la ventana Amazon EC2 Instance Connect, descargue una copia del certificado de la autoridad de certificación (CA) de Amazon mediante este comando.
curl -o ~/certs/Amazon-root-CA-1.pem \ https://www.amazontrust.com/repository/AmazonRootCA1.pem -
En la ventana Amazon EC2 Instance Connect, ejecute el siguiente comando para crear los archivos de clave privada, clave pública y certificado X.509. Este comando también registra y activa el certificado con 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"La respuesta tiene este aspecto: Guarde
certificateArnpara poder utilizarlo en los comandos posteriores. Lo necesitará para asociar el certificado a su objeto y para asociar la política al certificado más adelante.{ "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" } } -
En la ventana Amazon EC2 Instance Connect, asocie su objeto al certificado que acaba de crear mediante el siguiente comando y
certificateArnen la respuesta del comando anterior.aws iot attach-thing-principal \ --thing-name "MyIotThing" \ --principal "certificateArn"Este comando no devuelve ningún resultado si se realiza correctamente.
Para crear y asociar una política a un usuario
-
En la ventana Amazon EC2 Instance Connect, cree el archivo de política copiando y pegando este documento de política en un archivo denominado
~/policy.json.Si no tiene un editor favorito de Linux, puede abrir nano con este comando.
nano ~/policy.jsonPegue el documento de política de
policy.jsonen él. Pulse Ctrl-X para salir del editor de nano y guardar el archivo.Contenido del documento de política de
policy.json. -
En la ventana Amazon EC2 Instance Connect, cree su política utilizando el siguiente comando.
aws iot create-policy \ --policy-name "MyIotThingPolicy" \ --policy-document "file://~/policy.json"Salida:
-
En la ventana Amazon EC2 Instance Connect, asocie la política al certificado de su dispositivo virtual mediante el siguiente comando.
aws iot attach-policy \ --policy-name "MyIotThingPolicy" \ --target "certificateArn"Este comando no devuelve ningún resultado si se realiza correctamente.
Instalación del SDK de dispositivos AWS IoT para JavaScript
En esta sección, instalará el SDK de dispositivos AWS IoT para JavaScript, que contiene el código que las aplicaciones pueden usar para comunicarse con AWS IoT y los programas de ejemplo. Para obtener más información, consulte el repositorio de GitHub del SDK de dispositivos AWS IoT para JavaScript
Para instalar el SDK de dispositivos AWS IoT para JavaScript en su instancia de Linux
-
En la ventana Amazon EC2 Instance Connect, clone el repositorio SDK de dispositivos AWS IoT para JavaScript en el directorio
aws-iot-device-sdk-js-v2de su directorio principal mediante este comando.cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git -
Vaya al directorio
aws-iot-device-sdk-js-v2que creó en el paso anterior.cd aws-iot-device-sdk-js-v2 -
Utilice npm para instalar el SDK.
npm install
Ejecutar la aplicación de ejemplo
Los comandos de las siguientes secciones suponen que los archivos de clave y certificado se almacenan en el dispositivo virtual, tal y como se muestra en esta tabla.
|
Archivos |
Ruta de archivo |
|---|---|
|
Clave privada |
|
|
Certificado de dispositivo |
|
|
Certificado de entidad de certificación raíz |
|
En esta sección, instalará y ejecutará la aplicación de ejemplo pub-sub.js que se encuentra en el directorio aws-iot-device-sdk-js-v2/samples/node del SDK de dispositivos AWS IoT para JavaScript. Esta aplicación muestra cómo un dispositivo, su instancia de Amazon EC2, utiliza la biblioteca de MQTT para publicar mensajes MQTT y suscribirse a ellos. La aplicación de pub-sub.js de ejemplo se suscribe a un tema,topic_1, publica 10 mensajes sobre ese tema y muestra los mensajes tal como los recibe del agente de mensajes.
Para instalar y ejecutar la aplicación de ejemplo
-
En la ventana Amazon EC2 Instance Connect, navegue hasta el directorio
aws-iot-device-sdk-js-v2/samples/node/pub_subque creó el SDK e instale la aplicación de ejemplo con estos comandos.cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install -
En la ventana Amazon EC2 Instance Connect, obtenga
your-iot-endpointde AWS IoT mediante este comando.aws iot describe-endpoint --endpoint-type iot:Data-ATS -
En la ventana Amazon EC2 Instance Connect, inserte
your-iot-endpointcomo se indica y ejecute 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 --endpointyour-iot-endpoint
La aplicación de ejemplo:
-
Se conecta a AWS IoT Core para su cuenta.
-
Se suscribe al tema de mensaje, topic_1, y muestra los mensajes que recibe sobre ese tema.
-
Publica 10 mensajes sobre el tema, topic_1.
-
Muestra una salida similar a la siguiente:
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}
Si tiene problemas para ejecutar la aplicación de ejemplo, revise Solución de problemas con la aplicación de ejemplo.
También puede agregar el parámetro --verbosity debug a la línea de comandos para que la aplicación de ejemplo muestre mensajes detallados sobre lo que está haciendo. Esa información podría proporcionarle la ayuda que necesita para corregir el problema.
Consultar los mensajes de la aplicación de ejemplo en la consola de AWS IoT
Puede ver los mensajes de la aplicación de ejemplo a medida que pasan por el agente de mensajes mediante el cliente de prueba de MQTT de la consola de AWS IoT.
Para ver los mensajes MQTT publicados por la aplicación de ejemplo
-
Consulte Ver los mensajes de MQTT con el cliente MQTT de AWS IoT. Esto le ayudará a aprender a utilizar el cliente de prueba de MQTT de la consola de AWS IoT para ver los mensajes MQTT a medida que pasan por el agente de mensajes.
-
Abra la opción Cliente de prueba de MQTT en la consola de AWS IoT.
-
En Suscribirse a un tema, suscríbase al tema topic_1.
-
En la ventana Amazon EC2 Instance Connect, vuelva a ejecutar la aplicación de ejemplo y observe los mensajes del cliente de prueba de MQTT de la consola de AWS IoT.
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 --endpointyour-iot-endpoint
Para obtener más información sobre MQTT y cómo AWS IoT Core admite con protocolo, consulte MQTT.