Configuración de AWS IoT Greengrass Core - 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.

Configuración de AWS IoT Greengrass Core

Un núcleo AWS IoT Greengrass es una cosa (dispositivo) de AWS IoT que actúa como un concentrador o puerta de enlace en entornos de periferia. Al igual que ocurre con otros dispositivos AWS IoT, hay un núcleo en el registro, tiene una sombra de dispositivo y utiliza un certificado de dispositivo para la autenticación con AWS IoT Core y AWS IoT Greengrass. El dispositivo del núcleo ejecuta el software AWS IoT Greengrass Core, que le permite administrar los procesos locales de los grupos de Greengrass, como la comunicación, la sincronización de instantáneas y el intercambio de tokens.

El software AWS IoT Greengrass Core proporciona las siguientes funcionalidades:

  • Implementación y ejecución local de conectores y funciones de Lambda.

  • Procesa los flujos de datos de forma local con exportaciones automáticas a la Nube de AWS.

  • Mensajes MQTT a través de la red local entre dispositivos, conectores y funciones de Lambda mediante suscripciones administradas.

  • Mensajes MQTT entre AWS IoT y dispositivos, conectores y funciones de Lambda mediante suscripciones administradas.

  • Conexiones seguras entre los dispositivos y Nube de AWS mediante la autenticación y la autorización de dispositivos.

  • Sincronización de sombras locales de dispositivos. Las sombras se pueden configurar para sincronizarse con la Nube de AWS.

  • Acceso controlado a los recursos del dispositivo local y el volumen.

  • Implementación de modelos de machine learning entrenados en la nube para la ejecución de la inferencia local.

  • Detección automática de direcciones IP que permite a los dispositivos detectar el dispositivo principal de Greengrass.

  • Implementación central de la configuración de grupos nuevos o actualizados. Una vez descargados los datos de configuración, el dispositivo principal se reinicia automáticamente.

  • Actualizaciones de software seguras over-the-air (OTA) de funciones Lambda definidas por el usuario.

  • Almacenamiento seguro cifrado de los secretos locales y acceso controlado por conectores y funciones de Lambda.

Archivo de configuración de AWS IoT Greengrass Core

El archivo de configuración del software AWS IoT Greengrass Core es config.json. Se encuentra en el directorio /greengrass-root/config.

nota

greengrass-root representa la ruta donde está instalado el software de AWS IoT Greengrass Core en su dispositivo. Normalmente, este es el directorio /greengrass.

Si utiliza la opción Creación de grupo predeterminada de la consola AWS IoT Greengrass, el archivo config.json se implementa en el dispositivo principal en un estado de trabajo.

Para revisar el contenido de este archivo, ejecute el siguiente comando:

cat /greengrass-root/config/config.json

A continuación se muestra un ejemplo de un archivo config.json. Esta es la versión que se genera al crear el núcleo de la consola AWS IoT Greengrass.

GGC v1.11
{ "coreThing": { "caPath": "root.ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", "thingArn": "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix-ats.iot.region.amazonaws.com", "ggHost": "greengrass-ats.iot.region.amazonaws.com", "keepAlive": 600, "ggDaemonPort": 8000, "systemComponentAuthTimeout": 5000 }, "runtime": { "maxWorkItemCount": 1024, "maxConcurrentLimit": 25, "lruSize": 25, "mountAllBlockDevices": "no", "cgroup": { "useSystemd": "yes" } }, "managedRespawn": false, "crypto": { "principals": { "SecretsManager": { "privateKeyPath": "file:///greengrass/certs/hash.private.key" }, "IoTCertificate": { "privateKeyPath": "file:///greengrass/certs/hash.private.key", "certificatePath": "file:///greengrass/certs/hash.cert.pem" } }, "caPath": "file:///greengrass/certs/root.ca.pem" }, "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory", "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory" }

El archivo config.json admite las siguientes propiedades:

coreThing

Campo Descripción Notas
caPath

La ruta al CA raíz de AWS IoT del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.

certPath

La ruta al certificado de dispositivo del núcleo del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
keyPath La ruta de la clave privada del núcleo del directorio /greengrass-root/certs. Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT.

Busque el punto de conexión en la consola AWS IoT en Configuración o puede ejecutar el comando de CLI aws iot describe-endpoint --endpoint-type iot:Data-ATS.

Este comando devuelve el enlace de Amazon Trust Services (ATS). Para obtener más información, consulte la documentación sobre Autenticación del servidor.

ggHost El punto de enlace de AWS IoT Greengrass.

Esto es el punto de enlace de iotHost con el prefijo de host reemplazado por greengrass (por ejemplo, greengrass-ats.iot.region.amazonaws.com). Utilizar el mismo Región de AWS que iotHost.

iotMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación de MQTT con AWS IoT. Los valores válidos son 8883 o 443. El valor predeterminado es 8883. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
iotHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con AWS IoT. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
ggMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación MQTT a través de la red local. Los valores válidos son de 1024 a 65535. El valor predeterminado es 8883. Para obtener más información, consulte Configuración del puerto MQTT para mensajería local.
ggHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con el servicio de AWS IoT Greengrass. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
keepAlive Opcional. El periodo de MQTT KeepAlive en segundos. El intervalo válido está comprendido entre 30 y 1200 segundos. El valor predeterminado es 600.
networkProxy Opcional. Un objeto que define un servidor proxy al que se conectará. El servidor proxy puede ser HTTP o HTTPS. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
mqttOperationTimeout Opcional. Cantidad de tiempo (en segundos) para permitir que el núcleo de Greengrass complete una operación de publicación, suscripción o cancelación de suscripción en las conexiones MQTT con AWS IoT Core. El valor predeterminado es 5. El valor mínimo es 5.
ggDaemonPort Opcional. El número de puerto IPC principal de Greengrass.

Esta propiedad está disponible en la versión AWS IoT Greengrass 1.11.0 o posterior.

Los valores válidos están comprendidos entre 1024 y 65535. El valor predeterminado es 8000.

systemComponentAuthTimeout Opcional. Tiempo (en milisegundos) para permitir que el IPC principal de Greengrass complete la autenticación.

Esta propiedad está disponible en la versión AWS IoT Greengrass 1.11.0 o posterior.

Los valores válidos están comprendidos entre 500 y 5000. El valor predeterminado es 5000.

runtime

Campo Descripción Notas
maxWorkItemCuente

Opcional. El número máximo de elementos de trabajo que el daemon de Greengrass puede procesar a la vez. Se ignorarán los elementos de trabajo que superen ese límite.

Los componentes del sistema, las funciones de Lambda definidas por el usuario y los conectores comparten la cola de elementos de trabajo.

El valor predeterminado es 1024. El valor máximo está limitado por el hardware del dispositivo.

Aumentar este valor aumenta la memoria que AWS IoT Greengrass usa. Puede aumentar este valor si espera que su núcleo reciba un gran tráfico de mensajes MQTT.

maxConcurrentLimit

Opcional. Número máximo de trabajadores Lambda simultáneos sin fijar que puede tener el daemon Greengrass. Puede especificar un entero diferente para anular este parámetro.

El valor predeterminado es 25. El valor mínimo está definido por lruSize.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
mountAllBlockDispositivos Optional. Enables AWS IoT Greengrass to use bind mounts to mount all block devices into a container after setting up the OverlayFS.

Esta propiedad está disponible en la versión AWS IoT Greengrass 1.11.0 o posterior.

Los valores válidos son yes y no. El valor predeterminado es no.

Establezca este valor en yes si su directorio /usr no está por debajo de la jerarquía /.

postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or no. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

El crypto las propiedades que admiten el almacenamiento de claves privadas en un módulo de seguridad de hardware (HSM) a través de PKCS#11 y almacenamiento secreto local. Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad, Integración de la seguridad de hardware y Implementación de secretos en el núcleo de AWS IoT Greengrass. Se admiten las configuraciones de almacenamiento de claves privadas en HSM o en el sistema de archivos.

Campo Descripción Notas
caPath

La ruta absoluta al CA raíz de AWS IoT.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. La ruta absoluta al archivo .so del motor de OpenSSL para habilitar la compatibilidad con PKCS#11 en OpenSSL.

Debe ser una ruta a un archivo del sistema de archivos.

Esta propiedad es necesaria si está utilizando el agente de actualización OTA de Greengrass con seguridad de hardware. Para obtener más información, consulte Configuración de la compatibilidad con actualizaciones transparentes.

Proveedor de P11

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

Debe ser una ruta a un archivo del sistema de archivos.

slotLabel

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

Debe ajustarse a las especificaciones de etiqueta de PKCS#11.

slotUserPin

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

Debe tener permisos suficientes para realizar la firma C_Sign con las claves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
Certificado IoT. privateKeyPath

La ruta a la clave privada del núcleo.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

IoTCertificate  .certificatePath

La ruta absoluta al certificado de dispositivo del núcleo.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

MQTT ServerCertificate

Opcional. La clave privada que el núcleo utiliza en combinación con el certificado para que actúe como un servidor MQTT o la puerta de enlace.

MQTTServerCertificate . privateKeyPath

La ruta a la clave privada del servidor MQTT local.

Utilice este valor para especificar su propia clave privada para el servidor MQTT local.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

Si esta propiedad se omite, AWS IoT Greengrass rota la clave en función de la configuración de rotación. Si se especifica, el cliente es responsable de la rotación de la clave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implementación de secretos en el núcleo de AWS IoT Greengrass.
SecretsManager  .privateKeyPath

La ruta a la clave privada del administrador de secretos locales.

Solo se admite una clave RSA.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto. La clave privada se debe generar utilizando el mecanismo de rellenado PKCS#1 v1.5.

También se admiten las siguientes propiedades de configuración:

Campo Descripción Notas
mqttMaxConnectionRetryInterval

Opcional. El intervalo máximo (en segundos) entre los reintentos de conexión MQTT si se pierde la conexión.

Especifique este valor como un número entero sin firmar. El valor predeterminado es 60.

managedRespawn

Opcional. Indica que el agente de OTA debe ejecutar un código personalizado antes de una actualización.

Los valores válidos son true o false. Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

writeDirectory

Opcional. El directorio de escritura donde AWS IoT Greengrass crea todos los recursos de lectura y escritura.

Para obtener más información, consulte Configurar un directorio de escritura para AWS IoT Greengrass.

pidFileDirectory

Opcional. AWS IoT Greengrass almacena su ID de proceso (PID) en este directorio.

El valor predeterminado es /var/run.

Extended life versions

Las siguientes versiones del software de AWS IoT Greengrass Core se encuentran en la fase de vida útil prolongada. Esta información se incluye únicamente con fines de referencia.

