

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

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

# Configurar el AWS IoT Greengrass núcleo
<a name="gg-core"></a>

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:<a name="ggc-software-features"></a>
+ 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
<a name="config-json"></a>

El archivo de configuración del software AWS IoT Greengrass principal es`config.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.

------
#### [ 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 | Description (Descripción) | Notas | 
| --- | --- | --- | 
| <a name="shared-config-capath"></a>caPath |  La ruta a la CA AWS IoT raíz en relación con el `/greengrass-root/certs` directorio.  |  Para garantizar la compatibilidad con versiones anteriores a la 1.7.0. Esta propiedad se ignora cuando el objeto `crypto` está presente.  Asegúrese de que los [puntos de conexión se corresponden con su tipo de certificado](#certificate-endpoints).   | 
| <a name="shared-config-certpath"></a>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. | 
| <a name="shared-config-keypath"></a>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. | 
| <a name="shared-config-thingarn"></a>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 [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html)CLI. | 
| <a name="shared-config-iothost-v1.9"></a>iotHost | Su AWS IoT punto final. |  Busque el punto final en la AWS IoT consola, en **Configuración**, o ejecute el comando [https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html)CLI. 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](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html).  Asegúrese de que los [puntos de conexión se corresponden con su tipo de certificado](#certificate-endpoints). Asegúrese de que los [puntos de conexión se corresponden con su Región de AWS](https://docs.aws.amazon.com/general/latest/gr/greengrass.html).    | 
| <a name="shared-config-gghost-v1.9"></a>ggHost | Su AWS IoT Greengrass punto final. |  Esto es el punto de enlace de `iotHost` con el prefijo de host reemplazado por *greengrass* (por ejemplo, `greengrass-ats.iot.region.amazonaws.com`). Usa lo mismo Región de AWS que`iotHost`.  Asegúrese de que los [puntos de conexión se corresponden con su tipo de certificado](#certificate-endpoints). Asegúrese de que los [puntos de conexión se corresponden con su Región de AWS](https://docs.aws.amazon.com/general/latest/gr/greengrass.html).    | 
| <a name="shared-config-iotmqttport"></a>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](#alpn-network-proxy). | 
| <a name="shared-config-iothttpport"></a>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](#alpn-network-proxy). | 
| <a name="shared-config-ggmqttport"></a>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](#config-local-mqtt-port). | 
| <a name="shared-config-gghttpport"></a>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](#alpn-network-proxy). | 
| <a name="shared-config-keepalive"></a>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. | 
| <a name="shared-config-networkproxy"></a>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](#alpn-network-proxy). | 
| <a name="config-mqttOperationTimeout-v1.11.0"></a>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. | 
| <a name="shared-conifg-ggDaemonPort"></a>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.  | 
| <a name="shared-config-systemComponentAuthTimeout"></a>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 | Description (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`.  | 
| 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 `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 | 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 [https://en.wikipedia.org/wiki/Systemd](https://en.wikipedia.org/wiki/Systemd). | Los valores válidos son yes o no. Ejecute el script check\$1ggc\$1dependencies en el [Módulo 1](module1.md) 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\$111 y almacenamiento secreto local. Para obtener más información, consulte [AWS IoT Greengrass principios básicos de seguridad](gg-sec.md#gg-principals), [Integración de la seguridad de hardware](hardware-security.md) y [Despliega los secretos hasta la AWS IoT Greengrass médula](secrets.md). Se admiten las configuraciones para el almacenamiento de claves privadas en HSMs o dentro del sistema de archivos.


| Campo | Description (Descripción) | Notas | 
| --- |--- |--- |
| caPath |  La ruta absoluta a la CA AWS IoT raíz.  |  Debe ser el URI de un archivo de la forma: `file:///absolute/path/to/file`.  Asegúrese de que los [puntos de conexión se corresponden con su tipo de certificado](#certificate-endpoints).   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  Opcional. La ruta absoluta al archivo `.so` del motor de OpenSSL para habilitar la compatibilidad con PKCS\$111 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 [Configure el soporte para las actualizaciones over-the-air](hardware-security.md#hardware-security-ota-updates).  | 
| P11Provider |  La ruta absoluta a la biblioteca que puede cargar libdl de la implementación de PKCS\$111.  |  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\$111.  | 
| slotUserPin |  El PIN de usuario que se utiliza para autenticar en el módulo.  |  Debe tener permisos suficientes para realizar la firma C\$1Sign 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: `file:///absolute/path/to/file`. Para el almacenamiento de HSM, debe ser una ruta [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) 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`.  | 
| 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: `file:///absolute/path/to/file`. Para el almacenamiento de HSM, debe ser una ruta [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512) que especifica la etiqueta del objeto. 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](secrets.md). | 
| 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\$111](https://tools.ietf.org/html/rfc7512) que especifica la etiqueta del objeto. La clave privada se debe generar utilizando el mecanismo de rellenado [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313).  | 

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


****  

| Campo | Description (Descripción) | Notas | 
| --- | --- | --- | 
| <a name="shared-config-mqttmaxconnectionretryinterval"></a> 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`.  | 
| <a name="shared-config-managedrespawn"></a> 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 OTA del software AWS IoT Greengrass Core](core-ota-update.md).  | 
| <a name="shared-config-writedirectory"></a> writeDirectory  |  Opcional. El directorio de escritura donde se AWS IoT Greengrass crean todos los read/write recursos.  |  Para obtener más información, consulte [Configure un directorio de escritura para AWS IoT Greengrass](#write-directory).  | 
| <a name="shared-config-piddirectory"></a>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 AWS IoT Greengrass Core se encuentran en la [fase de vida útil prolongada](maintenance-policy.md). 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**      
<a name="config-json-properties-corething-v1.9"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**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\$111 y almacenamiento secreto local. Para obtener más información, consulte [AWS IoT Greengrass principios básicos de seguridad](gg-sec.md#gg-principals), [Integración de la seguridad de hardware](hardware-security.md) y [Despliega los secretos hasta la AWS IoT Greengrass médula](secrets.md). Se admiten las configuraciones para el almacenamiento de claves privadas en HSMs o en el sistema de archivos.      
<a name="config-crypto"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
También se admiten las siguientes propiedades de configuración:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

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**      
<a name="config-json-properties-corething-v1.9"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**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\$111 y almacenamiento secreto local. Para obtener más información, consulte [AWS IoT Greengrass principios básicos de seguridad](gg-sec.md#gg-principals), [Integración de la seguridad de hardware](hardware-security.md) y [Despliega los secretos hasta la AWS IoT Greengrass médula](secrets.md). Se admiten las configuraciones para el almacenamiento de claves privadas en HSMs o en el sistema de archivos.      
<a name="config-crypto"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
También se admiten las siguientes propiedades de configuración.    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**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**      
<a name="config-json-properties-corething-v1.8"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**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\$111 y almacenamiento secreto local. Para obtener más información, consulte [AWS IoT Greengrass principios básicos de seguridad](gg-sec.md#gg-principals), [Integración de la seguridad de hardware](hardware-security.md) y [Despliega los secretos hasta la AWS IoT Greengrass médula](secrets.md). Se admiten las configuraciones para el almacenamiento de claves privadas en HSMs o dentro del sistema de archivos.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
También se admiten las siguientes propiedades de configuración:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**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**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**runtime**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
**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\$111 y almacenamiento secreto local. Para obtener más información, consulte [Integración de la seguridad de hardware](hardware-security.md) y [Despliega los secretos hasta la AWS IoT Greengrass médula](secrets.md). Se admiten las configuraciones para el almacenamiento de claves privadas en HSMs o dentro del sistema de archivos.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)
También se admiten las siguientes propiedades de configuración:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**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"
}
```
Si utiliza la opción de **creación de grupos predeterminados** de la AWS IoT Greengrass consola, el `config.json` archivo se despliega en el dispositivo principal en un estado de funcionamiento que especifica la configuración predeterminada.
El archivo `config.json` admite las siguientes propiedades:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**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:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**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:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**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:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

**GGC v1.0**  
En AWS IoT Greengrass Core v1.0, `config.json` se implementa 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:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)

