Crear implementaciones - AWS IoT Greengrass

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

Puede crear una implementación que se dirija a una cosa o a un grupo de cosas.

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 aAWS CLI.

El objetivo de despliegue determina los dispositivos en los que desea ejecutar sus componentes. Para realizar la implementación en un dispositivo principal, especifique algo. Para realizar la implementación en varios dispositivos principales, especifique un grupo de cosas que incluya esos dispositivos. Para obtener más información sobre cómo configurar los grupos de cosas, consulte Grupos de cosas estáticos y Grupos de cosas dinámicos en la Guía para AWS IoT desarrolladores.

Siga los pasos de esta sección para crear un despliegue en un objetivo. Para obtener más información sobre cómo actualizar los componentes de software en un destino que tiene una implementación, consulteRevisar las implementaciones.

aviso

La CreateDeploymentoperación 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, utilice primero la ListDeploymentsoperación para comprobar si el destino de la implementación ya tiene una implementación existente. A continuación, utilice la GetDeploymentoperación para empezar desde esa implementación existente cuando cree una nueva implementación.

Para crear una implementación (AWS CLI)
  1. Cree un archivo llamado ydeployment.json, a continuación, copie el siguiente objeto JSON en el archivo. Sustituya TargetARN por el ARN de la cosa o grupo de cosas a AWS IoT la que se va a destinar la implementación. Los ARN de cosas y grupos de cosas 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" }
  2. Compruebe si el objetivo de la implementación tiene una implementación existente que desee revisar. Haga lo siguiente:

    1. Ejecute el siguiente comando para enumerar las implementaciones del destino de implementación. Sustituya TargetARN por el ARN de la cosa o grupo de cosas objetivo. AWS IoT

      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 puedes pasar a ella. Paso 3 De lo contrario, copie el deploymentId de la respuesta para usarlo en el paso siguiente.

      nota

      También puede revisar una implementación que no sea la última revisión del destino. Especifique el --history-filter ALL argumento para enumerar todos los despliegues del objetivo. A continuación, copie el ID de la implementación que desea revisar.

    2. 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. Sustituya DeploymentiD por el ID del paso anterior.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      La respuesta contiene los detalles de la implementación.

    3. Copie cualquiera de los siguientes pares clave-valor de la respuesta del comando anterior en. 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 del despliegue.

      • iotJobConfiguration— La configuración del trabajo de la implementación.

      • tags— Las etiquetas del despliegue.

  3. (Opcional) Defina un nombre para la implementación. Sustituya DeploymentName por el nombre de la implementación.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. Agregue cada componente para implementar los dispositivos de destino. Para ello, añada pares clave-valor al components objeto, 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 añada:

    • version— La versión del componente que se va a implementar.

    • configurationUpdate— La actualización de configuración 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 Restablecer las actualizaciones.

      • Fusionar actualizaciones (merge): (opcional) un documento JSON que define los valores de configuración que se van a combinar en el dispositivo de destino. Debe serializar el documento JSON como una cadena. Para obtener más información, consulte Fusiona las actualizaciones.

    • runWith— (Opcional) Las opciones de proceso del sistema que el software AWS IoT Greengrass principal utiliza para ejecutar los procesos de este componente en el dispositivo principal. Si omite un parámetro en el runWith objeto, el software AWS IoT Greengrass Core utilizará los valores predeterminados que configure en el componente núcleo de Greengrass.

      Puede especificar cualquiera de las siguientes opciones:

      • posixUser— El usuario del sistema POSIX y, opcionalmente, el grupo que se utilizará para ejecutar este componente en los dispositivos principales de Linux. El usuario y el grupo, si se especifican, 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 AWS IoT Greengrass Core utiliza el grupo principal para el usuario. Para obtener más información, consulte Configure el usuario que ejecuta los componentes.

      • windowsUser— El usuario de Windows que se utilizará para ejecutar este componente en los dispositivos principales de Windows. El usuario debe estar en todos los dispositivos principales de Windows y su nombre y contraseña deben estar almacenados en la instancia del administrador de credenciales de la LocalSystem cuenta. Para obtener más información, consulte Configure el usuario que ejecuta los componentes.

        Esta función está disponible para la versión 2.5.0 y versiones posteriores del componente núcleo de Greengrass.

      • systemResourceLimits— Los límites de recursos del sistema que se aplicarán a los procesos de este componente. Puede aplicar límites de recursos del sistema a los componentes Lambda genéricos y no contenerizados. Para obtener más información, consulte Configure los límites de recursos del sistema para los componentes.

        Puede especificar cualquiera de las siguientes opciones:

        • cpusLa cantidad máxima de tiempo de CPU que los procesos de este componente pueden utilizar 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 2 para limitar los procesos de este componente al 50 por ciento de uso de cada núcleo de CPU. En un dispositivo con 1 núcleo de CPU, puede establecer este valor 0.25 para limitar los procesos de este componente al 25 por ciento de uso de la CPU. Si establece este valor en un número superior al número de núcleos de la CPU, el software AWS IoT Greengrass Core no limita el uso de la CPU del componente.

        • memoryLa cantidad máxima de RAM (en kilobytes) que los procesos de este componente pueden utilizar en el dispositivo principal.

        Esta función está disponible para la versión 2.4.0 y versiones posteriores del componente núcleo de Greengrass. AWS IoT Greengrassactualmente no admite esta función en los dispositivos principales de Windows.

     

    ejemplo Ejemplo de actualización de configuración básica

    El siguiente components objeto de ejemplo especifica la implementación de un componente que espera un parámetro de configuración denominadopythonVersion. com.example.PythonRuntime

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

    Considere un ejemplo de componente de tablero industrialcom.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).

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

    3. 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 components objeto de ejemplo especifica la implementación de este componente del panel de control 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\"]}" } } } }
  5. (Opcional) Defina las políticas de implementación para 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, añada un deploymentPolicies objeto ydeployment.json, a continuación, realice una de las siguientes acciones:

    1. (Opcional) Especifique la política de actualización del componente (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 a que informen cuando estén listos para actualizarse. 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 SubscribeToComponentUpdates IPC 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.

      • timeoutInSecondsEl tiempo en segundos que cada componente tiene para responder a una notificación de actualización con la operación de DeferComponentUpdate IPC. Si el componente no responde dentro de este período de tiempo, la implementación continúa en el dispositivo principal.

        El valor predeterminado es 60 segundos.

    2. (Opcional) Especifique la política de validación de la configuración (configurationValidationPolicy). Esta política define cuánto tiempo tiene cada componente para validar una actualización de configuración de una implementación. Los componentes pueden usar la operación SubscribeToValidateConfigurationUpdates IPC para suscribirse a las notificaciones de sus propias actualizaciones de configuración. A continuación, los componentes pueden utilizar la operación SendConfigurationValidityReport IPC para indicar al software AWS IoT Greengrass principal si la actualización de configuración es válida. Si la actualización de la configuración no es válida, se produce un error en la implementación.

      Esta política es un objeto con el siguiente parámetro:

      • timeoutInSeconds(Opcional) La cantidad de tiempo en segundos que cada componente tiene para validar una actualización de configuración. Si el componente no responde dentro de este período de tiempo, la implementación continúa en el dispositivo principal.

        El valor predeterminado es 30 segundos.

    3. (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 rompan si la nueva configuración no es válida.

      El valor predeterminado es ROLLBACK.

    Su implementación deployment.json puede tener un aspecto similar al del 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" } }
  6. (Opcional) Defina cómo se detiene, se despliega o se agota el tiempo de espera de la implementación. AWS IoT Greengrassusa los AWS IoT Core trabajos para enviar las implementaciones a los dispositivos principales, por lo que estas opciones son idénticas a las opciones de configuración de los AWS IoT Core trabajos. Para obtener más información, consulte Configuración de implementación y cancelación de trabajos en la Guía para AWS IoT desarrolladores.

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

    Su implementación deployment.json puede tener un aspecto similar 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 } } }
  7. (Opcional) Agregue etiquetas (tags) para la implementación. Para obtener más información, consulte Etiquetar los recursos de AWS IoT Greengrass Version 2.

  8. Ejecute el siguiente comando para crear la implementación desdedeployment.json.

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

    La respuesta incluye una deploymentId que identifica esta implementación. Puede usar el ID de implementación para comprobar el estado de la implementación. Para obtener más información, consulte Verificar el estado de implementación.