Configure los ajustes de IDT para ejecutar el conjunto de cualificación de AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configure los ajustes de IDT para ejecutar el conjunto de cualificación de AWS IoT Greengrass

Antes de ejecutar las pruebas, debe ajustar la configuración de las credenciales de AWS y los dispositivos en su equipo host.

Configuración de sus credenciales de AWS

Debe configurar sus credenciales de usuario de IAM en el archivo <device-tester-extract-location> /configs/config.json. Utilice las credenciales de IDT para el usuario de AWS IoT Greengrass creado en Cree y configure un Cuenta de AWS. Puede especificar sus credenciales de una de las dos formas siguientes:

  • Archivo de credenciales

  • Variables de entorno

IDT utiliza el mismo archivo de credenciales que la AWS CLI. Para obtener más información, consulte Archivos de configuración y credenciales.

La ubicación del archivo de credenciales varía en función del sistema operativo que utilice:

  • macOS, Linux: ~/.aws/credentials

  • Windows: C:\Users\UserName\.aws\credentials

Añada sus credenciales de AWS al archivo de credentials con el siguiente formato:

[default] aws_access_key_id = <your_access_key_id> aws_secret_access_key = <your_secret_access_key>

Para configurar IDT para AWS IoT Greengrass con el fin de usar las credenciales de AWS desde su archivo de credentials, edite su archivo config.json tal y como se indica a continuación:

{ "awsRegion": "us-west-2", "auth": { "method": "file", "credentials": { "profile": "default" } } }
nota

Si no utiliza el perfil default de AWS asegúrese de cambiar el nombre de perfil en su archivo config.json. Para obtener más información, consulte Perfiles con nombre.

Las variables de entorno son las variables que mantiene el sistema operativo y utilizan los comandos del sistema. No se guardan si cierra la sesión de SSH. IDT para AWS IoT Greengrass puede utilizar las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY para almacenar sus credenciales de AWS.

Para establecer estas variables en Linux, MacOS, o Unix, utilice export:

export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Para establecer estas variables en Windows, utilice set:

set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Para configurar IDT para utilizar las variables de entorno, edite la sección auth de su archivo config.json. A continuación se muestra un ejemplo:

{ "awsRegion": "us-west-2", "auth": { "method": "environment" } }

Configurar device.json

Además de las credenciales de AWS, IDT para AWS IoT Greengrass requiere información acerca de los dispositivos en los que se ejecutan pruebas (por ejemplo, dirección IP, información de inicio de sesión, sistema operativo y arquitectura de CPU).

Debe proporcionar esta información utilizando la plantilla device.json ubicada en <device_tester_extract_location>/configs/device.json:

Physical device
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "container", "value": "yes | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "yes | no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "container | process | both" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for HSI *************** "hsm": { "p11Provider": "/path/to/pkcs11ProviderLibrary", "slotLabel": "<slot_label>", "slotUserPin": "<slot_pin>", "privateKeyLabel": "<key_label>", "openSSLEngine": "/path/to/openssl/engine" }, ******************************************************************************************** *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
nota

Especifique privKeyPath solo si method está establecido en pki

Especifique password solo si method está establecido en password

Docker container
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64" }, { "name": "container", "value": "no" }, { "name": "docker", "value": "no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "process" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "docker", "containerId": "<container-name | container-id>", "containerUser": "<user>" } } ] } ]

Todos los campos que contienen valores son obligatorios tal y como se describe aquí:

id

Un ID alfanumérico definido por el usuario que identifica de forma única una colección de dispositivos que se conoce como grupo de dispositivos. Los dispositivos que pertenecen a un grupo deben tener idéntico hardware. Al ejecutar un conjunto de pruebas, los dispositivos del grupo se utilizan para paralelizar la carga de trabajo. Se utilizan varios dispositivos para ejecutar diferentes pruebas.

sku

Un valor alfanumérico que identifica de forma única el dispositivo a prueba. El SKU se utiliza para realizar un seguimiento de placas cualificadas.

nota

Si desea enumerar la placa en el catálogo de dispositivos de AWS Partner, el SKU que especifique aquí debe coincidir con el SKU que utilice en el proceso de publicación.

features

Una matriz que contenga las características compatibles del dispositivo. Todas las características son obligatorias.

os y arch

Combinaciones de sistemas operativos (SO) compatibles:

  • linux, x86_64

  • linux, armv6l

  • linux, armv7l

  • linux, aarch64

  • ubuntu, x86_64

  • openwrt, armv7l

  • openwrt, aarch64

nota

Si usa IDT para probar la ejecución de AWS IoT Greengrass en un contenedor de Docker, solo se admite la arquitectura Docker x86_64.

container

Valida que el dispositivo cumple todos los requisitos de software y hardware para ejecutar funciones de Lambda en modo contenedor en un núcleo de Greengrass.

El valor válido es yes o no.

docker

