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.
Un AWS IoT Greengrass núcleo es una AWS IoT cosa (dispositivo) que actúa como hub o puerta de enlace en entornos periféricos. Al igual que otros AWS IoT dispositivos, un núcleo existe en el registro, tiene una sombra de dispositivo y utiliza un certificado de dispositivo para autenticarse 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 ofrece las siguientes funciones:
-
Implementación y ejecución local de conectores y funciones de Lambda.
-
Procese los flujos de datos localmente con exportaciones automáticas al Nube de AWS.
-
Mensajes MQTT a través de la red local entre dispositivos, conectores y funciones de Lambda mediante suscripciones administradas.
-
La mensajería MQTT entre AWS IoT dispositivos, conectores y funciones Lambda mediante suscripciones gestionadas.
-
Proteja las conexiones entre los dispositivos y la autenticación y autorización de los dispositivos que los Nube de AWS utilizan.
-
Sincronización de sombras locales de dispositivos. Las sombras se pueden configurar para sincronizarse con 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 y cifrado de los secretos locales y acceso controlado por conectores y funciones de Lambda.
AWS IoT Greengrass archivo de configuración principal
El archivo de configuración del software AWS IoT Greengrass principal esconfig.json
. Se encuentra en el directorio /
.greengrass-root
/config
nota
greengrass-root
representa la ruta en la que está instalado el software AWS IoT Greengrass principal en el dispositivo. Normalmente, este es el directorio /greengrass
.
Si utiliza la opción de creación de grupos predeterminada de la AWS IoT Greengrass consola, el config.json
archivo se despliega en el dispositivo principal en un estado funcional.
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 desde la AWS IoT Greengrass consola.
{
"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 a la CA AWS IoT raíz en relación con el |
Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto notaAsegúrese de que los puntos de conexión se corresponden con su tipo de certificado. |
certPath |
La ruta al certificado de dispositivo del núcleo del directorio |
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 / . |
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 elemento que representa el dispositivo AWS IoT Greengrass principal. AWS IoT | Busque el ARN de su núcleo en la AWS IoT Greengrass consola, en Núcleos, o ejecute el comando aws greengrass get-core-definition-version CLI. |
iotHost |
Su AWS IoT punto final. |
Busque el punto final en la AWS IoT consola, en Configuración, o ejecute el comando 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. notaAsegúrese de que los puntos de conexión se corresponden con su tipo de certificado. Asegúrese de que los puntos de conexión se corresponden con su Región de AWS. |
ggHost |
Su AWS IoT Greengrass punto final. |
Esto es el punto de enlace de notaAsegúrese de que los puntos de conexión se corresponden con su tipo de certificado. Asegúrese de que los puntos de conexión se corresponden con su Región de AWS. |
iotMqttPort |
Opcional. El número de puerto con el que se va a utilizar la comunicación MQTT. 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 1.11.0 o AWS IoT Greengrass posterior. Los valores válidos están comprendidos entre 500 y 5000. El valor predeterminado es 5000. |
runtime
Campo | Descripción | Notas |
---|---|---|
maxWorkItemCount |
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. Si se aumenta este valor, se aumenta la memoria que se utiliza. AWS IoT Greengrass 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 |
Opcional. Define el valor mínimo paramaxConcurrentLimit . |
El valor predeterminado es 25. |
mountAllBlockDevices |
Opcional. Permite AWS IoT Greengrass utilizar soportes encuadernados para montar todos los dispositivos de bloque en un contenedor después de configurar OverlayFS. |
Esta propiedad está disponible en la versión 1.11.0 o AWS IoT Greengrass posterior. Los valores válidos son Establezca este valor en |
postStartHealthCheckTimeout |
Opcional. El tiempo (en milisegundos) que espera el daemon de Greengrass después de iniciarse hasta que finaliza la comprobación de estado. | El tiempo de espera predeterminado es de 30 segundos (30 000 ms). |
cgroup |
||
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 . |
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 Despliega los secretos hasta la AWS IoT Greengrass médula. Se admiten las configuraciones para el almacenamiento de claves privadas en HSMs o dentro del sistema de archivos.
Campo | Descripción | Notas |
---|---|---|
caPath |
La ruta absoluta a la CA AWS IoT raíz. |
Debe ser el URI de un archivo de la forma: notaAsegúrese de que los puntos de conexión se corresponden con su tipo de certificado. |
PKCS11 |
||
OpenSSLEngine |
Opcional. La ruta absoluta al archivo |
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 Configure el soporte para las actualizaciones over-the-air. |
P11Provider |
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 en el módulo. |
Debe tener permisos suficientes para realizar la firma C_Sign con las claves privadas configuradas. |
principals |
||
IoTCertificate |
El certificado y la clave privada que el núcleo utiliza para realizar solicitudes a AWS IoT. | |
IoTCertificate .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: Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 |
IoTCertificate .certificatePath |
La ruta absoluta al certificado de dispositivo del núcleo. |
Debe ser el URI de un archivo de la forma: |
MQTTServerCertificate |
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: Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 Si se omite esta propiedad, AWS IoT Greengrass gira 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 |
La clave privada que protege la clave de datos utilizada para el cifrado. Para obtener más información, consulte Despliega los secretos hasta la AWS IoT Greengrass médula. | |
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: Para el almacenamiento de HSM, debe ser una ruta RFC 7512 PKCS#11 |
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 |
managedRespawn
|
Opcional. Indica que el agente de OTA debe ejecutar un código personalizado antes de una actualización. |
Los valores válidos son |
writeDirectory
|
Opcional. El directorio de escritura donde se AWS IoT Greengrass crean todos los recursos de lectura/escritura. |
Para obtener más información, consulte Configure 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 |
Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz.
Sus AWS IoT Greengrass puntos finales AWS IoT Core y los puntos finales deben corresponder al tipo de certificado de CA raíz de su dispositivo. Si los puntos finales y el tipo de certificado no coinciden, 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 finales de ATS incluyen el ats
segmento, como se muestra en la siguiente sintaxis para el AWS IoT Core punto final.
prefix
-ats.iot.region
.amazonaws.com
nota
Por motivos de compatibilidad con versiones anteriores, AWS IoT Greengrass actualmente es compatible con los certificados y puntos finales de CA VeriSign raíz heredados en algunos Región de AWS casos. 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 iotHost
propiedad representa el AWS IoT Core punto final. La ggHost
propiedad representa el AWS IoT Greengrass punto final. 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",
...
},
- AWS IoT Core punto de conexión
-
Puede obtener su AWS IoT Core punto final ejecutando el comando aws iot describe-endpointCLI con el
--endpoint-type
parámetro 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, ejecute:
aws iot describe-endpoint --endpoint-type iot:Data
-
- AWS IoT Greengrass punto de conexión
-
Su AWS IoT Greengrass punto final es su
iotHost
punto final con el prefijo de host reemplazado por greengrass. Por ejemplo, el punto de enlace firmado por ATS esgreengrass-ats.iot.
. Utiliza la misma región que su AWS IoT Core punto final.region
.amazonaws.com
Realizar la conexión en el puerto 443 o a través de un proxy de red
Esta función está disponible para AWS IoT Greengrass Core v1.7 y versiones posteriores.
Los núcleos de Greengrass se comunican AWS IoT Core mediante 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 escenarios, 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 de la red de protocolos 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 software over-the-air (OTA). AWS IoT Greengrass 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
, yno_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 paquetesrequests
de python) suelen utilizar estas variables de entorno de forma predeterminada. Si una función Lambda también especifica estas mismas variables de entorno, AWS IoT Greengrass no las anula.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 función requiere AWS IoT Greengrass Core v1.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.
-
Ejecute el siguiente comando para detener el daemon de Greengrass.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editarlo como usuario.greengrass-root
/config/config.json -
En el objeto
coreThing
, añada la propiedadiotMqttPort
y establezca el valor en443
, 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 }, ... } -
Inicie el daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Para configurar HTTPS a través del puerto 443
Esta función requiere la versión 1.8 de AWS IoT Greengrass Core o posterior.
Este procedimiento configura el núcleo para usar el puerto 443 para la comunicación HTTPS.
-
Ejecute el siguiente comando para detener el daemon de Greengrass.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editarlo como usuario.greengrass-root
/config/config.json -
En el objeto
coreThing
, añada las propiedadesiotHttpPort
eggHttpPort
, 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 }, ... } -
Inicie el daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Para configurar un proxy de red
Esta función requiere AWS IoT Greengrass Core v1.7 o posterior.
Este procedimiento permite conectarse AWS IoT Greengrass a Internet a través de un proxy de red HTTP o HTTPS.
-
Ejecute el siguiente comando para detener el daemon de Greengrass.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editarlo como usuario.greengrass-root
/config/config.json -
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" } }
}, ... } -
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.
|
Permitir puntos de enlace
La comunicación entre los dispositivos Greengrass AWS IoT Core y/o AWS IoT Greengrass debe estar autenticada. 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. |
443 |
Se utiliza para las operaciones del plano de control para la administración de grupos. |
o
|
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 de 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.. |
o
|
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 de 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.. notaLos 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) |
*.s3.amazonaws.com |
443 |
Se utiliza para operaciones de despliegue y actualizaciones. over-the-air Este formato incluye el carácter |
logs. |
443 |
Obligatorio si el grupo de Greengrass está configurado para escribir los registros en CloudWatch. |
Configure un directorio de escritura para AWS IoT Greengrass
Esta función está disponible para AWS IoT Greengrass Core v1.6 y versiones posteriores.
De forma predeterminada, el software AWS IoT Greengrass Core se implementa en un único directorio raíz donde se AWS IoT Greengrass realizan todas las operaciones de lectura y escritura. Sin embargo, puede configurarlo AWS IoT Greengrass para usar 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 AWS IoT Greengrass principal y otros componentes críticos que deberían 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 y 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
-
Ejecute el siguiente comando para detener el AWS IoT Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editarlo como usuario.greengrass-root
/config/config.json -
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. Una vez actualizada la configuración, AWS IoT Greengrass utiliza el directorio de escritura recién especificado en el siguiente inicio, pero no migra el contenido del directorio de escritura anterior. -
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 AWS IoT Greengrass daemon:
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.
-
Conceda permisos de acceso a directorios necesarios:
-
Otorgue permisos de lectura y escritura al propietario de
config.json
.sudo chmod 0600 /
greengrass-root
/config/config.json -
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.
-
-
Haga que el directorio
greengrass-root
sea de solo lectura utilizando su mecanismo preferido.nota
Una forma para que el directorio
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 operacionesumount
ymount
a los scriptsota_pre_update
yota_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. -
Inicie el daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startSi los permisos del paso 1 no están establecidos correctamente, el daemon no se iniciará.
Configuración de MQTT
En el AWS IoT Greengrass entorno, los dispositivos cliente locales, las funciones 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 los ajustes de MQTT 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 los servidores OPC-UA a las propiedades de los activos. AWS IoT SiteWise
Mensaje de calidad del servicio
AWS IoT Greengrass admite los niveles de calidad de servicio (QoS) 0 o 1, según la configuración y el objetivo y la dirección de la comunicación. El núcleo de Greengrass actúa como un cliente para la comunicación AWS IoT Core y un intermediario de mensajes para la comunicación en la red local.

