

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.

# Crear implementaciones
<a name="create-deployments"></a>

Puede crear una implementación que se dirija a un objeto o un grupo de objetos.

Al crear una implementación, se configuran los componentes de software que se van a implementar y la forma en que el trabajo de implementación se extiende a los dispositivos de destino. Puede definir la implementación en el archivo JSON que proporciona a AWS CLI.

El destino de implementación determina los dispositivos en los que desea ejecutar sus componentes. Para realizar la implementación en un dispositivo principal, especifique un objeto. Para realizar la implementación en varios dispositivos principales, especifique un grupo de objetos que incluya esos dispositivos. Para obtener más información acerca de cómo configurar los grupos de objetos, consulte [Grupos de objetos estáticos](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html) y [Grupos de objetos dinámicos](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) en la *Guía para desarrolladores de AWS IoT*.

Siga los pasos en esta sección para crear una implementación en un destino. Para obtener más información sobre cómo actualizar los componentes de software en un destino que tiene una implementación, consulte [Revisión de las implementaciones](revise-deployments.md).

**aviso**  
La operación [CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html) puede desinstalar componentes de los dispositivos principales. Si un componente está presente en la implementación anterior y no en la nueva, el dispositivo principal desinstala ese componente. Para evitar la desinstalación de los componentes, use primero la operación [ListDeployments](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListDeployments.html) para comprobar si el destino de la implementación ya tiene una implementación existente. A continuación, use la operación [GetDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetDeployment.html) para empezar desde esa implementación existente al crear una nueva implementación.

**Creación de una implementación (AWS CLI)**

1. Cree un archivo llamado `deployment.json` y, a continuación, copie el siguiente objeto JSON en el archivo. Reemplace *targetArn* por el ARN del objeto o grupo de objetos AWS IoT al que se va a destinar la implementación. Los ARN de objetos y grupos de objetos tienen el siguiente formato:
   + Cosa: `arn:aws:iot:region:account-id:thing/thingName`
   + Grupo de cosas: `arn:aws:iot:region:account-id:thinggroup/thingGroupName`

   ```
   {
     "targetArn": "targetArn"
   }
   ```