Valida que el dispositivo cumple todas las dependencias técnicas necesarias para utilizar el conector de implementación de aplicaciones de Greengrass Docker para ejecutar contenedores.

El valor válido es yes o no.

streamManagement

Valida que el dispositivo cumple todas las dependencias técnicas necesarias para ejecutar el administrador de transmisiones de AWS IoT Greengrass.

El valor válido es yes o no.

hsi

Verifica que la biblioteca compartida de HSI proporcionada pueda interactuar con el módulo de seguridad de hardware (HSM) y se implementan correctamente las API de PKCS#11 necesarias. La biblioteca HSM y compartida debe poder firmar una CSR, realizar las operaciones de TLS y proporcionar las longitudes de clave y el algoritmo de clave pública correctos.

El valor válido es yes o no.

ml

Valida que el dispositivo cumpla todas las dependencias técnicas necesarias para realizar la inferencia de ML localmente.

El valor válido puede ser cualquier combinación de mxnet, tensorflow, dlr y no (por ejemplo, mxnet, mxnet,tensorflow, mxnet,tensorflow,dlr o no).

mlLambdaContainerizationMode

Valida que el dispositivo cumple todas las dependencias técnicas necesarias para realizar la inferencia ML en modo contenedor en un dispositivo Greengrass.

El valor válido es container, process o both.

processor

Valida que el dispositivo cumpla con todos los requisitos de hardware del tipo de procesador especificado.

El valor válido es cpu o gpu.

nota

Si no quiere utilizar la característica container, docker, streamManager, hsi o ml, puede establecer el valor correspondiente value a no.

Docker solo admite la calificación de características para streamManagement y ml.

machineLearning

Opcional. Información de configuración para pruebas de cualificación ML. Para obtener más información, consulte Configurar device.json para cualificación de ML.

hsm

Opcional. Contiene información de configuración para realizar pruebas con un módulo de seguridad de hardware (HSM) de AWS IoT Greengrass. De lo contrario, la propiedad hsm debe omitirse. Para obtener más información, consulte Integración de la seguridad de hardware.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

hsm.p11Provider

La ruta absoluta a la biblioteca que puede cargar libdl de la implementación de PKCS#11.

hsm.slotLabel

La etiqueta de ranura que se utiliza para identificar el módulo de hardware.

hsm.slotUserPin

El PIN de usuario que se utiliza para autenticar el núcleo AWS IoT Greengrass en el módulo.

hsm.privateKeyLabel

Es la etiqueta que se utiliza para identificar la clave en el módulo de hardware.

hsm.openSSLEngine

La ruta absoluta al archivo .so del motor de OpenSSL que habilita la compatibilidad con PKCS#11 en OpenSSL. La utiliza el agente de actualización OTA de AWS IoT Greengrass.

devices.id

Un identificador único y definido por el usuario para el dispositivo que se está probando.

connectivity.protocol

El protocolo de comunicación que se usará para la comunicación con este dispositivo. Actualmente, los únicos valores que se admiten son ssh para dispositivos físicos y docker para contenedores de Docker.

connectivity.ip

La dirección IP del dispositivo que se está probando.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.containerId

El ID de contenedor o el nombre del contenedor de Docker que se está probando.

Esta propiedad solo se aplica si connectivity.protocol está establecido en docker.

connectivity.auth

Información de autenticación para la conexión.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.auth.method

El método de autenticación que se utiliza para acceder a un dispositivo a través de un determinado protocolo de conectividad.

Los valores admitidos son:

  • pki

  • password

connectivity.auth.credentials

Las credenciales que se utilizan para la autenticación.

connectivity.auth.credentials.password

La contraseña se utiliza para iniciar sesión en el dispositivo que se va a probar.

Este valor solo se aplica si connectivity.auth.method está establecido en password.

connectivity.auth.credentials.privKeyPath

La ruta completa a la clave privada que se utiliza para iniciar sesión en el dispositivo que se está probando.

Este valor solo se aplica si connectivity.auth.method está establecido en pki.

connectivity.auth.credentials.user

El nombre de usuario para iniciar sesión en el dispositivo que se está probando.

connectivity.auth.credentials.privKeyPath

La ruta completa a la clave privada que se utiliza para iniciar sesión en el dispositivo que se está probando.

connectivity.port

Opcional. El número de puerto a utilizar para las conexiones SSH.

El valor predeterminado es 22.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

greengrassLocation

La ubicación del software AWS IoT Greengrass Core en sus dispositivos.

En los dispositivos físicos, este valor solo se utiliza cuando se utiliza una instalación existente de AWS IoT Greengrass. Utilice este atributo para indicar a IDT que utilice la versión del software AWS IoT Greengrass Core instalado en sus dispositivos.

Al ejecutar pruebas en un contenedor de Docker a partir de una imagen de Docker o un Dockerfile proporcionado por AWS IoT Greengrass, establezca este valor en /greengrass.

kernelConfigLocation

