

Aviso de fin de soporte: el 7 de octubre de 2026, AWS suspenderemos el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visita [Migrar desde AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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 AWS IoT Greengrass cualificación
<a name="set-config"></a>

Antes de ejecutar las pruebas, debe configurar los ajustes de AWS las credenciales y los dispositivos del equipo host.

## Configure sus AWS credenciales
<a name="cfg-aws-gg"></a>

Debe configurar sus credenciales de usuario de IAM en el archivo `<device-tester-extract-location> /configs/config.json`. Utilice las credenciales del IDT del AWS IoT Greengrass usuario creado en[Cree y configure un Cuenta de AWS](dev-tst-prereqs.md#config-aws-account-for-idt). Puede especificar sus credenciales de una de las dos formas siguientes:
+ Archivo de credenciales
+ Variables de entorno

### Configure AWS las credenciales con un archivo de credenciales
<a name="config-cred-file"></a>

IDT utiliza el mismo archivo de credenciales que la AWS CLI. Para obtener más información, consulte [Configuración y archivos de credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html).

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 AWS credenciales al `credentials` archivo en el siguiente formato:

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

Para configurar IDT AWS IoT Greengrass para que utilice AWS las credenciales del `credentials` archivo, edítelo `config.json` de la siguiente manera:

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

**nota**  
Si no usa el `default` AWS perfil, asegúrese de cambiar el nombre del perfil en el `config.json` archivo. Para obtener más información, consulte [Perfiles con nombre](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).

### Configure AWS las credenciales con variables de entorno
<a name="config-env-vars"></a>

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 for AWS IoT Greengrass puede usar las variables de `AWS_SECRET_ACCESS_KEY` entorno `AWS_ACCESS_KEY_ID` y las variables de entorno para almacenar sus AWS credenciales.

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
<a name="device-config"></a>

Además de AWS las credenciales, IDT for AWS IoT Greengrass necesita información sobre los dispositivos en los que se ejecutan las pruebas (por ejemplo, la dirección IP, la información de inicio de sesión, el sistema operativo y la arquitectura de la 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.  
Si quieres incluir tu placa en el catálogo de AWS Partner dispositivos, el SKU que especifiques aquí debe coincidir con el SKU que utilices 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`
Si utilizas IDT para probar la AWS IoT Greengrass ejecución en un contenedor Docker, solo se admite la arquitectura Docker x86\$164.  
`container`  
<a name="description-container"></a>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`  
<a name="description-docker"></a>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`  
<a name="description-sm"></a>Valida que el dispositivo cumpla con todas las dependencias técnicas necesarias para ejecutar Stream Manager. AWS IoT Greengrass   
El valor válido es `yes` o `no`.  
`hsi`  
<a name="description-hsi"></a>Verifica que la biblioteca compartida HSI proporcionada pueda interactuar con el módulo de seguridad de hardware (HSM) e implementa correctamente el PKCS \$111 requerido. APIs 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`  
<a name="description-ml"></a>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`.
Si no quiere utilizar la característica `container`, `docker`, `streamManager`, `hsi` o `ml`, puede establecer el `value` correspondiente en `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](#device-json-ml-qualification).

`hsm`  
Opcional. Información de configuración para realizar pruebas con un módulo de seguridad AWS IoT Greengrass de hardware (HSM). De lo contrario, la propiedad `hsm` debe omitirse. Para obtener más información, consulte [Integración de la seguridad de hardware](hardware-security.md).  
<a name="connectivity-protocol-ssh-only"></a>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\$111.  
`hsm.slotLabel`  
La etiqueta de ranura que se utiliza para identificar el módulo de hardware.  
`hsm.slotUserPin`  
El PIN de usuario utilizado para autenticar el AWS IoT Greengrass núcleo 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\$111 en OpenSSL. Utilizado por el agente de actualización de la AWS IoT Greengrass OTA.

`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.  
<a name="connectivity-protocol-ssh-only"></a>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.  
<a name="connectivity-protocol-docker-only"></a>Esta propiedad solo se aplica si `connectivity.protocol` está establecido en `docker`.

`connectivity.auth`  
Información de autenticación para la conexión.  
<a name="connectivity-protocol-ssh-only"></a>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 que 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 que se va 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 principal en sus dispositivos.  
En el caso de 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 Docker a partir de una imagen de Docker o un Dockerfile proporcionados por AWS IoT Greengrass, establezca este valor en. `/greengrass`

`kernelConfigLocation`  
Opcional. La ruta al archivo de configuración del núcleo. AWS IoT Device Tester utiliza este archivo para comprobar si los dispositivos tienen habilitadas las funciones requeridas del núcleo. Si no se especifica, IDT utiliza las siguientes rutas para buscar el archivo de configuración del núcleo: `/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
<a name="device-json-ml-qualification"></a>

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](#device-config).

 

`ml` en la matriz `features`  
Los marcos de ML que admite la placa. <a name="idt-version-ml-qualification"></a>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](lambda-group-config.md#lambda-containerization-considerations) con el que desea probar. <a name="idt-version-ml-qualification"></a>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 que no esté en un contenedor. Esta opción requiere la AWS IoT Greengrass versión 1.10.x o posterior.
+ Elija `container` para ejecutar el código de inferencia ML con una función de Lambda en un contenedor.
+ Elija `both` para ejecutar el código de inferencia ML con ambos modos. Esta opción requiere la versión 1.10.x o AWS IoT Greengrass posterior.

`processor` en la matriz `features`  
Indica el acelerador de hardware compatible con la placa. <a name="idt-version-ml-qualification"></a>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. <a name="idt-version-ml-qualification"></a>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](idt-ml-qualification.md#ml-qualification-dlr-compile-model).  
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 MXNet inferencia en algunos dispositivos, es posible que se requieran las siguientes variables de entorno.  

```
"environmentVariables": [
    ...
    {
        "key": "PYTHONPATH",      
        "value": "$MXNET_HOME/python:$PYTHONPATH"    
    },
    {
        "key": "MXNET_HOME",
        "value": "$HOME/mxnet/"
    },
    ...
]
```
El `value` campo puede variar en función de la MXNet instalación.
Si está probando funciones de Lambda que se ejecutan con [creación de contenedores](lambda-group-config.md#lambda-containerization-considerations) 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.  
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](access-local-resources.md#lra-resource-types) 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"`.