1. Compruebe si el objetivo de la implementación tiene una implementación existente que desee revisar. Haga lo siguiente:

   1. <a name="revise-deployment-list-deployments-intro"></a>Ejecute el siguiente comando para enumerar las implementaciones del destino de implementación. Reemplace *targetArn* por el ARN del objeto de AWS IoT o el grupo de objetos de destino.

      ```
      aws greengrassv2 list-deployments --target-arn targetArn
      ```

      La respuesta contiene una lista con la implementación más reciente del objetivo. Si la respuesta está vacía, significa que el destino no tiene una implementación existente y puede ir directamente a [Step 3](#create-deployment-define-name-step). De lo contrario, copie el `deploymentId` de la respuesta para usarlo en el paso siguiente.
**nota**  <a name="revise-deployment-list-deployments-revision-note"></a>
También puede revisar una implementación que no sea la revisión más reciente del destino. Especifique el argumento `--history-filter ALL` para enumerar todas las implementaciones del destino. A continuación, copie el ID de la implementación que desee revisar.

   1. <a name="revise-deployment-get-deployment"></a>Ejecute el siguiente comando para obtener los detalles de la implementación. Estos detalles incluyen los metadatos, los componentes y la configuración del trabajo. Reemplace *deploymentId* por el ID del paso anterior.

      ```
      aws greengrassv2 get-deployment --deployment-id deploymentId
      ```

      La respuesta contiene los detalles de la implementación.

   1. Copie cualquiera de los siguientes pares clave-valor de la respuesta del comando anterior a `deployment.json`. Puede cambiar estos valores para la nueva implementación.
      + `deploymentName`: el nombre de la implementación.
      + `components`: los componentes de la implementación. Para desinstalar un componente, elimínelo de este objeto.
      + `deploymentPolicies`: las políticas de la implementación.
      + `iotJobConfiguration`: la configuración del trabajo de la implementación.
      + `tags`: las etiquetas de la implementación.

1. <a name="create-deployment-define-name-step"></a>(Opcional) Defina un nombre para la implementación. Reemplace *deploymentName* con el nombre de la implementación.

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName"
   }
   ```

1. Agregue cada componente para implementar los dispositivos de destino. Para ello, agregue pares clave-valor al objeto `components`, donde la clave es el nombre del componente y el valor es un objeto que contiene los detalles de ese componente. Especifique los siguientes detalles para cada componente que agregue:
   + `version`: la versión del componente que se va a implementar.
   + `configurationUpdate`: la [actualización de configuración](update-component-configurations.md) que se va a implementar. La actualización es una operación de parche que modifica la configuración existente del componente en cada dispositivo de destino o la configuración predeterminada del componente si no existe en el dispositivo de destino. Puede especificar las siguientes actualizaciones de configuración:
     + Restablecer actualizaciones (`reset`): (opcional) una lista de punteros JSON que definen los valores de configuración para restablecer sus valores predeterminados en el dispositivo de destino. El software AWS IoT Greengrass Core aplica las actualizaciones de restablecimiento antes de aplicar las actualizaciones de combinación. Para obtener más información, consulte [Actualizaciones de restablecimiento](update-component-configurations.md#reset-configuration-update).
     + Combinar actualizaciones (`merge`): (opcional) un documento JSON que define los valores de configuración que se van a fusionar en el dispositivo de destino. Debe serializar el documento JSON como una cadena. Para obtener más información, consulte [Actualizaciones de combinación](update-component-configurations.md#merge-configuration-update).
   + <a name="component-run-with-config"></a>`runWith`: (opcional) las opciones de proceso del sistema que usa el software AWS IoT Greengrass Core para ejecutar los procesos de este componente en el dispositivo principal. Si omite un parámetro en el objeto `runWith`, el software AWS IoT Greengrass Core usa los valores predeterminados que configure en el [componente núcleo de Greengrass](greengrass-nucleus-component.md).

     Puede especificar cualquiera de las siguientes opciones:
     + `posixUser`: el usuario del sistema POSIX y, opcionalmente, el grupo que se usan para ejecutar este componente en dispositivos principales de Linux. El usuario y el grupo, si se especifica, deben existir en cada dispositivo principal de Linux. Especifique el usuario y el grupo separados por dos puntos (`:`) con el siguiente formato: `user:group`. El grupo es opcional. Si no especifica un grupo, el software principal de AWS IoT Greengrass utiliza el usuario principal del grupo. Para obtener más información, consulte [Configuración del usuario que ejecuta los componentes](configure-greengrass-core-v2.md#configure-component-user).
     + `windowsUser`: el usuario de Windows que se usa para ejecutar este componente en los dispositivos principales de Windows. El usuario debe existir en cada dispositivo principal de Windows y su nombre y contraseña deben estar en la instancia del Administrador de credenciales de la cuenta LocalSystem. Para obtener más información, consulte [Configuración del usuario que ejecuta los componentes](configure-greengrass-core-v2.md#configure-component-user).

       Esta característica está disponible para la versión 2.5.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).
     + `systemResourceLimits`: los límites de recursos del sistema que se aplican a los procesos de este componente. Puede aplicar límites de recursos del sistema a los componentes de Lambda genéricos y no contenerizados. Para obtener más información, consulte [Configuración de los límites de recursos del sistema para los componentes](configure-greengrass-core-v2.md#configure-component-system-resource-limits).

       Puede especificar cualquiera de las siguientes opciones:
       + `cpus`: <a name="system-resource-limits-cpu-definition-this"></a>la cantidad máxima de tiempo de CPU que los procesos de este componente pueden usar en el dispositivo principal. El tiempo total de CPU de un dispositivo principal equivale a la cantidad de núcleos de CPU del dispositivo. Por ejemplo, en un dispositivo principal con 4 núcleos de CPU, puede establecer este valor en `2` para limitar los procesos del componente al 50 % de uso de cada núcleo de CPU. En un dispositivo con 1 núcleo de CPU, puede establecer este valor en `0.25` para limitar los procesos del componente al 25 % de uso de la CPU. Si se establece este valor en un número mayor que la cantidad de núcleos de la CPU, el software AWS IoT Greengrass Core no limita el uso de la CPU del componente. 
       + `memory`: <a name="system-resource-limits-memory-definition-this"></a>la cantidad máxima de RAM, expresada en kilobytes, que los procesos de un componente pueden usar en el dispositivo principal. 

       Esta característica está disponible para la versión 2.4.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md). AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows. 

      
**Example Ejemplo de actualización de la configuración básica**  

   El siguiente objeto `components` de muestra especifica la implementación de un componente, `com.example.PythonRuntime`, que espera un parámetro de configuración denominado `pythonVersion`.

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.PythonRuntime": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "merge": "{\"pythonVersion\":\"3.7\"}"
         }
       }
     }
   }
   ```  