Opcional. La ruta al archivo de configuración del kernel. AWS IoT Device Tester utiliza este archivo para comprobar si los dispositivos tienen habilitadas las características de kernel requeridas. Si no se especifica, IDT utiliza las siguientes rutas para buscar el archivo de configuración de kernel: /proc/config.gz y /boot/config-<kernel-version>. AWS IoT Device Tester utiliza la primera ruta que encuentra.

Configurar device.json para cualificación de ML

En esta sección se describen las propiedades opcionales del archivo de configuración del dispositivo que se aplican a la cualificación de ML. Si tiene previsto ejecutar pruebas para la cualificación de ML, debe definir las propiedades que se aplican a su caso de uso.

Puede utilizar la plantilla device-ml.json para definir los ajustes de configuración del dispositivo. Esta plantilla contiene las propiedades de ML opcionales. También puede usar device.json y agregar las propiedades de cualificación de ML. Estos archivos se encuentran en <device-tester-extract-location>/configs e incluyen propiedades de cualificación de ML. Si utiliza device-ml.json, debe cambiar el nombre del archivo a device.json antes de ejecutar pruebas de IDT.

Para obtener información acerca de las propiedades de configuración de dispositivos que no se aplican a la cualificación de ML, consulte Configurar device.json.

 

ml en la matriz features

Los marcos de ML que admite la placa. Esta propiedad requiere IDT v3.1.0 o una versión posterior.

  • Si la placa solo admite un marco, especifíquelo. Por ejemplo:

    { "name": "ml", "value": "mxnet" }
  • Si la placa admite varios marcos, especifique los marcos como lista separada por comas. Por ejemplo:

    { "name": "ml", "value": "mxnet,tensorflow" }
mlLambdaContainerizationMode en la matriz features

El modo de creación de contenedores con el que desea probar. Esta propiedad requiere IDT v3.1.0 o una versión posterior.

  • Elija process para ejecutar el código de inferencia de ML con una función de Lambda no en contenedor. Esta opción requiere AWS IoT Greengrass v1.10.x o posterior.

  • Elija container para ejecutar el código de inferencia ML con una función de Lambda en contenedor.

  • Elija both para ejecutar el código de inferencia ML con ambos modos. Esta opción requiere AWS IoT Greengrass v1.10.x o posterior.

processor en la matriz features

Indica el acelerador de hardware compatible con la placa. Esta propiedad requiere IDT v3.1.0 o una versión posterior.

  • Elija cpu si la placa utiliza una CPU como procesador.

  • Elija gpu si la placa utiliza una GPU como procesador.

machineLearning

Opcional. Información de configuración para pruebas de cualificación ML. Esta propiedad requiere IDT v3.1.0 o una versión posterior.

dlrModelPath

Necesario para usar el marco dlr. La ruta absoluta al directorio de modelo compilado DLR, que debe haberse denominado resnet18. Para obtener más información, consulte Compilar el modelo DLR.

nota

A continuación, se muestra una ruta de ejemplo en macOS: /Users/<user>/Downloads/resnet18.

environmentVariables

Una matriz de pares clave-valor que puede pasar dinámicamente la configuración a las pruebas de inferencia de ML. Opcional para dispositivos de CPU. Puede usar esta sección para agregar variables de entorno específicas del marco requeridas por el tipo de dispositivo. Para obtener información sobre estos requisitos, consulte el sitio web oficial del marco o el dispositivo. Por ejemplo, para ejecutar pruebas de inferencia de MXNet en algunos dispositivos, pueden ser necesarias las siguientes variables de entorno.

"environmentVariables": [ ... { "key": "PYTHONPATH", "value": "$MXNET_HOME/python:$PYTHONPATH" }, { "key": "MXNET_HOME", "value": "$HOME/mxnet/" }, ... ]
nota

El campo value puede variar en función de la instalación de MXNet.

Si está probando funciones de Lambda que se ejecutan con creación de contenedores en dispositivos GPU, agregue variables de entorno para la biblioteca de GPU. Esto permite que la GPU realice cálculos. Para utilizar diferentes bibliotecas de GPU, consulte la documentación oficial de la biblioteca o dispositivo.

nota

Configure las siguientes claves si la característica mlLambdaContainerizationMode está establecida en container o both.

"environmentVariables": [ { "key": "PATH", "value": "<path/to/software/bin>:$PATH" }, { "key": "LD_LIBRARY_PATH", "value": "<path/to/ld/lib>" }, ... ]
deviceResources

Requerido por los dispositivos de GPU. Contiene recursos locales a los que se puede acceder mediante funciones de Lambda. Utilice esta sección para agregar recursos de volumen y dispositivos locales.

  • Para recursos de dispositivo, especifique "type": "device". Para los dispositivos GPU, los recursos del dispositivo deben ser archivos de dispositivo relacionados con la GPU bajo /dev.

    nota

    El directorio /dev/shm es una excepción. Se puede configurar solo como un recurso de volumen.

  • Para recursos de volumen, especifique "type": "volume".