------

## Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz.
<a name="certificate-endpoints"></a>

Los puntos de AWS IoT Greengrass conexión AWS IoT Core y los puntos de conexión 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 no se realizan correctamente. AWS IoT Greengrass Para obtener más información, consulte [Autenticación del servidor](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html) 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](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#greengrass-legacy-endpoints) en la *Referencia general de Amazon Web Services*.

### Puntos de enlace en config.json
<a name="certificate-endpoints-config"></a>

En un dispositivo central de Greengrass, los puntos de enlace se especifican en el objeto `coreThing` del archivo [`config.json`](#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 [https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-endpoint.html)CLI 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 es `greengrass-ats.iot.region.amazonaws.com`. Utiliza la misma región que su AWS IoT Core punto final.

## Realizar la conexión en el puerto 443 o a través de un proxy de red
<a name="alpn-network-proxy"></a>

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](https://tools.ietf.org/html/rfc7301) (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)](core-ota-update.md). 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`, 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 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](core-ota-update.md).<a name="config-mqtt-port"></a>

**Para configurar MQTT a través del puerto 443**

Esta función requiere la versión 1.7 de AWS IoT Greengrass Core o una versión 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
   ```

1. Abra `greengrass-root/config/config.json` para editarlo como usuario.

1. 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
       },
       ...
   }
   ```

1. Inicie el daemon.

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

 <a name="config-http-port"></a>

**Para configurar HTTPS a través del puerto 443**

Esta función requiere la versión 1.8 de AWS IoT Greengrass Core o una versión 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
   ```

1. Abra `greengrass-root/config/config.json` para editarlo como usuario.

1. 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
       },
       ...
   }
   ```

1. Inicie el daemon.

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

 <a name="config-network-proxy"></a>

**Para configurar un proxy de red**

Esta función requiere la versión 1.7 de AWS IoT Greengrass Core o una versión posterior.

Este procedimiento permite conectarse AWS IoT Greengrass 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
   ```

1. Abra `greengrass-root/config/config.json` para editarlo como usuario.

1. En el objeto `coreThing`, añada el objeto [networkProxy](#networkProxy-object), 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"
               }
           }
       },
       ...
   }
   ```

1. 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 | Description (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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/gg-core.html)  | 

### Permitir puntos de enlace
<a name="allow-endpoints-proxy"></a>

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 | Description (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 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.](#certificate-endpoints).  | 
| `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 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.](#certificate-endpoints).  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)](https://tools.ietf.org/html/rfc7301) y pasar `x-amzn-http-ca` como el `ProtocolName` en el `ProtocolNameList`. Para obtener más información, consulte [Protocolos](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) en la *Guía para desarrolladores de AWS IoT *.   | 
| \$1.s3.amazonaws.com | 443 |  Se utiliza para las operaciones de despliegue y las actualizaciones. over-the-air 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.  | 

## Configure un directorio de escritura para AWS IoT Greengrass
<a name="write-directory"></a>

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**

1. Ejecute el siguiente comando para detener el AWS IoT Greengrass daemon:

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. Abra `greengrass-root/config/config.json` para editarlo como usuario.

1. 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.

1. 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](#configure-ro-directory).

   De lo contrario, inicie el AWS IoT Greengrass daemon:

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

 <a name="configure-ro-directory"></a>

**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
      ```

   1. Haga a ggc\$1user 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\$1user y ggc\$1group se utilizan de forma predeterminada para ejecutar funciones de Lambda del sistema. Si ha configurado la [identidad de acceso predeterminada](lambda-group-config.md#lambda-access-identity-groupsettings) de nivel de grupo para utilizar distintas cuentas, debe proporcionar permisos a dicho usuario (UID) y grupo (GID) en su lugar.

1. 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 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](core-ota-update.md#ota-agent) y [Regeneración administrada con actualizaciones OTA](core-ota-update.md#ota-managed-respawn).

1. 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
<a name="configure-mqtt"></a>

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](gg-sec.md#gg-msg-workflow) 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:
+ [Mensaje de calidad del servicio](#message-quality-of-service)
+ [Cola de mensajes MQTT para objetivos en la nube](#mqtt-message-queue)
+ [Sesiones persistentes de MQTT con AWS IoT Core](#mqtt-persistent-sessions)
+ [Cliente IDs para conexiones MQTT con AWS IoT](#connection-client-id)
+ [Puerto MQTT para la mensajería local](#config-local-mqtt-port)
+ [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](#mqtt-operation-timeout)

**nota**  
<a name="sitewise-connector-opcua-support"></a>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 ](iot-sitewise-connector.md) 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
<a name="message-quality-of-service"></a>

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.

![\[El núcleo como cliente y agente de mensajes local.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/mqtt-qos.png)


Para obtener más información sobre MQTT y QoS, consulte [Introducción](https://mqtt.org/getting-started/) 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 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 el Región de AWS ITS 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](stream-manager.md) 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](#mqtt-message-queue)
+ **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](#mqtt-persistent-sessions)

**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](what-is-gg.md#greengrass-devices). El núcleo no almacena mensajes ni confirma entrega. Los mensajes se pueden dejar en cualquier lugar entre los componentes.  
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
<a name="mqtt-message-queue"></a>

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

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\$1CONFIG\$1STORAGE\$1TYPE**. 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\$1CONFIG\$1MAX\$1SIZE\$1BYTES**. 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
<a name="configure-local-storage-cache"></a>

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 [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html) 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. <a name="get-group-id-latestversion"></a>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**  
<a name="find-group-ids-console"></a>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.

1. <a name="copy-group-id-latestversion"></a>Copie los valores `Id` y `LatestVersion` del grupo de destino en la salida.

1. <a name="get-latest-group-version"></a>Obtenga la última versión del grupo.
   + Reemplace *group-id* por 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
   ```

1. <a name="copy-group-component-arns-except-function"></a>Del `Definition` objeto de la salida, copie los `CoreDefinitionVersionArn` y los demás componentes ARNs del grupo, excepto`FunctionDefinitionVersionArn`. Utilizará estos valores cuando cree una nueva versión del grupo.

1. <a name="parse-function-def-id"></a>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 [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html) y luego copiar el ID del resultado.

1. 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 el `Id` que copió para la definición de la función.
   + *arbitrary-function-id*Sustitúyalo por un nombre para la función, por ejemplo**spooler-function**.
   + Agregue las funciones de Lambda que desea incluir en esta versión de la matriz de `functions`. Puede utilizar el comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html) 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](#mqtt-persistent-sessions), inclúyela en esta instancia de función.

1. <a name="copy-function-def-version-arn"></a>Copie el `Arn` de la versión de definición de la característica del resultado.

1. <a name="create-group-version-with-sys-lambda"></a>Cree una versión de grupo que contenga la función de Lambda del sistema.
   + *group-id*Sustitúyala `Id` por la para el grupo.
   + *core-definition-version-arn*Sustitúyalo por el `CoreDefinitionVersionArn` que copió de la última versión del grupo.
   + *function-definition-version-arn*Sustitúyala por la `Arn` que copió para la nueva versión de definición de funciones.
   + Sustituya los ARNs demás componentes del grupo (por ejemplo, `SubscriptionDefinitionVersionArn` o`DeviceDefinitionVersionArn`) 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-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
   ```

1. <a name="copy-group-version-id"></a>Copie la `Version` del resultado. Este es el ID de la nueva versión del grupo.

1. <a name="create-group-deployment"></a>Implemente el grupo con la nueva versión del grupo.
   + *group-id*Sustitúyalo por el `Id` que copió para el grupo.
   + *group-version-id*Sustitúyala por la `Version` que copiaste para la nueva versión del 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 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
<a name="mqtt-persistent-sessions"></a>

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.](what-is-gg.md#greengrass-devices) 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](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt-persistent-sessions.html) 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\$1CONFIG\$1SUBSCRIPTION\$1QUALITY**. 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 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](#config-json-runtime) 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](#connection-client-id).

#### Para configurar sesiones persistentes de MQTT
<a name="configure-persistent-sessions"></a>

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 [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html) 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. <a name="get-group-id-latestversion"></a>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**  
<a name="find-group-ids-console"></a>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.

1. <a name="copy-group-id-latestversion"></a>Copie los valores `Id` y `LatestVersion` del grupo de destino en la salida.

1. <a name="get-latest-group-version"></a>Obtenga la última versión del grupo.
   + Reemplace *group-id* por 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
   ```

1. <a name="copy-group-component-arns-except-function"></a>Del `Definition` objeto de la salida, copie los `CoreDefinitionVersionArn` y los demás componentes ARNs del grupo, excepto`FunctionDefinitionVersionArn`. Utilizará estos valores cuando cree una nueva versión del grupo.

1. <a name="parse-function-def-id"></a>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 [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html) y luego copiar el ID del resultado.

1. 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 el `Id` que copió para la definición de la función.
   + *arbitrary-function-id*Sustitúyalo por un nombre para la función, por ejemplo**spooler-function**.
   + Agregue las funciones de Lambda que desea incluir en esta versión de la matriz de `functions`. Puede utilizar el comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html) 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](#mqtt-message-queue), inclúyalas en esta instancia de característica.

1. <a name="copy-function-def-version-arn"></a>Copie el `Arn` de la versión de definición de la característica del resultado.

1. <a name="create-group-version-with-sys-lambda"></a>Cree una versión de grupo que contenga la función de Lambda del sistema.
   + *group-id*Sustitúyalo `Id` por el para el grupo.
   + *core-definition-version-arn*Sustitúyalo por el `CoreDefinitionVersionArn` que copió de la última versión del grupo.
   + *function-definition-version-arn*Sustitúyala por la `Arn` que copió para la nueva versión de definición de funciones.
   + Sustituya los ARNs demás componentes del grupo (por ejemplo, `SubscriptionDefinitionVersionArn` o`DeviceDefinitionVersionArn`) 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-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
   ```

1. <a name="copy-group-version-id"></a>Copie la `Version` del resultado. Este es el ID de la nueva versión del grupo.

1. <a name="create-group-deployment"></a>Implemente el grupo con la nueva versión del grupo.
   + *group-id*Sustitúyalo por el `Id` que copió para el grupo.
   + *group-version-id*Sustitúyala por la `Version` que copiaste para la nueva versión del grupo.

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

1. (Opcional) Aumente la propiedad [maxWorkItemCount](#config-json-runtime) 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
<a name="connection-client-id"></a>

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](https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html) de vida. También puede crear una lógica en torno a un cliente predecible IDs (por ejemplo, [suscriba plantillas de políticas](https://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html#pub-sub-policy-cert) basadas en los atributos de los certificados).

------
#### [ 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 el cliente IDs para 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 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](#mqtt-persistent-sessions) 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](https://aws.amazon.com/greengrass/pricing/).

------
#### [ GGC v1.8 ]

Varios 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 | `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 viene determinado por el número de dispositivos (máximo 200 dispositivos por grupo) con los que se sincronizan su estado oculto AWS IoT Core (máximo 50 suscripciones por conexión). | 
| Administración de certificados de dispositivo | `core-thing-name-dcm` Ejemplo: `MyCoreThing-dcm` | 

------

**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](gg-troubleshooting.md#config-client-id).

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](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html) en la *Guía del desarrollador de AWS IoT *.

### Configuración del puerto MQTT para mensajería local
<a name="config-local-mqtt-port"></a>

Esta función requiere la versión 1.10 de AWS IoT Greengrass Core o una versión 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](what-is-gg.md#greengrass-devices). 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
   ```

1. Abra `greengrass-root/config/config.json` para editarlo como usuario.

1. 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
       },
       ...
   }
   ```

1. Inicie el daemon.

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

1. Si la [detección automática de IP](#ip-auto-detect) 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)**  

   1. En la página de configuración del grupo, elija el núcleo de Greengrass.

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

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

   1. 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`.

   1. 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](https://docs.aws.amazon.com/greengrass/v1/apireference/updateconnectivityinfo-put.html). 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. 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](#alpn-network-proxy).

### 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
<a name="mqtt-operation-timeout"></a>

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](#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
<a name="ip-auto-detect"></a>

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](gg-discover-api.md#gg-discover-auth).

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-version](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition-version.html)CLI para configurar la detección automática del núcleo de Greengrass.

1. <a name="get-group-id-latestversion"></a>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**  
<a name="find-group-ids-console"></a>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.

1. <a name="copy-group-id-latestversion"></a>Copie los valores `Id` y `LatestVersion` del grupo de destino en la salida.

1. <a name="get-latest-group-version"></a>Obtenga la última versión del grupo.
   + Reemplace *group-id* por 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
   ```

1. <a name="copy-group-component-arns-except-function"></a>Del `Definition` objeto de la salida, copie los `CoreDefinitionVersionArn` y los demás componentes ARNs del grupo, excepto`FunctionDefinitionVersionArn`. Utilizará estos valores cuando cree una nueva versión del grupo.

1. 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 [https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/create-function-definition.html) y luego copie el ID del resultado.

1.  Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-function-definition-version.html) para obtener la definición de estado actual. Utilice los *function-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-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. 

1.  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 el `Id` 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 ejemplo**auto-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
   ```

1. <a name="copy-function-def-version-arn"></a>Copie el `Arn` de la versión de definición de la característica del resultado.

1. <a name="create-group-version-with-sys-lambda"></a>Cree una versión de grupo que contenga la función de Lambda del sistema.
   + *group-id*Sustitúyalo `Id` por el para el grupo.
   + *core-definition-version-arn*Sustitúyalo por el `CoreDefinitionVersionArn` que copió de la última versión del grupo.
   + *function-definition-version-arn*Sustitúyala por la `Arn` que copió para la nueva versión de definición de funciones.
   + Sustituya los ARNs demás componentes del grupo (por ejemplo, `SubscriptionDefinitionVersionArn` o`DeviceDefinitionVersionArn`) 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-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
   ```

1. <a name="copy-group-version-id"></a>Copie la `Version` del resultado. Este es el ID de la nueva versión del grupo.

1. <a name="create-group-deployment"></a>Implemente el grupo con la nueva versión del grupo.
   + *group-id*Sustitúyalo por el `Id` que copió para el grupo.
   + *group-version-id*Sustitúyala por la `Version` que copiaste para la nueva versión del 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
<a name="start-on-boot"></a>

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](install-ggc.md#ggc-package-manager-systemd).

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](module1.md). A continuación, para utilizar systemd, asegúrese de que el parámetro `useSystemd` en [`config.json`](#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
<a name="cores-see-also"></a>
+ [¿Qué es AWS IoT Greengrass?](what-is-gg.md)
+ [Plataformas compatibles y requisitos](what-is-gg.md#gg-platforms)
+ [Empezar con AWS IoT Greengrass](gg-gs.md)
+ [Descripción general del modelo de objetos AWS IoT Greengrass grupales](deployments.md#api-overview)
+ [Integración de la seguridad de hardware](hardware-security.md)