Para obtener más información sobre MQTT y QoS, consulte Introducción
- Comunicación con el Nube de AWS
-
-
Los mensajes salientes usan QoS 1
El núcleo envía mensajes destinados a Nube de AWS los objetivos mediante QoS 1. AWS IoT Greengrass utiliza una cola de mensajes MQTT para procesar estos mensajes. Si la entrega del mensaje no está confirmada por AWS IoT, el mensaje se guarda para volver a 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 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 confirmar el mensaje antes de enviar el siguiente mensaje. AWS IoT 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 el Región de AWS lugar donde se conecta el núcleo. Para transferir datos de IoT de gran volumen al Nube de AWS, puede usar Stream Manager.
Para obtener más información sobre la cola de mensajes de MQTT, incluido cómo configurar una caché de almacenamiento local que pueda conservar los mensajes destinados Nube de AWS a los destinos, 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 permitir que el núcleo establezca una sesión persistente con Nube de AWS los destinos, 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 de 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 destinados a los Nube de AWS destinos se ponen en cola a la espera de ser procesados. Los mensajes en la cola se procesan siguiendo el orden primero en entrar, primero en salir (FIFO). Una vez procesado y publicado un mensaje AWS IoT Core, se elimina de la cola.
Por defecto, el núcleo de 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, la caché de almacenamiento local tiene la capacidad de persistir durante los reinicios principales (por ejemplo, tras una implementación en grupo o un reinicio del dispositivo), por lo que AWS IoT Greengrass puede seguir procesando los 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 AWS IoT Greengrass archivo de configuración principal.
AWS IoT Greengrass utiliza el componente del sistema spooler (la función GGCloudSpooler
Lambda) para gestionar 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 entero no negativo mayor o igual a 262144 (256 KB); un tamaño más pequeño impide que se inicie el software Core. AWS IoT Greengrass 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 función está disponible para AWS IoT Greengrass Core v1.6 y versiones 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 la caché de AWS IoT Greengrass los mensajes en el sistema de archivos para que persistan tras 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 usar la AWS IoT Greengrass API para configurar la memoria caché de almacenamiento 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.
-
Obtenga el grupo y IDs la versión grupal de Greengrass objetivo. 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 AWS IoT consola. El ID de grupo se muestra en la página Settings (Configuración) del grupo. La versión del grupo IDs se muestra en la pestaña Implementaciones del grupo.
-
Copie los valores
Id
yLatestVersion
del grupo de destino en la salida. -
Obtenga la última versión del grupo.
-
Reemplace
group-id
por elId
que ha copiado. -
Reemplace
latest-group-version-id
por elLatestVersion
que ha copiado.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Del
Definition
objeto de la salida, copie losCoreDefinitionVersionArn
y los demás componentes ARNs del grupo, exceptoFunctionDefinitionVersionArn
. Utilizará estos valores cuando cree una nueva versión del grupo. -
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 segmentofunctions
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. -
Añada una versión de definición de la función a la definición de la característica.
-
function-definition-id
Sustitúyalo por elId
que copió para la definición de la función. -
arbitrary-function-id
Sustitúyalo por un nombre para la función, por ejemplospooler-function
. -
Agregue las funciones de Lambda que desea incluir en esta versión de la matriz de
functions
. Puede utilizar el comandoget-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 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 anteriormente configuraste la variable de
GG_CONFIG_SUBSCRIPTION_QUALITY
entorno para que admitiera sesiones persistentes AWS IoT Core, inclúyela en esta instancia de función. -
-
Copie el
Arn
de la versión de definición de la característica del resultado. -
Cree una versión de grupo que contenga la función de Lambda del sistema.
-
group-id
SustitúyalaId
por la para el grupo. -
core-definition-version-arn
Sustitúyalo por elCoreDefinitionVersionArn
que copió de la última versión del grupo. -
function-definition-version-arn
Sustitúyalo por elArn
que copió para la nueva versión de definición de funciones. -
Sustituya los ARNs demás componentes del grupo (por ejemplo,
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) que haya 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-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copie la
Version
del resultado. Este es el ID de la nueva versión del grupo. -
Implemente el grupo con la nueva versión del grupo.
-
group-id
Sustitúyalo por elId
que copió para el grupo. -
group-version-id
Reemplácelo por elVersion
que copió para la nueva versión del grupo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Para actualizar la configuración de almacenamiento, utilice la AWS IoT Greengrass API para crear una nueva versión de definición de funciones que contenga la GGCloudSpooler
función 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. 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 función 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 AWS IoT mensajes. 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 AWS IoT mensajes guarda todas las suscripciones que el núcleo realiza durante la conexión. Si el núcleo se desconecta, el agente de AWS IoT mensajes almacena los mensajes nuevos y no confirmados publicados como QoS 1 y destinados a destinos locales, como las funciones de Lambda y los dispositivos cliente. Cuando el núcleo se vuelve a conectar, la sesión persistente se reanuda y el agente de AWS IoT mensajes envía los 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 spooler (la función GGCloudSpooler
Lambda) para crear suscripciones que tengan AWS IoT como fuente. 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 fuente. Los siguientes valores son válidos:
-
AtMostOnce
(predeterminada). Deshabilita las sesiones persistentes. Las suscripciones usan QoS 0. -
AtLeastOncePersistent
. Habilita sesiones persistentes. Establece el indicadorcleanSession
a0
en mensajesCONNECT
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 con la que intercambiar mensajes MQTT. AWS IoT Para obtener más información, consulte Cliente IDs para conexiones MQTT con AWS IoT.
-
Para configurar sesiones persistentes de MQTT
Puede configurarlo 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. Debes usar la AWS IoT Greengrass API para configurar las 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.
-
Obtenga el grupo y IDs la versión grupal de Greengrass objetivo. 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 AWS IoT consola. El ID de grupo se muestra en la página Settings (Configuración) del grupo. La versión del grupo IDs se muestra en la pestaña Implementaciones del grupo.
-
Copie los valores
Id
yLatestVersion
del grupo de destino en la salida. -
Obtenga la última versión del grupo.
-
Reemplace
group-id
por elId
que ha copiado. -
Reemplace
latest-group-version-id
por elLatestVersion
que ha copiado.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Del
Definition
objeto de la salida, copie losCoreDefinitionVersionArn
y los demás componentes ARNs del grupo, exceptoFunctionDefinitionVersionArn
. Utilizará estos valores cuando cree una nueva versión del grupo. -
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 segmentofunctions
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. -
Añada una versión de definición de la función a la definición de la característica.
-
function-definition-id
Sustitúyalo por elId
que copió para la definición de la función. -
arbitrary-function-id
Sustitúyalo por un nombre para la función, por ejemplospooler-function
. -
Agregue las funciones de Lambda que desea incluir en esta versión de la matriz de
functions
. Puede utilizar el comandoget-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
oGG_CONFIG_MAX_SIZE_BYTES
para definir la configuración de almacenamiento, inclúyalas en esta instancia de característica. -
-
Copie el
Arn
de la versión de definición de la característica del resultado. -
Cree una versión de grupo que contenga la función de Lambda del sistema.
-
group-id
SustitúyaloId
por el para el grupo. -
core-definition-version-arn
Sustitúyalo por elCoreDefinitionVersionArn
que copió de la última versión del grupo. -
function-definition-version-arn
Sustitúyalo por elArn
que copió para la nueva versión de definición de funciones. -
Sustituya los ARNs demás componentes del grupo (por ejemplo,
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) que haya 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-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copie la
Version
del resultado. Este es el ID de la nueva versión del grupo. -
Implemente el grupo con la nueva versión del grupo.
-
group-id
Sustitúyalo por elId
que copió para el grupo. -
group-version-id
Reemplácelo por elVersion
que copió para la nueva versión del grupo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(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 el núcleo con estos cambios de configuración, utilice la AWS IoT Greengrass API para crear una nueva versión de definición de función que contenga la GGCloudSpooler
función 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. 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).
Cliente IDs para conexiones MQTT con AWS IoT
Esta función está disponible para AWS IoT Greengrass Core v1.8 y versiones posteriores.
El núcleo de Greengrass abre conexiones MQTT AWS IoT Core para operaciones como la sincronización oculta y la gestión de certificados. Para estas conexiones, el núcleo genera un cliente predecible en IDs función del nombre del elemento principal. El cliente predecible se IDs puede utilizar con funciones de supervisión, auditoría y fijación de precios, incluidos los AWS IoT Device Defender eventos AWS IoT del ciclo de vida. También puede crear una lógica en torno a un cliente predecible IDs (por ejemplo, suscriba plantillas de políticas basadas en los atributos de los certificados).
Dos componentes del sistema Greengrass abren conexiones MQTT con. AWS IoT Core Estos componentes utilizan los siguientes patrones para generar el cliente IDs para las conexiones.
Operación | Patrón de ID de cliente |
---|---|
Implementaciones |
Ejemplo: Utilice este ID de cliente para conectar, desconectar, suscribir y cancelar la suscripción a notificaciones de eventos de ciclo de vida. |
Suscripciones |
Ejemplo:
El componente del sistema del administrador de trabajos conecta con AWS IoT Core para intercambiar mensajes por suscripciones con un origen o destino en la nube. El spooler también actúa como proxy para el intercambio de mensajes entre el servicio paralelo local AWS IoT Core 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
.-
Dónde,
50
= el número máximo de suscripciones por conexión que se AWS IoT Core pueden admitir.
-
nota
Si habilitas las sesiones persistentes para la suscripción AWS IoT Core, el núcleo abre al menos una conexión adicional para usarla 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, se utilizan menos temas de MQTT en AWS IoT Core. Para más información, consulte Precios de AWS IoT Greengrass
nota
El IDs uso de un cliente duplicado en conexiones simultáneas puede provocar un bucle de conexión y desconexión infinito. 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 función requiere la versión AWS IoT Greengrass 1.10 de Core 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 de 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
-
Ejecute el siguiente comando para detener el daemon de Greengrass.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editarlo como usuario.greengrass-root
/config/config.json -
En el objeto de
coreThing
, añada la propiedad deggMqttPort
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 en9000
.{ "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 }, ... } -
Inicie el daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
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 de cliente reciban el número de puerto correcto durante las operaciones de detección para adquirir información de conectividad básica. Puede usar la AWS IoT consola o la AWS IoT Greengrass API para actualizar la información de conectividad principal. 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)
-
-
En la página de configuración del grupo, elija el núcleo de Greengrass.
-
En la página de detalles principales, elija la pestaña Puntos de conexión de agente MQTT.
-
Seleccione Gestionar puntos de conexión y, a continuación, seleccione Añadir punto de conexión
-
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 IP192.168.1.8
. -
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 de9000
para la dirección IP192.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. 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.
Se agota el tiempo de espera para las operaciones de publicación, suscripción y cancelación de la suscripción en las conexiones MQTT con el Nube de AWS
Esta función está disponible en la versión AWS IoT Greengrass 1.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 configurarlo 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 AWS IoT política para los dispositivos cliente debe conceder el greengrass:Discover
permiso que permita a los dispositivos recuperar 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 función desde la AWS IoT Greengrass consola, elija Detección automática cuando despliegue 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 AWS IoT Greengrass API, debe configurar la función 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.
-
Obtenga el grupo y IDs la versión grupal de Greengrass objetivo. 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 AWS IoT consola. El ID de grupo se muestra en la página Settings (Configuración) del grupo. La versión del grupo IDs se muestra en la pestaña Implementaciones del grupo.
-
Copie los valores
Id
yLatestVersion
del grupo de destino en la salida. -
Obtenga la última versión del grupo.
-
Reemplace
group-id
por elId
que ha copiado. -
Reemplace
latest-group-version-id
por elLatestVersion
que ha copiado.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Del
Definition
objeto de la salida, copie losCoreDefinitionVersionArn
y los demás componentes ARNs del grupo, exceptoFunctionDefinitionVersionArn
. Utilizará estos valores cuando cree una nueva versión del grupo. -
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. -
Utilice el comando
get-function-definition-version
para obtener la definición de estado actual. Utilice losfunction-definition-id
que 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-idfunction-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.
-
Añada una versión de definición de la función a la definición de la característica.
-
function-definition-id
Sustitúyalo por elId
que copió para la definición de la función. Por ejemplo,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
. -
arbitrary-function-id
Sustitúyalo por un nombre para la función, por ejemploauto-detection-function
. -
Añada en la matriz de
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 -
-
Copie el
Arn
de la versión de definición de la característica del resultado. -
Cree una versión de grupo que contenga la función de Lambda del sistema.
-
group-id
SustitúyaloId
por el para el grupo. -
core-definition-version-arn
Sustitúyalo por elCoreDefinitionVersionArn
que copió de la última versión del grupo. -
function-definition-version-arn
Sustitúyalo por elArn
que copió para la nueva versión de definición de funciones. -
Sustituya los ARNs demás componentes del grupo (por ejemplo,
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) que haya 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-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copie la
Version
del resultado. Este es el ID de la nueva versión del grupo. -
Implemente el grupo con la nueva versión del grupo.
-
group-id
Sustitúyalo por elId
que copió para el grupo. -
group-version-id
Reemplácelo por elVersion
que copió para la nueva versión del grupo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-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 solía apt
instalar el software AWS IoT Greengrass Core, puede usar los scripts de systemd para activar el inicio al arrancar. 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