**Example Ejemplo de actualización de configuración con actualizaciones de restablecimiento y combinación**  

   Considere un ejemplo de componente de tablero industrial, `com.example.IndustrialDashboard`, que tiene la siguiente configuración predeterminada.

   ```
   {
     "name": null,
     "mode": "REQUEST",
     "network": {
       "useHttps": true,
       "port": {
         "http": 80,
         "https": 443
       },
     },
     "tags": []
   }
   ```

   La siguiente actualización de configuración especifica las siguientes instrucciones:

   1. Restablezca la configuración HTTPS a su valor predeterminado (`true`).

   1. Restablezca la lista de etiquetas industriales a una lista vacía.

   1. Combine una lista de etiquetas industriales que identifiquen los flujos de datos de temperatura y presión de dos calderas.

   ```
   {
     "reset": [
       "/network/useHttps",
       "/tags"
     ],
     "merge": {
       "tags": [
         "/boiler/1/temperature",
         "/boiler/1/pressure",
         "/boiler/2/temperature",
         "/boiler/2/pressure"
       ]
     }
   }
   ```

   El siguiente objeto `components` de ejemplo especifica la implementación de este componente del tablero industrial y la actualización de la configuración.

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     }
   }
   ```

1. (Opcional) Defina las políticas de implementación de la implementación. Puede configurar cuándo los dispositivos principales pueden aplicar una implementación de forma segura o qué hacer si un dispositivo principal no puede aplicar la implementación. Para ello, agregue un objeto `deploymentPolicies` a `deployment.json` y, a continuación, realice una de las siguientes acciones:

   1. (Opcional) Especifique la política de actualización de los componentes (`componentUpdatePolicy`). Esta política define si la implementación permite o no a los componentes aplazar una actualización hasta que estén listos para actualizarse. Por ejemplo, es posible que los componentes deban agotar recursos o completar acciones críticas antes de poder reiniciarse para aplicar una actualización. Esta política también define el tiempo del que disponen los componentes para responder a una notificación de actualización.

      Esta política es un objeto con los siguientes parámetros:
      + `action`: (opcional) si se debe notificar o no a los componentes y esperar que informen cuando estén listos para actualizar. Puede elegir entre las siguientes opciones:
        + `NOTIFY_COMPONENTS`: la implementación notifica a cada componente antes de que se detenga y actualice ese componente. Los componentes pueden usar la operación IPC [SubscribeToComponentUpdates](ipc-component-lifecycle.md#ipc-operation-subscribetocomponentupdates) para recibir estas notificaciones.
        + `SKIP_NOTIFY_COMPONENTS`: la implementación no notifica a los componentes ni espera a que se confirme que se pueden actualizar con seguridad.

        El valor predeterminado es `NOTIFY_COMPONENTS`.
      + `timeoutInSeconds`: la cantidad de tiempo en segundos que tiene cada componente para responder a una notificación de actualización con la operación IPC [DeferComponentUpdate](ipc-component-lifecycle.md#ipc-operation-defercomponentupdate). Si el componente no responde en este periodo, la implementación continúa en el dispositivo principal.

        El valor predeterminado es de 60 segundos.

   1. (Opcional) Especifique la política de validación de la configuración (`configurationValidationPolicy`). Esta política define la cantidad de tiempo que tiene cada componente para validar una actualización de configuración de una implementación. Los componentes pueden usar la operación IPC [SubscribeToValidateConfigurationUpdates](ipc-component-configuration.md#ipc-operation-subscribetovalidateconfigurationupdates) para suscribirse a las notificaciones de sus propias actualizaciones de configuración. A continuación, los componentes pueden usar la operación IPC [SendConfigurationValidityReport](ipc-component-configuration.md#ipc-operation-sendconfigurationvalidityreport) para indicar al software AWS IoT Greengrass Core si la actualización de configuración es válida. Si la actualización de la configuración no es válida, la implementación devuelve un error.

      Esta política es un objeto con el siguiente parámetro:
      + `timeoutInSeconds`: (opcional) la cantidad de tiempo en segundos que cada componente posee para validar la actualización de configuración. Si el componente no responde en este periodo, la implementación continúa en el dispositivo principal.

        El valor predeterminado es 30 segundos.

   1. (Opcional) Especifique la política de gestión de errores (`failureHandlingPolicy`). Esta política es una cadena que define si se deben revertir o no los dispositivos en caso de que se produzca un error en la implementación. Puede elegir entre las siguientes opciones:
      + `ROLLBACK`: si la implementación falla en un dispositivo principal, el software AWS IoT Greengrass Core restaura ese dispositivo principal a su configuración anterior.
      + `DO_NOTHING`: si la implementación falla en un dispositivo principal, el software AWS IoT Greengrass Core conserva la nueva configuración. Esto puede provocar que los componentes se estropeen si la nueva configuración no es válida.

      El valor predeterminado es `ROLLBACK`.

   Su implementación en `deployment.json` puede parecerse al siguiente ejemplo:

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     },
     "deploymentPolicies": {
       "componentUpdatePolicy": {
         "action": "NOTIFY_COMPONENTS",
         "timeoutInSeconds": 30
       },
       "configurationValidationPolicy": {
         "timeoutInSeconds": 60
       },
       "failureHandlingPolicy": "ROLLBACK"
     }
   }
   ```