GGC v1.10
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600, "systemComponentAuthTimeout": 5000 }, "runtime" : { "maxWorkItemCount" : 1024, "maxConcurrentLimit" : 25, "lruSize": 25, "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

El archivo config.json admite las siguientes propiedades:

coreThing

Campo Descripción Notas
caPath

La ruta al CA raíz de AWS IoT del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.

certPath

La ruta al certificado de dispositivo del núcleo del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
keyPath La ruta de la clave privada del núcleo del directorio /greengrass-root/certs. Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT.

Busque el punto de conexión en la consola AWS IoT en Configuración o puede ejecutar el comando de CLI aws iot describe-endpoint --endpoint-type iot:Data-ATS.

Este comando devuelve el enlace de Amazon Trust Services (ATS). Para obtener más información, consulte la documentación sobre Autenticación del servidor.

ggHost El punto de enlace de AWS IoT Greengrass.

Esto es el punto de enlace de iotHost con el prefijo de host reemplazado por greengrass (por ejemplo, greengrass-ats.iot.region.amazonaws.com). Utilizar el mismo Región de AWS que iotHost.

iotMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación de MQTT con AWS IoT. Los valores válidos son 8883 o 443. El valor predeterminado es 8883. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
iotHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con AWS IoT. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
ggMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación MQTT a través de la red local. Los valores válidos son de 1024 a 65535. El valor predeterminado es 8883. Para obtener más información, consulte Configuración del puerto MQTT para mensajería local.
ggHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con el servicio de AWS IoT Greengrass. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
keepAlive Opcional. El periodo de MQTT KeepAlive en segundos. El intervalo válido está comprendido entre 30 y 1200 segundos. El valor predeterminado es 600.
networkProxy Opcional. Un objeto que define un servidor proxy al que se conectará. El servidor proxy puede ser HTTP o HTTPS. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
mqttOperationTimeout Opcional. Cantidad de tiempo (en segundos) para permitir que el núcleo de Greengrass complete una operación de publicación, suscripción o cancelación de suscripción en las conexiones MQTT con AWS IoT Core.

Esta propiedad está disponible a partir de AWS IoT Greengrass v1.10.2.

El valor predeterminado es 5. El valor mínimo es 5.

runtime

Campo Descripción Notas
maxWorkItemContar

Opcional. El número máximo de elementos de trabajo que el daemon de Greengrass puede procesar a la vez. Se ignorarán los elementos de trabajo que superen ese límite.

Los componentes del sistema, las funciones de Lambda definidas por el usuario y los conectores comparten la cola de elementos de trabajo.

El valor predeterminado es 1024. El valor máximo está limitado por el hardware del dispositivo.

Aumentar este valor aumenta la memoria que AWS IoT Greengrass usa. Puede aumentar este valor si espera que su núcleo reciba un gran tráfico de mensajes MQTT.

maxConcurrentLimit

Opcional. Número máximo de trabajadores Lambda simultáneos sin fijar que puede tener el daemon Greengrass. Puede especificar un entero diferente para anular este parámetro.

El valor predeterminado es 25. El valor mínimo está definido por lruSize.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or no. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

El crypto las propiedades que admiten el almacenamiento de claves privadas en un módulo de seguridad de hardware (HSM) a través de PKCS#11 y almacenamiento secreto local. Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad, Integración de la seguridad de hardware y Implementación de secretos en el núcleo de AWS IoT Greengrass. Se admiten las configuraciones de almacenamiento de claves privadas en HSM o en el sistema de archivos.

Campo Descripción Notas
caPath

La ruta absoluta al CA raíz de AWS IoT.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. La ruta absoluta al archivo .so del motor de OpenSSL para habilitar la compatibilidad con PKCS#11 en OpenSSL.

Debe ser una ruta a un archivo del sistema de archivos.

Esta propiedad es necesaria si está utilizando el agente de actualización OTA de Greengrass con seguridad de hardware. Para obtener más información, consulte Configuración de la compatibilidad con actualizaciones transparentes.

Proveedor de P11

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

Debe ser una ruta a un archivo del sistema de archivos.

slotLabel

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

Debe ajustarse a las especificaciones de etiqueta de PKCS#11.

slotUserPin

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

Debe tener permisos suficientes para realizar la firma C_Sign con las claves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
Certificado de IoT. privateKeyPath

La ruta a la clave privada del núcleo.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

IoTCertificate  .certificatePath

La ruta absoluta al certificado de dispositivo del núcleo.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

MQTT ServerCertificate

Opcional. La clave privada que el núcleo utiliza en combinación con el certificado para que actúe como un servidor MQTT o la puerta de enlace.

MQTTServerCertificate . privateKeyPath

La ruta a la clave privada del servidor MQTT local.

Utilice este valor para especificar su propia clave privada para el servidor MQTT local.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

Si esta propiedad se omite, AWS IoT Greengrass rota la clave en función de la configuración de rotación. Si se especifica, el cliente es responsable de la rotación de la clave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implementación de secretos en el núcleo de AWS IoT Greengrass.
SecretsManager  .privateKeyPath

La ruta a la clave privada del administrador de secretos locales.

Solo se admite una clave RSA.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto. La clave privada se debe generar utilizando el mecanismo de rellenado PKCS#1 v1.5.

También se admiten las siguientes propiedades de configuración:

Campo Descripción Notas
mqttMaxConnectionRetryInterval

Opcional. El intervalo máximo (en segundos) entre los reintentos de conexión MQTT si se pierde la conexión.

Especifique este valor como un número entero sin firmar. El valor predeterminado es 60.

managedRespawn

Opcional. Indica que el agente de OTA debe ejecutar un código personalizado antes de una actualización.

Los valores válidos son true o false. Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

writeDirectory

Opcional. El directorio de escritura donde AWS IoT Greengrass crea todos los recursos de lectura y escritura.

Para obtener más información, consulte Configurar un directorio de escritura para AWS IoT Greengrass.

GGC v1.9
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

El archivo config.json admite las siguientes propiedades:

coreThing

Campo Descripción Notas
caPath

La ruta al CA raíz de AWS IoT del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.

certPath

La ruta al certificado de dispositivo del núcleo del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
keyPath La ruta de la clave privada del núcleo del directorio /greengrass-root/certs. Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT.

Busque el punto de conexión en la consola AWS IoT en Configuración o puede ejecutar el comando de CLI aws iot describe-endpoint --endpoint-type iot:Data-ATS.

Este comando devuelve el enlace de Amazon Trust Services (ATS). Para obtener más información, consulte la documentación sobre Autenticación del servidor.

ggHost El punto de enlace de AWS IoT Greengrass.

Esto es el punto de enlace de iotHost con el prefijo de host reemplazado por greengrass (por ejemplo, greengrass-ats.iot.region.amazonaws.com). Utilizar el mismo Región de AWS que iotHost.

iotMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación de MQTT con AWS IoT. Los valores válidos son 8883 o 443. El valor predeterminado es 8883. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
iotHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con AWS IoT. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
ggHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con el servicio de AWS IoT Greengrass. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
keepAlive Opcional. El periodo de MQTT KeepAlive en segundos. El intervalo válido está comprendido entre 30 y 1200 segundos. El valor predeterminado es 600.
networkProxy Opcional. Un objeto que define un servidor proxy al que se conectará. El servidor proxy puede ser HTTP o HTTPS. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.

runtime

Campo Descripción Notas
maxConcurrentLimit

Opcional. Número máximo de trabajadores Lambda simultáneos sin fijar que puede tener el daemon Greengrass. Puede especificar un entero diferente para anular este parámetro.

El valor predeterminado es 25. El valor mínimo está definido por lruSize.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or no. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

El objeto crypto se añade en v1.7.0. Introduce las propiedades que admiten el almacenamiento de claves privadas en un módulo de seguridad de hardware (HSM) a través de PKCS#11 y almacenamiento secreto local. Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad, Integración de la seguridad de hardware y Implementación de secretos en el núcleo de AWS IoT Greengrass. Se admiten las configuraciones de almacenamiento de claves privadas en HSM o en el sistema de archivos.

Campo Descripción Notas
caPath

La ruta absoluta al CA raíz de AWS IoT.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. La ruta absoluta al archivo .so del motor de OpenSSL para habilitar la compatibilidad con PKCS#11 en OpenSSL.

Debe ser una ruta a un archivo del sistema de archivos.

Esta propiedad es necesaria si está utilizando el agente de actualización OTA de Greengrass con seguridad de hardware. Para obtener más información, consulte Configuración de la compatibilidad con actualizaciones transparentes.

Proveedor de P11

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

Debe ser una ruta a un archivo del sistema de archivos.

slotLabel

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

Debe ajustarse a las especificaciones de etiqueta de PKCS#11.

slotUserPin

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

Debe tener permisos suficientes para realizar la firma C_Sign con las claves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
Certificado IoT. privateKeyPath

La ruta a la clave privada del núcleo.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

IoTCertificate  .certificatePath

La ruta absoluta al certificado de dispositivo del núcleo.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

MQTT ServerCertificate

Opcional. La clave privada que el núcleo utiliza en combinación con el certificado para que actúe como un servidor MQTT o la puerta de enlace.

MQTTServerCertificate . privateKeyPath

La ruta a la clave privada del servidor MQTT local.

Utilice este valor para especificar su propia clave privada para el servidor MQTT local.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

Si esta propiedad se omite, AWS IoT Greengrass rota la clave en función de la configuración de rotación. Si se especifica, el cliente es responsable de la rotación de la clave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implementación de secretos en el núcleo de AWS IoT Greengrass.
SecretsManager  .privateKeyPath

La ruta a la clave privada del administrador de secretos locales.

Solo se admite una clave RSA.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto. La clave privada se debe generar utilizando el mecanismo de rellenado PKCS#1 v1.5.

También se admiten las siguientes propiedades de configuración.

Campo Descripción Notas
mqttMaxConnectionRetryInterval

Opcional. El intervalo máximo (en segundos) entre los reintentos de conexión MQTT si se pierde la conexión.

Especifique este valor como un número entero sin firmar. El valor predeterminado es 60.

managedRespawn

Opcional. Indica que el agente de OTA debe ejecutar un código personalizado antes de una actualización.

Los valores válidos son true o false. Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

writeDirectory

Opcional. El directorio de escritura donde AWS IoT Greengrass crea todos los recursos de lectura y escritura.

Para obtener más información, consulte Configurar un directorio de escritura para AWS IoT Greengrass.

GGC v1.8
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

El archivo config.json admite las siguientes propiedades.

coreThing

Campo Descripción Notas
caPath

La ruta al CA raíz de AWS IoT del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.

certPath

La ruta al certificado de dispositivo del núcleo del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
keyPath La ruta de la clave privada del núcleo del directorio /greengrass-root/certs. Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT.

Busque el punto de conexión en la consola AWS IoT en Configuración o puede ejecutar el comando de CLI aws iot describe-endpoint --endpoint-type iot:Data-ATS.

Este comando devuelve el enlace de Amazon Trust Services (ATS). Para obtener más información, consulte la documentación sobre Autenticación del servidor.

ggHost El punto de enlace de AWS IoT Greengrass.

Esto es el punto de enlace de iotHost con el prefijo de host reemplazado por greengrass (por ejemplo, greengrass-ats.iot.region.amazonaws.com). Utilizar el mismo Región de AWS que iotHost.

iotMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación de MQTT con AWS IoT. Los valores válidos son 8883 o 443. El valor predeterminado es 8883. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
iotHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con AWS IoT. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
ggHttpPort Opcional. El número de puerto que se utiliza para crear las conexiones HTTPS con el servicio de AWS IoT Greengrass. Los valores válidos son 8443 o 443. El valor predeterminado es 8443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
keepAlive Opcional. El periodo de MQTT KeepAlive en segundos. El intervalo válido está comprendido entre 30 y 1200 segundos. El valor predeterminado es 600.
networkProxy Opcional. Un objeto que define un servidor proxy al que se conectará. El servidor proxy puede ser HTTP o HTTPS. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.

runtime

Campo Descripción Notas
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or no. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

El objeto crypto se añade en v1.7.0. Introduce las propiedades que admiten el almacenamiento de claves privadas en un módulo de seguridad de hardware (HSM) a través de PKCS#11 y almacenamiento secreto local. Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad, Integración de la seguridad de hardware y Implementación de secretos en el núcleo de AWS IoT Greengrass. Se admiten las configuraciones de almacenamiento de claves privadas en HSM o en el sistema de archivos.

Campo Descripción Notas
caPath

La ruta absoluta al CA raíz de AWS IoT.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. La ruta absoluta al archivo .so del motor de OpenSSL para habilitar la compatibilidad con PKCS#11 en OpenSSL.

Debe ser una ruta a un archivo del sistema de archivos.

Esta propiedad es necesaria si está utilizando el agente de actualización OTA de Greengrass con seguridad de hardware. Para obtener más información, consulte Configuración de la compatibilidad con actualizaciones transparentes.

Proveedor de P11

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

Debe ser una ruta a un archivo del sistema de archivos.

slotLabel

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

Debe ajustarse a las especificaciones de etiqueta de PKCS#11.

slotUserPin

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

Debe tener permisos suficientes para realizar la firma C_Sign con las claves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
Certificado IoT. privateKeyPath

La ruta a la clave privada del núcleo.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

IoTCertificate  .certificatePath

La ruta absoluta al certificado de dispositivo del núcleo.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

MQTT ServerCertificate

Opcional. La clave privada que el núcleo utiliza en combinación con el certificado para que actúe como un servidor MQTT o la puerta de enlace.

MQTTServerCertificate . privateKeyPath

La ruta a la clave privada del servidor MQTT local.

Utilice este valor para especificar su propia clave privada para el servidor MQTT local.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

Si esta propiedad se omite, AWS IoT Greengrass rota la clave en función de la configuración de rotación. Si se especifica, el cliente es responsable de la rotación de la clave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implementación de secretos en el núcleo de AWS IoT Greengrass.
SecretsManager  .privateKeyPath

La ruta a la clave privada del administrador de secretos locales.

Solo se admite una clave RSA.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto. La clave privada se debe generar utilizando el mecanismo de rellenado PKCS#1 v1.5.

También se admiten las siguientes propiedades de configuración:

Campo Descripción Notas
mqttMaxConnectionRetryInterval

Opcional. El intervalo máximo (en segundos) entre los reintentos de conexión MQTT si se pierde la conexión.

Especifique este valor como un número entero sin firmar. El valor predeterminado es 60.

managedRespawn

Opcional. Indica que el agente de OTA debe ejecutar un código personalizado antes de una actualización.

Los valores válidos son true o false. Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

writeDirectory

Opcional. El directorio de escritura donde AWS IoT Greengrass crea todos los recursos de lectura y escritura.

Para obtener más información, consulte Configurar un directorio de escritura para AWS IoT Greengrass.

GGC v1.7
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

El archivo config.json admite las siguientes propiedades:

coreThing

Campo Descripción Notas
caPath

La ruta al CA raíz de AWS IoT del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.

certPath

La ruta al certificado de dispositivo del núcleo del directorio /greengrass-root/certs.

Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
keyPath La ruta de la clave privada del núcleo del directorio /greengrass-root/certs. Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto crypto está presente.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT.

Busque el punto de conexión en la consola AWS IoT en Configuración o puede ejecutar el comando de CLI aws iot describe-endpoint --endpoint-type iot:Data-ATS.

Este comando devuelve el enlace de Amazon Trust Services (ATS). Para obtener más información, consulte la documentación sobre Autenticación del servidor.

ggHost El punto de enlace de AWS IoT Greengrass.

Esto es el punto de enlace de iotHost con el prefijo de host reemplazado por greengrass (por ejemplo, greengrass-ats.iot.region.amazonaws.com). Utilizar el mismo Región de AWS que iotHost.

iotMqttPort Opcional. El número de puerto que se va a utilizar para la comunicación de MQTT con AWS IoT. Los valores válidos son 8883 o 443. El valor predeterminado es 8883. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.
keepAlive Opcional. El periodo de MQTT KeepAlive en segundos. El intervalo válido está comprendido entre 30 y 1200 segundos. El valor predeterminado es 600.
networkProxy Opcional. Un objeto que define un servidor proxy al que se conectará. El servidor proxy puede ser HTTP o HTTPS. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.

runtime

Campo Descripción Notas
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or no. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

El objeto crypto, añadido en la v1.7.0, introduce las propiedades que admiten el almacenamiento de claves privadas en un módulo de seguridad de hardware (HSM) a través de PKCS#11 y almacenamiento secreto local. Para obtener más información, consulte Integración de la seguridad de hardware y Implementación de secretos en el núcleo de AWS IoT Greengrass. Se admiten las configuraciones de almacenamiento de claves privadas en HSM o en el sistema de archivos.

Campo Descripción Notas
caPath

La ruta absoluta al CA raíz de AWS IoT.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. La ruta absoluta al archivo .so del motor de OpenSSL para habilitar la compatibilidad con PKCS#11 en OpenSSL.

Debe ser una ruta a un archivo del sistema de archivos.

Esta propiedad es necesaria si está utilizando el agente de actualización OTA de Greengrass con seguridad de hardware. Para obtener más información, consulte Configuración de la compatibilidad con actualizaciones transparentes.

Proveedor de P11

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

Debe ser una ruta a un archivo del sistema de archivos.

slotLabel

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

Debe ajustarse a las especificaciones de etiqueta de PKCS#11.

slotUserPin

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

Debe tener permisos suficientes para realizar la firma C_Sign con las claves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
Certificado IoT. privateKeyPath

La ruta a la clave privada del núcleo.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

IoTCertificate  .certificatePath

La ruta absoluta al certificado de dispositivo del núcleo.

Debe ser el URI de un archivo de la forma: file:///absolute/path/to/file.

MQTT ServerCertificate

Opcional. La clave privada que el núcleo utiliza en combinación con el certificado para que actúe como un servidor MQTT o la puerta de enlace.

MQTTServerCertificate . privateKeyPath

La ruta a la clave privada del servidor MQTT local.

Utilice este valor para especificar su propia clave privada para el servidor MQTT local.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto.

Si esta propiedad se omite, AWS IoT Greengrass rota la clave en función de la configuración de rotación. Si se especifica, el cliente es responsable de la rotación de la clave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implementación de secretos en el núcleo de AWS IoT Greengrass.
SecretsManager  .privateKeyPath

La ruta a la clave privada del administrador de secretos locales.

Solo se admite una clave RSA.

Para el almacenamiento del sistema de archivos, debe ser un URI de archivo de la forma: file:///absolute/path/to/file.

Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 que especifica la etiqueta del objeto. La clave privada se debe generar utilizando el mecanismo de rellenado PKCS#1 v1.5.

También se admiten las siguientes propiedades de configuración:

Campo Descripción Notas
mqttMaxConnectionRetryInterval

Opcional. El intervalo máximo (en segundos) entre los reintentos de conexión MQTT si se pierde la conexión.

Especifique este valor como un número entero sin firmar. El valor predeterminado es 60.

managedRespawn

Opcional. Indica que el agente de OTA debe ejecutar un código personalizado antes de una actualización.

Los valores válidos son true o false. Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

writeDirectory

Opcional. El directorio de escritura donde AWS IoT Greengrass crea todos los recursos de lectura y escritura.

Para obtener más información, consulte Configurar un directorio de escritura para AWS IoT Greengrass.

GGC v1.6
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600, "mqttMaxConnectionRetryInterval": 60 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true, "writeDirectory": "/write-directory" }
nota

Si utiliza la opción Creación de grupo predeterminada de la consola AWS IoT Greengrass, el archivo config.json se implementa en el dispositivo principal en un estado de trabajo que especifica la configuración predeterminada.

El archivo config.json admite las siguientes propiedades:

Campo Descripción Notas
caPath

La ruta a la CA raíz de AWS IoT relativa al directorio /greengrass-root/certs.

Guarde el archivo en /greengrass-root/certs.

certPath

La ruta del certificado de AWS IoT Greengrass del núcleo del directorio /greengrass-root/certs.

Guarde el archivo en /greengrass-root/certs.
keyPath La ruta de la clave privada AWS IoT Greengrass del núcleo del directorio /greengrass-root/certs. Guarde el archivo en /greengrass-root/certs.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT. Busque esto en la consola AWS IoT en Configuración o puede ejecutar el comando de la CLI aws iot describe-endpoint.
ggHost El punto de enlace de AWS IoT Greengrass. Este valor usa el formato greengrass.iot.region.amazonaws.com. Usa la misma región que iotHost.
keepAlive El periodo de MQTT KeepAlive en segundos. Se trata de un valor opcional. El valor predeterminado es 600.
mqttMaxConnectionRetryInterval

El intervalo máximo (en segundos) entre los reintentos de conexión MQTT si se pierde la conexión.

Especifique este valor como un número entero sin firmar. Se trata de un valor opcional. El valor predeterminado es 60.

useSystemd Indica si su dispositivo usa systemd. Los valores válidos son yes o no. Ejecute el script check_ggc_dependencies en el Módulo 1 para comprobar si el dispositivo usa systemd.
managedRespawn

Una función de actualizaciones opcional over-the-air (OTA), que indica que el agente OTA debe ejecutar un código personalizado antes de una actualización.

Los valores válidos son true o false. Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

writeDirectory

El directorio de escritura donde AWS IoT Greengrass crea todos los recursos de lectura y escritura.

Se trata de un valor opcional. Para obtener más información, consulte Configurar un directorio de escritura para AWS IoT Greengrass.

GGC v1.5
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

El archivo config.json existe en /greengrass-root/config y contiene los parámetros siguientes:

Campo Descripción Notas
caPath

La ruta a la CA raíz de AWS IoT relativa a la carpeta /greengrass-root/certs.

Guarde el archivo en la carpeta /greengrass-root/certs.