1. (Opcional) Defina cómo se detiene, se implementa o se agota el tiempo de espera de la implementación. AWS IoT Greengrass usa los trabajos AWS IoT Core para enviar las implementaciones a los dispositivos principales, por lo que estas opciones son idénticas a las opciones de configuración de los trabajos AWS IoT Core. Para obtener más información, consulte la [configuración de implementación y cancelación de trabajos](https://docs.aws.amazon.com/iot/latest/developerguide/job-rollout-abort.html) en la *Guía para desarrolladores de AWS IoT*.

   Para definir las opciones de trabajo, agregue un objeto `iotJobConfiguration` a `deployment.json`. A continuación, defina las opciones que desee configurar.

   Su implementación en `deployment.json` puede parecerse al siguiente ejemplo:

   ```
   {
     "targetArn": "targetArn",
     "deploymentName": "deploymentName",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     },
     "deploymentPolicies": {
       "componentUpdatePolicy": {
         "action": "NOTIFY_COMPONENTS",
         "timeoutInSeconds": 30
       },
       "configurationValidationPolicy": {
         "timeoutInSeconds": 60
       },
       "failureHandlingPolicy": "ROLLBACK"
     },
     "iotJobConfiguration": {
       "abortConfig": {
         "criteriaList": [
           {
             "action": "CANCEL",
             "failureType": "ALL",
             "minNumberOfExecutedThings": 100,
             "thresholdPercentage": 5
           }
         ]
       },
       "jobExecutionsRolloutConfig": {
         "exponentialRate": {
           "baseRatePerMinute": 5,
           "incrementFactor": 2,
           "rateIncreaseCriteria": {
             "numberOfNotifiedThings": 10,
             "numberOfSucceededThings": 5
           }
         },
         "maximumPerMinute": 50
       },
       "timeoutConfig":  {
         "inProgressTimeoutInMinutes": 5
       }
     }
   }
   ```

1. (Opcional) Agregue etiquetas (`tags`) para la implementación. Para obtener más información, consulte [Etiquete sus AWS IoT Greengrass Version 2 recursos](tag-resources.md).

1. Ejecute el siguiente comando para crear la implementación de `deployment.json`.

   ```
   aws greengrassv2 create-deployment --cli-input-json file://deployment.json
   ```

   <a name="check-new-deployment-status"></a>La respuesta incluye un `deploymentId` que identifica esta implementación. Puede usar el ID de la implementación para comprobar el estado de la implementación. Para obtener más información, consulte [Comprobación del estado de la implementación](check-deployment-status.md#check-cloud-deployment-status).

# Actualización de las configuraciones de los componentes
<a name="update-component-configurations"></a>

Las configuraciones de los componentes son objetos JSON que definen los parámetros de cada componente. La receta de cada componente define su configuración predeterminada, que puede modificar al implementar los componentes en los dispositivos principales.

Al crear una implementación, puede especificar la *actualización de configuración* que se aplicará a cada componente. Las actualizaciones de configuración son operaciones de parche, lo que significa que la actualización modifica la configuración del componente que existe en el dispositivo principal. Si el dispositivo principal no tiene el componente, la actualización de configuración modifica y aplica la configuración predeterminada para esa implementación.

La actualización de configuración define las actualizaciones de *restablecimiento* y las actualizaciones de *combinación*. Las actualizaciones de restablecimiento definen qué valores de configuración se deben restablecer a sus valores predeterminados o eliminar. Las actualizaciones de combinación definen los nuevos valores de configuración que se deben establecer para el componente. Al implementar una actualización de configuración, el software AWS IoT Greengrass principal ejecuta la actualización de restablecimiento antes de la actualización de fusión.

Los componentes pueden validar las actualizaciones de configuración que se implementen. El componente se suscribe para recibir una notificación cuando una implementación cambia su configuración y puede rechazar una configuración que no sea compatible. Para obtener más información, consulte [Interacción con la configuración de componentes](ipc-component-configuration.md).

**Topics**
+ [Actualizaciones de restablecimiento](#reset-configuration-update)
+ [Actualizaciones de combinación](#merge-configuration-update)
+ [Ejemplos](#configuration-update-example)

## Actualizaciones de restablecimiento
<a name="reset-configuration-update"></a>

Las actualizaciones de restablecimiento definen qué valores de configuración se deben restablecer a sus valores predeterminados en el dispositivo principal. Si un valor de configuración no tiene un valor predeterminado, la actualización de restablecimiento elimina ese valor de la configuración del componente. Esto puede ayudarlo a reparar un componente que se interrumpe como resultado de una configuración no válida.

Utilice una lista de punteros JSON para definir qué valores de configuración desea restablecer. Los punteros JSON comienzan con una barra diagonal `/`. Para identificar un valor en una configuración de componentes anidados, use barras diagonales (`/`) para separar las claves de cada nivel de la configuración. Para obtener más información, consulte la [especificación de puntero JSON](https://tools.ietf.org/html/rfc6901).

**nota**  
Solo puede restablecer los valores predeterminados de una lista completa. No puede usar las actualizaciones de restablecimiento para restablecer un elemento individual de una lista. 

Para restablecer la configuración completa de un componente a sus valores predeterminados, especifique una única cadena vacía como actualización de restablecimiento.

```
"reset": [""]
```

## Actualizaciones de combinación
<a name="merge-configuration-update"></a>

Las actualizaciones de combinación definen los valores de configuración que se van a insertar en la configuración de los componentes principales. La actualización de fusión es un objeto JSON que el software AWS IoT Greengrass principal fusiona después de restablecer los valores de las rutas que se especificaron en la actualización de restablecimiento. Al usar AWS CLI o AWS SDKs, debe serializar este objeto JSON como una cadena.

Puede combinar un par clave-valor que no exista en la configuración predeterminada del componente. También puede combinar un par clave-valor que tenga un tipo diferente al del valor con la misma clave. El nuevo valor reemplaza al valor anterior. Esto significa que puede cambiar la estructura del objeto de configuración.

Puede combinar valores nulos y cadenas, listas y objetos vacíos.

**nota**  
No puede utilizar las actualizaciones de combinación para insertar o agregar un elemento a una lista. Puede reemplazar una lista completa o definir un objeto en el que cada elemento tenga una clave única.  
<a name="configuration-value-type-note"></a>AWS IoT Greengrass usa JSON para los valores de configuración. JSON especifica un tipo de número, pero no diferencia entre números enteros y flotantes. Como resultado, los valores de configuración pueden convertirse en valores flotantes en AWS IoT Greengrass. Para garantizar que su componente use el tipo de datos correcto, le recomendamos que defina los valores de configuración numéricos como cadenas. A continuación, pida a su componente que los analice como enteros o flotantes. Esto garantiza que los valores de configuración sean del mismo tipo en la configuración y en el dispositivo principal.

### Uso de variables de receta en las actualizaciones de combinación
<a name="merge-configuration-update-recipe-variables"></a>

Esta característica está disponible para la versión 2.6.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).

Si establece la opción de [interpolateComponentConfiguration](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-interpolate-component-configuration)configuración del núcleo de Greengrass en`true`, puede utilizar variables de receta distintas de la variable de `component_dependency_name:configuration:json_pointer` receta en las actualizaciones de fusión. Por ejemplo, puede usar la variable de `{iot:thingName}` receta en una actualización de fusión para incluir el nombre del dispositivo principal en el valor de AWS IoT la configuración de un componente, como una política de autorización de [comunicación entre procesos (IPC](interprocess-communication.md#ipc-authorization-policies)).

## Ejemplos
<a name="configuration-update-example"></a>

En el siguiente ejemplo, se muestran las actualizaciones de configuración de un componente del panel que tiene la siguiente configuración predeterminada. Este componente de ejemplo muestra información sobre el equipo industrial.

```
{
  "name": null,
  "mode": "REQUEST",
  "network": {
    "useHttps": true,
    "port": {
      "http": 80,
      "https": 443
    },
  },
  "tags": []
}
```

### Receta de componentes para paneles industriales
<a name="w2ab1c24c25c22c16c17b7b1"></a>

------
#### [ JSON ]

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.IndustrialDashboard",
  "ComponentVersion": "1.0.0",
  "ComponentDescription": "Displays information about industrial equipment.",
  "ComponentPublisher": "Amazon",
  "ComponentConfiguration": {
    "DefaultConfiguration": {
      "name": null,
      "mode": "REQUEST",
      "network": {
        "useHttps": true,
        "port": {
          "http": 80,
          "https": 443
        },
      },
      "tags": []
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux"
      },
      "Lifecycle": {
        "Run": "python3 -u {artifacts:path}/industrial_dashboard.py"
      }
    },
    {
      "Platform": {
        "os": "windows"
      },
      "Lifecycle": {
        "Run": "py -3 -u {artifacts:path}/industrial_dashboard.py"
      }
    }
  ]
}
```

------
#### [ YAML ]

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.IndustrialDashboard
ComponentVersion: '1.0.0'
ComponentDescription: Displays information about industrial equipment.
ComponentPublisher: Amazon
ComponentConfiguration:
  DefaultConfiguration:
    name: null
    mode: REQUEST
    network:
      useHttps: true
      port:
        http: 80
        https: 443
    tags: []
Manifests:
  - Platform:
      os: linux
    Lifecycle:
      Run: |
        python3 -u {artifacts:path}/industrial_dashboard.py
  - Platform:
      os: windows
    Lifecycle:
      Run: |
        py -3 -u {artifacts:path}/industrial_dashboard.py
```

------

**Example Ejemplo 1: actualización de combinación**  
Cree una implementación que aplique la siguiente actualización de configuración, que especifica una actualización de combinación, pero no una actualización de restablecimiento. Esta actualización de configuración indica al componente que muestre el panel en el puerto HTTP 8080 con los datos de dos calderas.    
**Configuración de combinación**  

```
{
  "name": "Factory 2A",
  "network": {
    "useHttps": false,
    "port": {
      "http": 8080
    }
  },
  "tags": [
    "/boiler/1/temperature",
    "/boiler/1/pressure",
    "/boiler/2/temperature",
    "/boiler/2/pressure"
  ]
}
```
El siguiente comando crea una implementación a un dispositivo principal.  

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment.json
```
El archivo `dashboard-deployment.json` contiene el siguiente documento JSON.  

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "com.example.IndustrialDashboard": {
      "componentVersion": "1.0.0",
      "configurationUpdate": {
        "merge": "{\"name\":\"Factory 2A\",\"network\":{\"useHttps\":false,\"port\":{\"http\":8080}},\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
      }
    }
  }
}
```
El siguiente comando de la [CLI de Greengrass](greengrass-cli-component.md) crea una implementación local en un dispositivo principal.  

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "com.example.IndustrialDashboard=1.0.0" \
  --update-config dashboard-configuration.json
```
El archivo `dashboard-configuration.json` contiene el siguiente documento JSON.  

```
{
  "com.example.IndustrialDashboard": {
    "MERGE": {
      "name": "Factory 2A",
      "network": {
        "useHttps": false,
        "port": {
          "http": 8080
        }
      },
      "tags": [
        "/boiler/1/temperature",
        "/boiler/1/pressure",
        "/boiler/2/temperature",
        "/boiler/2/pressure"
      ]
    }
  }
}
```
Tras esta actualización, el componente del panel tiene la siguiente configuración.  

```
{
  "name": "Factory 2A",
  "mode": "REQUEST",
  "network": {
    "useHttps": false,
    "port": {
      "http": 8080,
      "https": 443
    }
  },
  "tags": [
    "/boiler/1/temperature",
    "/boiler/1/pressure",
    "/boiler/2/temperature",
    "/boiler/2/pressure"
  ]
}
```

**Example Ejemplo 2: actualizaciones de restablecimiento y combinación**  
A continuación, cree una implementación que aplique la siguiente actualización de configuración, que especifica una actualización de combinación y una actualización de restablecimiento. Estas actualizaciones especifican mostrar el panel en el puerto HTTPS predeterminado con datos de diferentes calderas. Estas actualizaciones modifican la configuración resultante de las actualizaciones de configuración del ejemplo anterior.    
**Restablecer las rutas**  

```
[
  "/network/useHttps",
  "/tags"
]
```  
**Configuración de combinación**  

```
{
  "tags": [
    "/boiler/3/temperature",
    "/boiler/3/pressure",
    "/boiler/4/temperature",
    "/boiler/4/pressure"
  ]
}
```
El siguiente comando crea una implementación a un dispositivo principal.  

```
aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment2.json
```
El archivo `dashboard-deployment2.json` contiene el siguiente documento JSON.  

```
{
  "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
  "deploymentName": "Deployment for MyGreengrassCore",
  "components": {
    "com.example.IndustrialDashboard": {
      "componentVersion": "1.0.0",
      "configurationUpdate": {
        "reset": [
          "/network/useHttps",
          "/tags"
        ],
        "merge": "{\"tags\":[\"/boiler/3/temperature\",\"/boiler/3/pressure\",\"/boiler/4/temperature\",\"/boiler/4/pressure\"]}"
      }
    }
  }
}
```
El siguiente comando de la [CLI de Greengrass](greengrass-cli-component.md) crea una implementación local en un dispositivo principal.  

```
sudo greengrass-cli deployment create \
  --recipeDir recipes \
  --artifactDir artifacts \
  --merge "com.example.IndustrialDashboard=1.0.0" \
  --update-config dashboard-configuration2.json
```
El archivo `dashboard-configuration2.json` contiene el siguiente documento JSON.  

```
{
  "com.example.IndustrialDashboard": {
    "RESET": [
      "/network/useHttps",
      "/tags"
    ],
    "MERGE": {
      "tags": [
        "/boiler/3/temperature",
        "/boiler/3/pressure",
        "/boiler/4/temperature",
        "/boiler/4/pressure"
      ]
    }
  }
}
```
Tras esta actualización, el componente del panel tiene la siguiente configuración.  

```
{
  "name": "Factory 2A",
  "mode": "REQUEST",
  "network": {
    "useHttps": true,
    "port": {
      "http": 8080,
      "https": 443
    }
  },
  "tags": [
    "/boiler/3/temperature",
    "/boiler/3/pressure",
    "/boiler/4/temperature",
    "/boiler/4/pressure",
  ]
}
```