certPath

La ruta del certificado de AWS IoT Greengrass del núcelo de la carpeta /greengrass-root/certs.

Guarde el archivo en la carpeta /greengrass-root/certs.
keyPath La ruta de la clave privada de AWS IoT Greengrass del núcleo de la carpeta /greengrass-root/certs. Guarde el archivo en la carpeta /greengrass-root/certs.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el dispositivo de núcleo AWS IoT Greengrass. Busque el ARN para su núcleo en la consola AWS IoT Greengrass en Núcleos o puede ejecutar el comando de CLI aws greengrass get-core-definition-version.
iotHost El punto de enlace de AWS IoT. Busque esto en la consola AWS IoT en Configuración o puede ejecutar el comando aws iot describe-endpoint.
ggHost El punto de enlace de AWS IoT Greengrass. Este valor usa el formato greengrass.iot.region.amazonaws.com. Usa la misma región que iotHost.
keepAlive El periodo de MQTT KeepAlive en segundos. Se trata de un valor opcional. El valor predeterminado es 600 segundos.
useSystemd Indica si su dispositivo usa systemd. Los valores válidos son yes o no. Ejecute el script check_ggc_dependencies en el Módulo 1 para comprobar si el dispositivo usa systemd.
managedRespawn

Una función de actualizaciones opcional over-the-air (OTA) que indica que el agente de OTA debe ejecutar un código personalizado antes de realizar una actualización.

Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

GGC v1.3
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

El archivo config.json existe en /greengrass-root/config y contiene los parámetros siguientes:

Campo Descripción Notas
caPath

La ruta a la CA raíz de AWS IoT relativa a la carpeta /greengrass-root/certs.

Guarde el archivo en la carpeta /greengrass-root/certs.

certPath

La ruta del certificado de AWS IoT Greengrass del núcelo de la carpeta /greengrass-root/certs.

Guarde el archivo en la carpeta /greengrass-root/certs.
keyPath La ruta de la clave privada de AWS IoT Greengrass del núcleo de la carpeta /greengrass-root/certs. Guarde el archivo en la carpeta /greengrass-root/certs.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el AWS IoT Greengrass del núcleo. Este valor se puede encontrar en la consola AWS IoT Greengrass, en la definición de su objeto de AWS IoT.
iotHost El punto de enlace de AWS IoT. Este valor se puede encontrar en la consola AWS IoT, en Configuración.
ggHost El punto de enlace de AWS IoT Greengrass. Este valor se puede encontrar en la consola AWS IoT, en Configuración con greengrass. como prefijo.
keepAlive El periodo de MQTT KeepAlive en segundos. Se trata de un valor opcional. El valor predeterminado es 600 segundos.
useSystemd Una marca binaria si el dispositivo usa systemd. Los valores son yes o no. Utilice el script de dependencias del Módulo 1 para comprobar si el dispositivo usa systemd.
managedRespawn

Una función de actualizaciones opcional over-the-air (OTA) que indica que el agente de OTA debe ejecutar un código personalizado antes de realizar una actualización.

Para obtener más información, consulte Actualizaciones de OTA para el software AWS IoT Greengrass Core.

GGC v1.1
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

El archivo config.json existe en /greengrass-root/config y contiene los parámetros siguientes:

Campo Descripción Notas
caPath

La ruta a la CA raíz de AWS IoT relativa a la carpeta /greengrass-root/certs.

Guarde el archivo en la carpeta /greengrass-root/certs.

certPath

La ruta del certificado de AWS IoT Greengrass del núcelo de la carpeta /greengrass-root/certs.

Guarde el archivo en la carpeta /greengrass-root/certs.
keyPath La ruta de la clave privada de AWS IoT Greengrass del núcleo de la carpeta /greengrass-root/certs. Guarde el archivo en la carpeta /greengrass-root/certs.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el AWS IoT Greengrass del núcleo. Este valor se puede encontrar en la consola AWS IoT Greengrass, en la definición de su objeto de AWS IoT.
iotHost El punto de enlace de AWS IoT. Este valor se puede encontrar en la consola AWS IoT, en Configuración.
ggHost El punto de enlace de AWS IoT Greengrass. Este valor se puede encontrar en la consola AWS IoT, en Configuración con greengrass. como prefijo.
keepAlive El periodo de MQTT KeepAlive en segundos. Se trata de un valor opcional. El valor predeterminado es 600 segundos.
useSystemd Una marca binaria si el dispositivo usa systemd. Los valores son yes o no. Utilice el script de dependencias del Módulo 1 para comprobar si el dispositivo usa systemd.
GGC v1.0

En AWS IoT Greengrass Core v1.0, config.json está implementado en greengrass-root/configuration.

{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

El archivo config.json existe en /greengrass-root/configuration y contiene los parámetros siguientes:

Campo Descripción Notas
caPath

La ruta a la CA raíz de AWS IoT relativa a la carpeta /greengrass-root/configuration/certs.

Guarde el archivo en la carpeta /greengrass-root/configuration/certs.

certPath

La ruta del certificado de AWS IoT Greengrass del núcelo de la carpeta /greengrass-root/configuration/certs.

Guarde el archivo en la carpeta /greengrass-root/configuration/certs.
keyPath La ruta de la clave privada de AWS IoT Greengrass del núcleo de la carpeta /greengrass-root/configuration/certs. Guarde el archivo en la carpeta /greengrass-root/configuration/certs.
thingArn El Nombre de recurso de Amazon (ARN) del objeto de AWS IoT que representa el AWS IoT Greengrass del núcleo. Este valor se puede encontrar en la consola AWS IoT Greengrass, en la definición de su objeto de AWS IoT.
iotHost El punto de enlace de AWS IoT. Este valor se puede encontrar en la consola AWS IoT, en Configuración.
ggHost El punto de enlace de AWS IoT Greengrass.

Este valor se puede encontrar en la consola AWS IoT, en Configuración con greengrass. como prefijo.

keepAlive El periodo de MQTT KeepAlive en segundos. Se trata de un valor opcional. El valor predeterminado es 600 segundos.
useSystemd Una marca binaria si el dispositivo usa systemd. Los valores son yes o no. Utilice el script de dependencias del Módulo 1 para comprobar si el dispositivo usa systemd.

Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz.

Los puntos de enlace de AWS IoT Core y AWS IoT Greengrass deben corresponder al tipo de certificado de entidad de certificación raíz del dispositivo. Si los puntos de enlace y el tipo de certificado no coinciden, se produce un error en los intentos de autenticación entre el dispositivo y AWS IoT Core o AWS IoT Greengrass. Para obtener más información, consulte Autenticación del servidor en la Guía del desarrollador de AWS IoT.

Si su dispositivo utiliza un certificado CA raíz de Amazon Trust Services (ATS), que es el método preferido, también deberá utilizar puntos de conexión ATS para las operaciones del plano de datos de administración y descubrimiento de dispositivos. Los puntos de enlace de ATS incluyen el segmento ats, como se muestra en la siguiente sintaxis del punto de enlace de AWS IoT Core.

prefix-ats.iot.region.amazonaws.com
nota

Por motivos de compatibilidad con versiones anteriores, AWS IoT Greengrass actualmente es compatible con los certificados de CA VeriSign raíz y los puntos de conexión antiguos en algunos casosRegión de AWS. Si utiliza un certificado de CA VeriSign raíz heredado, le recomendamos que cree un punto de conexión ATS y, en su lugar, utilice un certificado de CA raíz de ATS. De lo contrario, asegúrese de utilizar los puntos de enlace heredados correspondientes. Para obtener más información, consulte Puntos de enlace heredados admitidos en la Referencia general de Amazon Web Services.

Puntos de enlace en config.json

En un dispositivo central de Greengrass, los puntos de enlace se especifican en el objeto coreThing del archivo config.json. La propiedad iotHost representa el punto de enlace de AWS IoT Core. La propiedad ggHost representa el punto de enlace de AWS IoT Greengrass. En el siguiente fragmento de código de ejemplo, estas propiedades especifican puntos de enlace de ATS.

{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
Punto de enlace de AWS IoT Core

Para obtener su punto de enlace de AWS IoT Core, ejecute el comando aws iot describe-endpoint de la CLI con el parámetro --endpoint-type adecuado.

  • Para devolver un punto de enlace firmado por ATS, ejecute:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  • Para devolver un punto final VeriSign firmado heredado, ejecuta:

    aws iot describe-endpoint --endpoint-type iot:Data
Punto de enlace de AWS IoT Greengrass

Su punto de enlace de AWS IoT Greengrass es su punto de enlace iotHost con el prefijo de host reemplazado por greengrass. Por ejemplo, el punto de enlace firmado por ATS es greengrass-ats.iot.region.amazonaws.com. Utiliza la misma región que el punto de enlace de AWS IoT Core.

Realizar la conexión en el puerto 443 o a través de un proxy de red

Esta característica está disponible para AWS IoT Greengrass Core versión 1.7 y posteriores.

Los núcleos de Greengrass se comunican con AWS IoT Core utilizando el protocolo de mensajería MQTT con autenticación de cliente TLS. Convencionalmente, MQTT sobre TLS utiliza el puerto 8883. Sin embargo, como medida de seguridad, los entornos restrictivos podrían limitar el tráfico de entrada y salida a un pequeño rango de puertos TCP. Por ejemplo, el firewall de una compañía podría abrir el puerto 443 para el tráfico HTTPS, pero cerrar otros puertos que se utilizan para protocolos menos frecuentes, como, por ejemplo, el puerto 8883 para tráfico MQTT. Otros entornos restrictivos podrían requerir que todo el tráfico pase a través de un proxy HTTP antes de conectarse a Internet.

Para habilitar la comunicación en estos casos, AWS IoT Greengrass permite las siguientes configuraciones:

  • MQTT con autenticación del cliente de TLS a través del puerto 443. Si su red permite realizar conexiones al puerto 443, puede configurar el núcleo para usar el puerto 443 para tráfico MQTT en lugar del puerto predeterminado 8883. Esto puede ser una conexión directa al puerto 443 o una conexión a través de un servidor proxy de red.

    AWS IoT Greengrass utiliza la extensión TLS red de protocolo de capa de aplicación (ALPN) para habilitar esta conexión. Como en el caso de la configuración predeterminada, MQTT sobre TLS en el puerto 443 utiliza la autenticación de cliente basada en certificados.

    Cuando se configura para usar una conexión directa al puerto 443, el núcleo admite actualizaciones de AWS IoT Greengrass software over-the-air (OTA). Esta compatibilidad requiere AWS IoT Greengrass Core v1.9.3 o posterior.

  • Comunicación HTTPS a través del puerto 443. AWS IoT Greengrass envía el tráfico HTTPS a través del puerto 8443 de forma predeterminada, pero puede configurarlo para que utilice el puerto 443.

  • Conexión a través de un proxy de red. Puede configurar un servidor proxy de red para que actúe como intermediario para conectarse al núcleo de Greengrass. Solo se admiten la autenticación básica y los proxies HTTP y HTTPS.

    La configuración del proxy se transfiere a funciones de Lambda definidas por el usuario a través de las variables de entorno http_proxy, https_proxy, y no_proxy. Las funciones de Lambda definidas por el usuario deben utilizar estos ajustes de transferencia para conectarse a través del proxy. Las bibliotecas comunes utilizadas por las funciones de Lambda para establecer la conexión (como boto3 o cURL y los paquetes requests de python) suelen utilizar estas variables de entorno de forma predeterminada. Si una función de Lambda especifica también estas mismas variables de entorno, AWS IoT Greengrass no las invalida.

    importante

    Los núcleos de Greengrass que están configurados para usar un proxy de red no admiten actualizaciones OTA.

Para configurar MQTT a través del puerto 443

Esta característica requiere AWS IoT Greengrass Core versión 1.7 o posterior.

Este procedimiento permite que el núcleo de Greengrass utilice el puerto 443 para la mensajería MQTT con AWS IoT Core.

  1. Ejecute el siguiente comando para detener el daemon de Greengrass.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editarlo como usuario.

  3. En el objeto coreThing, añada la propiedad iotMqttPort y establezca el valor en 443, tal y como se muestra en el siguiente ejemplo.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotMqttPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... }
  4. Inicie el daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Para configurar HTTPS a través del puerto 443

Esta característica requiere AWS IoT Greengrass Core versión 1.8 o posterior.

Este procedimiento configura el núcleo para usar el puerto 443 para la comunicación HTTPS.

  1. Ejecute el siguiente comando para detener el daemon de Greengrass.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editarlo como usuario.

  3. En el objeto coreThing, añada las propiedades iotHttpPort e ggHttpPort, tal y como se muestra en el siguiente ejemplo.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotHttpPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggHttpPort" : 443, "keepAlive" : 600 }, ... }
  4. Inicie el daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Para configurar un proxy de red

Esta característica requiere AWS IoT Greengrass Core versión 1.7 o posterior.

Este procedimiento permite a AWS IoT Greengrass conectarse a Internet a través de un proxy de red HTTP o HTTPS.

  1. Ejecute el siguiente comando para detener el daemon de Greengrass.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editarlo como usuario.

  3. En el objeto coreThing, añada el objeto networkProxy, tal y como se muestra en el siguiente ejemplo.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600, "networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } } }, ... }
  4. Inicie el daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

Objeto networkProxy

Utilice el objeto networkProxy para especificar información sobre el proxy de red. Este objeto incluye las siguientes propiedades.

Campo Descripción
noProxyAddresses

Opcional. Una lista separada por comas de direcciones IP o nombres de host que están exentos del proxy.

proxy

El proxy al que conectar. Un proxy tiene las siguientes propiedades.

  • url. La dirección URL del servidor proxy, en el formato scheme://userinfo@host:port.

    • scheme. El esquema. Debe ser http o https.

    • userinfo. Opcional. La información de nombre de usuario y contraseña. Si se especifica, los campos username y password se omiten.

    • host. Nombre de host o dirección IP del servidor proxy.

    • port. Opcional. El número de puerto. Si no se especifica, se usarán los valores predeterminados siguientes:

      • http: 80

      • https: 443

  • username. Opcional. El nombre de usuario que utilizar para autenticarse al servidor proxy.

  • password. Opcional. La contraseña que utilizar para autenticarse al servidor proxy.

Permitir puntos de enlace

La comunicación entre los dispositivos Greengrass y AWS IoT Core o AWS IoT Greengrass debe autenticarse. Esta autenticación se basa en certificados de dispositivo X.509 registrados y claves criptográficas. Para permitir que las solicitudes autenticadas se transmitan a través de proxies sin cifrado adicional, permita los puntos de enlace siguientes.

punto de enlace Puerto Descripción
greengrass.region.amazonaws.com 443

Se utiliza para las operaciones del plano de control para la administración de grupos.

prefix-ats.iot.region.amazonaws.com

o

prefix.iot.region.amazonaws.com

MQTT: 8883 o 443

HTTPS: 8443 o 443

Se utiliza para las operaciones del plano de datos para la administración de dispositivos, como la sincronización de sombras.

Permita el uso uno o ambos puntos de conexión, en función de si el núcleo y los dispositivos cliente utilizan certificados de entidad de certificación raíz de Amazon Trust Services (opción preferida), certificados de entidad de certificación raíz antiguos o ambos. Para obtener más información, consulte Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz..

greengrass-ats.iot.region.amazonaws.com

o

greengrass.iot.region.amazonaws.com

8443 o 443

Se utiliza para las operaciones de detección de dispositivos.

Permita el uso uno o ambos puntos de conexión, en función de si el núcleo y los dispositivos cliente utilizan certificados de entidad de certificación raíz de Amazon Trust Services (opción preferida), certificados de entidad de certificación raíz antiguos o ambos. Para obtener más información, consulte Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz..

nota

Los clientes que se conecten por el puerto 443 deben implementar la extensión TLS de Negociación de Protocolo de Capa de Aplicación (ALPN) y pasar x-amzn-http-ca como el ProtocolName en el ProtocolNameList. Para obtener más información, consulte Protocolos en la Guía para desarrolladores de AWS IoT.

*.s3.amazonaws.com 443

Se utiliza para las operaciones de implementación y over-the-air las actualizaciones. Este formato incluye el carácter *, porque los prefijos de punto de enlace se controlan internamente y pueden cambiar en cualquier momento.

logs.region.amazonaws.com 443

Obligatorio si el grupo de Greengrass está configurado para escribir los registros en CloudWatch.

Configurar un directorio de escritura para AWS IoT Greengrass

Esta característica está disponible para AWS IoT Greengrass Core versión 1.6 y posteriores.

De forma predeterminada, el software de AWS IoT Greengrass Core se implementa en un solo directorio raíz donde AWS IoT Greengrass realiza todas las operaciones de lectura y escritura. Sin embargo, puede configurar AWS IoT Greengrass para que utilice un directorio independiente para todas las operaciones de escritura, incluida la creación de directorios y archivos. En este caso, AWS IoT Greengrass utiliza dos directorios de nivel superior:

  • El directorio greengrass-root, que puede dejar como lectura-escritura o, si lo desea, solo lectura. Contiene el software de AWS IoT Greengrass Core y otros componentes fundamentales que deben permanecer inmutables durante el tiempo de ejecución, como los certificados y config.json.

  • El directorio de escritura especificado. Contiene contenido con permiso de escritura, como registros, información de estado y funciones de Lambda implementadas, definidas por el usuario.

Esta configuración da como resultado la siguiente estructura de directorios.

Directorio raíz de Greengrass
greengrass-root/ |-- certs/ | |-- root.ca.pem | |-- hash.cert.pem | |-- hash.private.key | |-- hash.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |-- package-version/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version.html | |-- runtime/ | |-- java8/ | |-- nodejs8.10/ | |-- python3.8/ | |-- core/
Directorio de escritura
write-directory/ |-- packages/ | |-- package-version/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/

 

Para configurar un directorio de escritura
  1. Ejecute el siguiente comando para detener el daemon de AWS IoT Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editarlo como usuario.

  3. Añada writeDirectory como parámetro y especifique la ruta al directorio de destino, tal y como se muestra en el siguiente ejemplo.

    { "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/write-directory" }
    nota

    Puede actualizar la configuración writeDirectory tantas veces como desee. Después de actualizar la configuración, AWS IoT Greengrass utiliza el directorio de escritura recién especificado en el siguiente inicio, pero no migra contenido desde el directorio de escritura anterior.

  4. Ahora que el directorio de escritura está configurado, tiene la opción de hacer que el directorio greengrass-root sea de solo lectura. Para obtener instrucciones, consulte Cómo hacer que el directorio raíz de Greengrass sea de solo lectura.

    De lo contrario, inicie el daemon de AWS IoT Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Para hacer que el directorio raíz de Greengrass sea de solo lectura

Siga estos pasos solo si desea hacer el directorio raíz de Greengrass de solo lectura. El directorio de escritura debe estar configurado antes de comenzar.

  1. Conceda permisos de acceso a directorios necesarios:

    1. Otorgue permisos de lectura y escritura al propietario de config.json.

      sudo chmod 0600 /greengrass-root/config/config.json
    2. Haga a ggc_user el propietario de los certificados y los directorios Lambda del sistema.

      sudo chown -R ggc_user:ggc_group /greengrass-root/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root/ggc/packages/1.11.6/lambda/
      nota

      Las cuentas ggc_user y ggc_group se utilizan de forma predeterminada para ejecutar funciones de Lambda del sistema. Si ha configurado la identidad de acceso predeterminada de nivel de grupo para utilizar distintas cuentas, debe proporcionar permisos a dicho usuario (UID) y grupo (GID) en su lugar.

  2. Haga que el directorio raíz greengrass-root sea de solo lectura empleando el mecanismo que prefiera.

    nota

    Una forma para que el directorio raíz greengrass-root sea de solo lectura es montar el directorio como de solo lectura. Sin embargo, para aplicar las actualizaciones over-the-air (OTA) al software AWS IoT Greengrass principal de un directorio montado, primero se debe desmontar el directorio y volver a montarlo después de la actualización. Puede añadir estas operaciones umount y mount a los scripts ota_pre_update y ota_post_update. Para obtener más información sobre las actualizaciones OTA, consulte Agente de actualización de OTA para Greengrass y Regeneración administrada con actualizaciones OTA.

  3. Inicie el daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

    Si los permisos del paso 1 no están establecidos correctamente, el daemon no se iniciará.

Configuración de MQTT

En el entorno de AWS IoT Greengrass, los dispositivos cliente locales, las funciones de Lambda, los conectores y los componentes del sistema pueden comunicarse entre sí y con AWS IoT Core. Toda la comunicación pasa por el núcleo, que gestiona las suscripciones que autorizan la comunicación MQTT entre entidades.

Para obtener información sobre la configuración de MQTT para la que puede configurar AWS IoT Greengrass, consulte las siguientes secciones:

nota

OPC-UA es un estándar de intercambio de información para la comunicación industrial. Para implementar el soporte para OPC-UA en el núcleo de Greengrass, puede usar el conector IoT. SiteWise El conector envía datos de dispositivos industriales desde servidores de OPC-UA a propiedades de recursos en AWS IoT SiteWise.

Mensaje de calidad del servicio

AWS IoT Greengrass admite niveles de calidad de servicio (QoS) 0 o 1, dependiendo de su configuración y del destino y la dirección de la comunicación. El núcleo de Greengrass actúa como cliente para la comunicación con AWS IoT Core y como agente de mensajes para la comunicación en la red local.

El núcleo como cliente y agente de mensajes local.

Para obtener más información sobre MQTT y QoS, consulte Introducción en el sitio web de MQTT.

Comunicación con el Nube de AWS
  • Los mensajes salientes usan QoS 1

    El núcleo envía mensajes destinados a los destinos de Nube de AWS mediante QoS 1. AWS IoT Greengrass utiliza una cola de mensajes MQTT para procesar estos mensajes. Si AWS IoT no confirma la entrega de mensajes, el mensaje se pone en cola para intentarlo más tarde. No se puede volver a intentar enviar el mensaje si la cola está llena. La confirmación de entrega del mensaje puede ayudar a minimizar la pérdida de datos provocada por la conectividad intermitente.

    Como los mensajes salientes a AWS IoT utilizan QoS 1, la velocidad máxima a la que el núcleo de Greengrass puede enviar mensajes depende de la latencia entre el núcleo y AWS IoT. Cada vez que el núcleo envía un mensaje, espera a que AWS IoT confirme el mensaje antes de enviar el siguiente mensaje. Por ejemplo, si el tiempo de ida y vuelta entre el núcleo y su Región de AWS es de 50 milisegundos, el núcleo puede enviar hasta 20 mensajes por segundo. Tenga en cuenta este comportamiento al elegir la Región de AWS donde se conecta el núcleo. Para transferir datos de IoT de gran volumen a la Nube de AWS, puede usar el administrador de secuencias.

    Para obtener más información sobre la cola de mensajes MQTT, incluyendo cómo configurar una caché de almacenamiento local que pueda persistir los mensajes destinados a los objetivos Nube de AWS, consulte Cola de mensajes MQTT para objetivos en la nube.

  • Los mensajes entrantes usan QoS 0 (predeterminado) o QoS 1

    De forma predeterminada, el núcleo se suscribe con QoS 0 a mensajes de fuentes de la Nube de AWS. Si habilita sesiones persistentes, el núcleo se suscribe con QoS 1. Esto puede ayudar a minimizar la pérdida de datos debido a la conectividad intermitente. Para administrar la QoS para estas suscripciones, configure la configuración de persistencia en el componente del sistema de cola de impresión local.

    Para obtener más información, incluida la forma de habilitar el núcleo para establecer una sesión persistente con los destinos de la Nube de AWS, consulte Sesiones persistentes de MQTT con AWS IoT Core.

Comunicación con objetivos locales

Todas las comunicaciones locales usan QoS 0. El núcleo intenta enviar un mensaje a un destino local, que puede ser una función de Lambda de Greengrass, un conector o un dispositivo cliente. El núcleo no almacena mensajes ni confirma entrega. Los mensajes se pueden dejar en cualquier lugar entre los componentes.

nota

Aunque la comunicación directa entre funciones de Lambda no utiliza mensajería MQTT, el comportamiento es el mismo.

Cola de mensajes MQTT para objetivos en la nube

Los mensajes MQTT que se destinan a destinos en la Nube de AWS se ponen en la cola a la espera de procesamiento. Los mensajes en la cola se procesan siguiendo el orden primero en entrar, primero en salir (FIFO). Después de procesar un mensaje y publicarlo en AWS IoT Core, el mensaje se elimina de la cola.

Por defecto, el núcleo Greengrass almacena en memoria los mensajes no procesados destinados a los objetivos en la Nube de AWS. En su lugar, puede configurar el núcleo para almacenar mensajes sin procesar en una caché de almacenamiento local. A diferencia del almacenamiento en memoria, el almacenamiento en caché local tiene la capacidad de persistir a través de reinicios del núcleo (por ejemplo, después de la implementación de un grupo o reinicio de un dispositivo), por lo que AWS IoT Greengrass puede continuar procesando mensajes. También puede configurar el tamaño del almacenamiento.

aviso

El núcleo de Greengrass puede poner en cola los mensajes MQTT duplicados cuando pierde la conexión, ya que vuelve a intentar una operación de publicación antes de que el cliente MQTT detecte que está desconectado. Para evitar la duplicación de mensajes MQTT para los destinos en la nube, configure el valor del núcleo en menos de la keepAlive mitad de su valor mqttOperationTimeout. Para obtener más información, consulte Archivo de configuración de AWS IoT Greengrass Core.

AWS IoT Greengrass utiliza el componente del sistema de cola de impresión (la función de Lambda GGCloudSpooler) para administrar la cola de mensajes. Puede utilizar las siguientes variables de entorno GGCloudSpooler para configurar los valores de almacenamiento.

  • GG_CONFIG_STORAGE_TYPE. La ubicación de la cola de mensajes. Los siguientes valores son válidos:

    • FileSystem. Almacene mensajes sin procesar en la caché de almacenamiento local en el disco del dispositivo central físico. Cuando el núcleo se reinicia, se conservan los mensajes que hay en cola a la espera de procesamiento. Los mensajes se eliminan después de que se procesan.

    • Memory (predeterminada). Almacena los mensajes sin procesar en la memoria. Cuando el núcleo se reinicia, los mensajes en la cola se pierden.

      Esta opción está optimizada para dispositivos con capacidades limitadas de hardware. Si se utiliza esta configuración, le recomendamos que implemente grupos o reinicie el dispositivo en un momento en el que la interrupción del servicio sea mínima.

  • GG_CONFIG_MAX_SIZE_BYTES. El tamaño de almacenamiento en bytes. Este valor puede ser cualquier número entero que no sea negativo superior o igual a 262144 (256 KB); un tamaño más pequeño impide que se inicie el software de AWS IoT Greengrass Core. El valor predeterminado es 2.5 MB de tamaño. Cuando se alcanza el límite de tamaño, los mensajes en cola más antiguos se sustituyen por mensajes nuevos.

nota

Esta característica está disponible para AWS IoT Greengrass Core versión v1.6 y posteriores. Las versiones anteriores utilizan almacenamiento en memoria con un tamaño de cola de 2,5 MB. No puede ajustar la configuración de almacenamiento para versiones anteriores.

Para almacenar los mensajes en la caché local

Puede configurar AWS IoT Greengrass para almacenar los mensajes en caché en el sistema de archivos de modo que persistan entre los reinicios del núcleo. Para ello, se implementa una versión de definición de característica en la que la característica GGCloudSpooler establece el tipo de almacenamiento en FileSystem. Debe utilizar la API de AWS IoT Greengrass para configurar el almacenamiento en caché local. No puede hacer esto en la consola.

En el procedimiento siguiente, se usa el comando de CLI create-function-definition-version para configurar la cola de impresión para que guarde los mensajes que hay en cola en el sistema de archivos. También configura un tamaño de cola de 2.6 MB.

  1. Obtenga los ID de la versión de grupo y grupo de Greengrass de destino. En este procedimiento, suponemos que estos son el último grupo y la última versión de grupo. La siguiente consulta devuelve el grupo creado más recientemente.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    También puede hacer la consulta por nombre. No es necesario que los nombres de grupo sean únicos, por lo que podrían devolverse varios grupos.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    nota

    También puede encontrar estos valores en la consola de AWS IoT. El ID de grupo se muestra en la página Settings (Configuración) del grupo. Los ID de versión del grupo se muestran en la pestaña Implementaciones del grupo.

  2. Copie los valores Id y LatestVersion del grupo de destino en la salida.

  3. Obtenga la última versión del grupo.

    • Reemplace id-grupo con el Id que ha copiado.

    • Reemplace latest-group-version-id por el LatestVersion que ha copiado.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. Desde el objeto Definition de la salida, copie el CoreDefinitionVersionArn y los ARN de todos los demás componentes de grupo excepto FunctionDefinitionVersionArn. Utilizará estos valores cuando cree una nueva versión del grupo.

  5. Desde FunctionDefinitionVersionArn en el resultado, copie el ID de la definición de la característica. El ID es el GUID que va detrás del segmento functions en el ARN, tal y como se muestra en el siguiente ejemplo.

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    nota

    O puede crear una definición de la función ejecutando el comando create-function-definition y luego copiar el ID del resultado.

  6. Añada una versión de definición de la función a la definición de la característica.

    • function-definition-idSustitúyalo por el Id que copiaste para la definición de la función.

    • arbitrary-function-idSustitúyalo por un nombre para la función, por ejemplospooler-function.

    • Agregue las funciones de Lambda que desea incluir en esta versión en la matriz functions. Puede utilizar el comando get-function-definition-version para obtener las funciones de Lambda de Greengrass de una versión de la definición de característica existente.

    aviso

    Asegúrese de que se especifica un valor para GG_CONFIG_MAX_SIZE_BYTES que sea mayor o igual a 262144. Un tamaño más pequeño impide que se inicie el software de AWS IoT Greengrass Core.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    nota

    Si previamente configuró la variable de entorno GG_CONFIG_SUBSCRIPTION_QUALITY para admitir sesiones persistentes con AWS IoT Core, inclúyala en esta instancia de función.

  7. Copie el Arn de la versión de definición de la característica del resultado.

  8. Cree una versión de grupo que contenga la función de Lambda del sistema.

    • Reemplace id-grupo con el Id del grupo.

    • core-definition-version-arnSustitúyalo por el CoreDefinitionVersionArn que copió de la última versión del grupo.

    • function-definition-version-arnSustitúyala por la Arn que copió para la nueva versión de definición de funciones.

    • Reemplace los ARN para otros componentes del grupo (por ejemplo, SubscriptionDefinitionVersionArn o DeviceDefinitionVersionArn) que ha copiado de la última versión del grupo.

    • Elimine los parámetros no utilizados. Por ejemplo, elimine --resource-definition-version-arn si la versión de su grupo no contiene ningún recurso.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. Copie la Version del resultado. Este es el ID de la nueva versión del grupo.

  10. Implemente el grupo con la nueva versión del grupo.

    • Reemplace id-grupo con el Id que ha copiado para el grupo.

    • group-version-idSustitúyalo por el Version que copió para la nueva versión de grupo.

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

Para actualizar la configuración de almacenamiento, utilice la API de AWS IoT Greengrass para crear una nueva versión de la definición de la característica que contenga la característica GGCloudSpooler con la configuración actualizada. A continuación, añada la versión de la definición de la característica a una nueva versión del grupo (junto con los demás componentes del grupo) e implemente la versión del grupo. Si desea restaurar la configuración predeterminada, puede implementar una versión de definición de la característica que no incluya la característica GGCloudSpooler.

Esta función de Lambda del sistema no es visible en la consola de . Sin embargo, después de que la función se añade a la última versión del grupo, se incluye en las implementaciones que se realizan desde la consola (a menos que utilice la API para sustituirla o eliminarla).

Sesiones persistentes de MQTT con AWS IoT Core

Esta característica está disponible para AWS IoT Greengrass Core v1.10 y versiones posteriores.

Un núcleo de Greengrass puede establecer una sesión persistente con el agente de mensajes de AWS IoT. Una sesión persistente es una conexión continua que permite al núcleo recibir mensajes enviados mientras el núcleo está fuera de línea. El núcleo es el cliente en la conexión.

En una sesión persistente, el agente de mensajes AWS IoT guarda todas las suscripciones que realiza el núcleo durante la conexión. Si el núcleo se desconecta, el agente de mensajes AWS IoT almacena mensajes nuevos y no reconocidos publicados como QoS 1 y destinados a destinos locales, como funciones de Lambda y dispositivos cliente. Cuando el núcleo se vuelve a conectar, la sesión persistente se reanuda y el agente de mensajes de AWS IoT envía mensajes almacenados al núcleo a una velocidad máxima de 10 mensajes por segundo. Las sesiones persistentes tienen un período de caducidad predeterminado de 1 hora, que comienza cuando el agente de mensajes detecta que el núcleo se desconecta. Para obtener más información, consulte Sesiones persistentes de MQTT en la Guía del desarrollador de AWS IoT.

AWS IoT Greengrass utiliza el componente del sistema de cola de impresión (la función de Lambda GGCloudSpooler) para crear suscripciones que tengan AWS IoT como origen. Puede utilizar la siguiente variable de entorno GGCloudSpooler para configurar sesiones persistentes.

  • GG_CONFIG_SUBSCRIPTION_QUALITY. La calidad de las suscripciones que tienen AWS IoT como origen. Los siguientes valores son válidos:

    • AtMostOnce (predeterminada). Deshabilita las sesiones persistentes. Las suscripciones usan QoS 0.

    • AtLeastOncePersistent. Habilita sesiones persistentes. Establece el indicador cleanSession a 0 en mensajes CONNECT y se suscribe con QoS 1.

      Se garantiza que los mensajes publicados con QoS 1 que recibe el núcleo lleguen a la cola de trabajo en memoria del daemon Greengrass. El núcleo reconoce el mensaje después de añadirlo a la cola. La comunicación posterior de la cola al destino local (por ejemplo, la función de Lambda de Greengrass, conector o dispositivo) se envía como QoS 0. AWS IoT Greengrass no garantiza la entrega a los destinos locales.

      nota

      Puede utilizar la propiedad de configuración maxWorkItemCount para controlar el tamaño de la cola de elementos de trabajo. Por ejemplo, puede aumentar el tamaño de la cola si su carga de trabajo requiere mucho tráfico MQTT.

      Cuando las sesiones persistentes están habilitadas, el núcleo abre al menos una conexión adicional para el intercambio de mensajes MQTT con AWS IoT. Para obtener más información, consulte ID de cliente para conexiones MQTT con AWS IoT.

Para configurar sesiones persistentes de MQTT

Puede configurar AWS IoT Greengrass para usar sesiones persistentes con AWS IoT Core. Para ello, se implementa una versión de definición de función en la que la función GGCloudSpooler establece la calidad de suscripción en AtLeastOncePersistent. Esta configuración se aplica a todas las suscripciones que tengan AWS IoT Core (cloud) como origen. Debe usar la API AWS IoT Greengrass para configurar sesiones persistentes. No puede hacer esto en la consola.

El siguiente procedimiento utiliza el comando de la CLI create-function-definition-version para configurar el spooler para que utilice sesiones persistentes. En este procedimiento suponemos que va a actualizar la configuración de la versión más reciente de un grupo existente.

  1. Obtenga los ID de la versión de grupo y grupo de Greengrass de destino. En este procedimiento, suponemos que estos son el último grupo y la última versión de grupo. La siguiente consulta devuelve el grupo creado más recientemente.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    También puede hacer la consulta por nombre. No es necesario que los nombres de grupo sean únicos, por lo que podrían devolverse varios grupos.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    nota

    También puede encontrar estos valores en la consola de AWS IoT. El ID de grupo se muestra en la página Settings (Configuración) del grupo. Los ID de versión del grupo se muestran en la pestaña Implementaciones del grupo.

  2. Copie los valores Id y LatestVersion del grupo de destino en la salida.

  3. Obtenga la última versión del grupo.

    • Reemplace id-grupo con el Id que ha copiado.

    • Reemplace latest-group-version-id por el LatestVersion que ha copiado.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. Desde el objeto Definition de la salida, copie el CoreDefinitionVersionArn y los ARN de todos los demás componentes de grupo excepto FunctionDefinitionVersionArn. Utilizará estos valores cuando cree una nueva versión del grupo.

  5. Desde FunctionDefinitionVersionArn en el resultado, copie el ID de la definición de la característica. El ID es el GUID que va detrás del segmento functions en el ARN, tal y como se muestra en el siguiente ejemplo.

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    nota

    O puede crear una definición de la función ejecutando el comando create-function-definition y luego copiar el ID del resultado.

  6. Añada una versión de definición de la función a la definición de la característica.

    • function-definition-idSustitúyala por la Id que copió para la definición de la función.

    • arbitrary-function-idSustitúyalo por un nombre para la función, por ejemplospooler-function.

    • Agregue las funciones de Lambda que desea incluir en esta versión en la matriz functions. Puede utilizar el comando get-function-definition-version para obtener las funciones de Lambda de Greengrass de una versión de la definición de característica existente.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    nota

    Si previamente ha establecido las variables de entorno GG_CONFIG_STORAGE_TYPE o GG_CONFIG_MAX_SIZE_BYTES para definir la configuración de almacenamiento, inclúyalas en esta instancia de característica.

  7. Copie el Arn de la versión de definición de la característica del resultado.

  8. Cree una versión de grupo que contenga la función de Lambda del sistema.

    • Reemplace id-grupo con el Id del grupo.

    • core-definition-version-arnSustitúyalo por el CoreDefinitionVersionArn que copió de la última versión del grupo.

    • function-definition-version-arnSustitúyala por la Arn que copió para la nueva versión de definición de funciones.

    • Reemplace los ARN para otros componentes del grupo (por ejemplo, SubscriptionDefinitionVersionArn o DeviceDefinitionVersionArn) que ha copiado de la última versión del grupo.

    • Elimine los parámetros no utilizados. Por ejemplo, elimine --resource-definition-version-arn si la versión de su grupo no contiene ningún recurso.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. Copie la Version del resultado. Este es el ID de la nueva versión del grupo.

  10. Implemente el grupo con la nueva versión del grupo.

    • Reemplace id-grupo con el Id que ha copiado para el grupo.

    • group-version-idSustitúyalo por el Version que copió para la nueva versión de grupo.

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment
  11. (Opcional) Aumente la propiedad maxWorkItemCount en el archivo de configuración principal. Esto puede ayudar al núcleo a manejar el mayor tráfico MQTT y la comunicación con los destinos locales.

Para actualizar la configuración de almacenamiento, utilice la API de AWS IoT Greengrass para crear una nueva versión de la definición de la característica que contenga la característica GGCloudSpooler con la configuración actualizada. A continuación, añada la versión de la definición de la característica a una nueva versión del grupo (junto con los demás componentes del grupo) e implemente la versión del grupo. Si desea restaurar la configuración predeterminada, puede crear una versión de definición de la función que no incluya la función GGCloudSpooler.

Esta función de Lambda del sistema no es visible en la consola de . Sin embargo, después de que la función se añade a la última versión del grupo, se incluye en las implementaciones que se realizan desde la consola (a menos que utilice la API para sustituirla o eliminarla).

ID de cliente para conexiones MQTT con AWS IoT

Esta característica está disponible para AWS IoT Greengrass Core versión 1.8 y posteriores.

El núcleo de Greengrass abre conexiones MQTT con AWS IoT Core para operaciones como la sincronización de sombras y la administración de certificados. Para estas conexiones, el núcleo genera los ID de cliente predecibles en función del nombre del objeto de núcleo. Los ID de cliente predecibles se puede utilizar con las características de monitorización, auditoría y precios, incluidos AWS IoT Device Defender y eventos de ciclo de vida de AWS IoT. También puede crear lógica en torno a los ID de cliente predecibles (por ejemplo, plantillas de política de suscripción basadas en atributos del certificado).

GGC v1.9 and later

Dos componentes del sistema Greengrass abren conexiones MQTT con AWS IoT Core. Estos componentes utilizan los siguientes patrones para generar los ID de cliente de las conexiones.

Operación Patrón de ID de cliente
Implementaciones

core-thing-name

Ejemplo: MyCoreThing

Utilice este ID de cliente para conectar, desconectar, suscribir y cancelar la suscripción a notificaciones de eventos de ciclo de vida.

Suscripciones

core-thing-name-cn

Ejemplo: MyCoreThing-c01

n es un número entero que comienza en 00 y se incrementa con cada nueva conexión hasta un máximo de 250. El número de conexiones viene determinado por el número de dispositivos con los que sincroniza su estado sombra con AWS IoT Core (máximo 2.500 por grupo) y el número de suscripciones con cloud que tienen como origen en el grupo (máximo 10.000 por grupo).

El componente del sistema del administrador de trabajos conecta con AWS IoT Core para intercambiar mensajes de las suscripciones con un origen o destino en la nube. El administrador de trabajos también actúa como proxy para intercambiar mensajes entre AWS IoT Core, el servicio de sombra local y el administrador de certificados de dispositivos.

Para calcular el número de conexiones MQTT por grupo, utilice la siguiente fórmula:

number of MQTT connections per group = number of connections for Deployment Agent + number of connections for Subscriptions

Donde,

  • número de conexiones para el agente de implementación = 1.

  • número de conexiones para suscripciones =(2 subscriptions for supporting certificate generation + number of MQTT topics in AWS IoT Core + number of device shadows synced) / 50.

    • Donde, 50 = el número máximo de suscripciones por conexión que AWS IoT Core puede admitir.

nota

Si habilita las sesiones persistentes para la suscripción con AWS IoT Core, el núcleo abrirá al menos una conexión adicional para utilizarla en una sesión persistente. Los componentes del sistema no admiten sesiones persistentes, así que no pueden compartir esa conexión.

Para reducir el número de conexiones MQTT y ayudar a reducir los costes, puede utilizar las funciones de Lambda locales para agregar datos en la periferia. A continuación, envía los datos agregados a Nube de AWS. Como resultado, utiliza menos temas de MQTT en AWS IoT Core. Para más información, consulte Precios de AWS IoT Greengrass.

GGC v1.8

Varios componentes del sistema Greengrass abren conexiones MQTT con AWS IoT Core. Estos componentes utilizan los siguientes patrones para generar los ID de cliente de las conexiones.

Operación Patrón de ID de cliente
Implementaciones

core-thing-name

Ejemplo: MyCoreThing

Utilice este ID de cliente para conectar, desconectar, suscribir y cancelar la suscripción a notificaciones de eventos de ciclo de vida.

Intercambio de mensajes MQTT con AWS IoT Core

core-thing-name-spr

Ejemplo: MyCoreThing-spr

Sincronización de sombras

core-thing-name-snn

Ejemplo: MyCoreThing-s01

nn es un número entero que comienza en 00 y aumenta con cada nueva conexión hasta un máximo de 03. El número de conexiones lo determina el número de dispositivos (un máximo de 200 dispositivos por grupo) que sincronizan su estado de sombra con AWS IoT Core (un máximo de 50 suscripciones por conexión).

Administración de certificados de dispositivo

core-thing-name-dcm

Ejemplo: MyCoreThing-dcm

nota

La duplicación de ID de cliente en conexiones simultáneas puede provocar un bucle infinito de conexión-desconexión. Esto puede ocurrir si otro dispositivo está codificado para utilizar el nombre de dispositivo de núcleo como ID de cliente en las conexiones. Para obtener más información, consulte este paso de solución de problemas.

Los dispositivos de Greengrass también están plenamente integrados con el servicio de indexación de flotas de AWS IoT Device Management. Esto le permite indexar y buscar dispositivos basados en atributos de dispositivo, estado de sombra y estado de conexión en la nube. Por ejemplo, los dispositivos de Greengrass establecen al menos una conexión que utiliza el nombre de objeto como ID de cliente, a fin de que pueda utilizar la indexación de conectividad para detectar los dispositivos de Greengrass que están actualmente conectados a AWS IoT Core o desconectados de este. Para obtener más información, consulte Servicio de indexación de flotas en la Guía del desarrollador de AWS IoT.

Configuración del puerto MQTT para mensajería local

Esta característica requiere Core AWS IoT Greengrass versión 1.10 o posterior.

El núcleo de Greengrass actúa como agente de mensajes local para la mensajería MQTT entre funciones de Lambda locales, conectores y dispositivos cliente. De forma predeterminada, el núcleo utiliza el puerto 8883 para el tráfico MQTT en la red local. Es posible que desee cambiar el puerto para evitar un conflicto con otro software que se ejecute en el puerto 8883.

Para configurar el número de puerto que utiliza el núcleo para el tráfico MQTT local
  1. Ejecute el siguiente comando para detener el daemon de Greengrass.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editarlo como usuario.

  3. En el objeto de coreThing, añada la propiedad de ggMqttPort y fije el valor en el número de puerto que desee utilizar. Los valores válidos son de 1024 a 65535. En el siguiente ejemplo se fija el número de puerto en 9000.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggMqttPort" : 9000, "keepAlive" : 600 }, ... }
  4. Inicie el daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start
  5. Si la detección automática de IP está habilitada para el núcleo, la configuración está completa.

    Si la detección automática de IP no está habilitada, debe actualizar la información de conectividad del núcleo. Esto permite que los dispositivos cliente reciban el número de puerto correcto durante las operaciones de detección para adquirir información de conectividad básica. Puede utilizar la consola AWS IoT o la API AWS IoT Greengrass para actualizar la información de conectividad básica. En este procedimiento, solo se actualiza el número de puerto. La dirección IP local del núcleo sigue siendo la misma.

    Para actualizar la información de conectividad del núcleo (consola)
    1. En la página de configuración del grupo, elija el núcleo de Greengrass.

    2. En la página de detalles principales, elija la pestaña Puntos de conexión de agente MQTT.

    3. Seleccione Gestionar puntos de conexión y, a continuación, seleccione Añadir punto de conexión

    4. Introduzca su dirección IP local actual y el nuevo número de puerto. En el siguiente ejemplo se fija el número de puerto de 9000 para la dirección IP 192.168.1.8.

    5. Elimine el punto de enlace obsoleto y, a continuación, seleccione Update (Actualizar)

    Para actualizar la información de conectividad del núcleo (API)
    • Utilice la acción UpdateConnectivityInfo. En el siguiente ejemplo se utiliza update-connectivity-info en AWS CLI para fijar el número de puerto de 9000 para la dirección IP 192.168.1.8.

      aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
    nota

    También puede configurar el puerto que utiliza el núcleo para la mensajería MQTT con AWS IoT Core. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.

Tiempo de espera para las operaciones de publicación, suscripción y cancelación de suscripción en las conexiones MQTT con la Nube de AWS

Esta característica está disponible en AWS IoT Greengrass v1.10.2 o posterior.

Puede configurar la cantidad de tiempo (en segundos) para permitir que el núcleo de Greengrass complete una operación de publicación, suscripción o cancelación de suscripción en las conexiones MQTT con AWS IoT Core. Puede que desee ajustar esta configuración si se agota el tiempo de espera de las operaciones debido a restricciones de ancho de banda o a una alta latencia. Para establecer esta configuración en el archivo config.json, agregue o cambie la propiedad mqttOperationTimeout en el objeto coreThing. Por ejemplo:

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

El tiempo de espera predeterminado es de 5 segundos. El tiempo de espera mínimo es de 5 segundos.

Activación de la detección automática de IP

Puede configurar AWS IoT Greengrass para permitir que los dispositivos cliente de un grupo de Greengrass descubran automáticamente el núcleo de Greengrass. Cuando está activado, el núcleo vigila los cambios en sus direcciones IP. Si una dirección cambia, el núcleo publica una lista actualizada de direcciones. Estas direcciones se ponen a disposición de los dispositivos cliente que estén en el mismo grupo de Greengrass que el núcleo.

nota

La política AWS IoT para los dispositivos cliente debe conceder el permiso greengrass:Discover que permita a los dispositivos extraer la información de conectividad del núcleo. Para obtener más información sobre esta instrucción de política, consulte Autorización de detección.

Para activar esta característica desde la consola AWS IoT Greengrass, elija Detección automática cuando implementación su grupo de Greengrass por primera vez. También puede activar o desactivar esta característica en la página de configuración del grupo seleccionando la pestaña Funciones de Lambda y seleccionando el detector IP. La detección automática de IP está activada si se selecciona Detectar y anular automáticamente los puntos de conexión del agente MQTT.

Para gestionar la detección automática con la API AWS IoT Greengrass, debe configurar la función de Lambda IPDetector del sistema. El siguiente procedimiento muestra cómo utilizar el comando create-function-definition-versionCLI para configurar la detección automática del núcleo de Greengrass.

  1. Obtenga los ID de la versión de grupo y grupo de Greengrass de destino. En este procedimiento, suponemos que estos son el último grupo y la última versión de grupo. La siguiente consulta devuelve el grupo creado más recientemente.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    También puede hacer la consulta por nombre. No es necesario que los nombres de grupo sean únicos, por lo que podrían devolverse varios grupos.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    nota

    También puede encontrar estos valores en la consola de AWS IoT. El ID de grupo se muestra en la página Settings (Configuración) del grupo. Los ID de versión del grupo se muestran en la pestaña Implementaciones del grupo.

  2. Copie los valores Id y LatestVersion del grupo de destino en la salida.

  3. Obtenga la última versión del grupo.

    • Reemplace id-grupo con el Id que ha copiado.

    • Reemplace latest-group-version-id por el LatestVersion que ha copiado.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. Desde el objeto Definition de la salida, copie el CoreDefinitionVersionArn y los ARN de todos los demás componentes de grupo excepto FunctionDefinitionVersionArn. Utilizará estos valores cuando cree una nueva versión del grupo.

  5. En el objeto FunctionDefinitionVersionArn de la salida, copie el ID y la versión de la definición de funciones:

    arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id
    nota

    Si lo desea, para crear una definición de la función ejecute el comando create-function-definition y luego copie el ID del resultado.

  6. Utilice el comando get-function-definition-version para obtener la definición de estado actual. Utilice el function-definition-idque ha copiado para la definición de la función. Por ejemplo, 4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    aws greengrass get-function-definition-version --function-definition-id function-definition-id --function-definition-version-id function-definition-version-id

    Anote las configuraciones de las funciones que aparecen. Tendrá que incluirlas cuando cree una nueva versión de la definición de funciones para evitar que se pierda la configuración de la definición actual.

  7. Añada una versión de definición de la función a la definición de la característica.

    • function-definition-idSustitúyalo por el Id que copió para la definición de la función. Por ejemplo, 4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    • arbitrary-function-idSustitúyalo por un nombre para la función, por ejemploauto-detection-function.

    • Añada en la matriz functions todas las funciones de Lambda que desee incluir en esta versión; por ejemplo, las funciones mostradas en el paso anterior.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2
  8. Copie el Arn de la versión de definición de la característica del resultado.

  9. Cree una versión de grupo que contenga la función de Lambda del sistema.

    • Reemplace id-grupo con el Id del grupo.

    • core-definition-version-arnSustitúyalo por el CoreDefinitionVersionArn que copió de la última versión del grupo.

    • function-definition-version-arnSustitúyala por la Arn que copió para la nueva versión de definición de funciones.

    • Reemplace los ARN para otros componentes del grupo (por ejemplo, SubscriptionDefinitionVersionArn o DeviceDefinitionVersionArn) que ha copiado de la última versión del grupo.

    • Elimine los parámetros no utilizados. Por ejemplo, elimine --resource-definition-version-arn si la versión de su grupo no contiene ningún recurso.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  10. Copie la Version del resultado. Este es el ID de la nueva versión del grupo.

  11. Implemente el grupo con la nueva versión del grupo.

    • Reemplace id-grupo con el Id que ha copiado para el grupo.

    • group-version-idSustitúyalo por el Version que copió para la nueva versión de grupo.

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

Si desea introducir manualmente la dirección IP del núcleo de Greengrass, puede realizar este tutorial con una definición de funciones diferente y no incluir la función IPDetector. Esto impedirá que la función de detección pueda localizar e introducir automáticamente la dirección IP del núcleo de Greengrass.

Esta función de Lambda del sistema no es visible en la consola de Lambda. Una vez que la función se agregue a la última versión del grupo, se incluye en las implementaciones que se realizan desde la consola, a menos que se utilice la API para sustituirla o eliminarla.

Configurar el sistema Init para que inicie el daemon de Greengrass

Es una buena práctica configurar el sistema init para que inicie el daemon de Greengrass durante el arranque, especialmente si administra grandes flotas de dispositivos.

nota

Si ha utilizado apt para instalar el software AWS IoT Greengrass Core, puede utilizar los scripts systemd para habilitar el inicio en el arranque. Para obtener más información, consulte Uso de scripts de systemd para administrar el ciclo de vida del demonio de Greengrass.

Existen diferentes tipos de sistema init, como initd, systemd y SystemV, que utilizan parámetros de configuración similares. En el siguiente ejemplo se muestra un archivo de servicio para systemd. El parámetro Type se establece en forking porque greengrassd (que se utiliza para iniciar Greengrass) bifurca el proceso del daemon de Greengrass y el parámetro Restart está establecido en on-failure para indicar a systemd que reinicie Greengrass si Greengrass entra en un estado de error.

nota

Para ver si su dispositivo usa systemd, ejecute el script check_ggc_dependencies como se describe en el Módulo 1. A continuación, para utilizar systemd, asegúrese de que el parámetro useSystemd en config.json está establecido en yes.

[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target

Véase también