View a markdown version of this page

Créer des déploiements - AWS IoT Greengrass

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créer des déploiements

Vous pouvez créer un déploiement qui cible un objet ou un groupe d'objets.

Lorsque vous créez un déploiement, vous configurez les composants logiciels à déployer et la manière dont la tâche de déploiement est déployée sur les appareils cibles. Vous pouvez définir le déploiement dans le fichier JSON que vous fournissez au AWS CLI.

La cible de déploiement détermine les appareils sur lesquels vous souhaitez exécuter vos composants. Pour déployer sur un appareil principal, spécifiez un élément. Pour déployer sur plusieurs appareils principaux, spécifiez un groupe d'objets qui inclut ces appareils. Pour plus d'informations sur la configuration des groupes d'objets, consultez les rubriques Groupes d'objets statiques et Groupes d'objets dynamiques dans le Guide du AWS IoT développeur.

Suivez les étapes de cette section pour créer un déploiement vers une cible. Pour plus d'informations sur la mise à jour des composants logiciels sur une cible qui dispose d'un déploiement, consultezRéviser les déploiements.

Avertissement

L'CreateDeploymentopération peut désinstaller des composants des appareils principaux. Si un composant est présent dans le déploiement précédent et non dans le nouveau déploiement, le périphérique principal désinstalle ce composant. Pour éviter de désinstaller des composants, commencez ListDeployments par vérifier si la cible du déploiement possède déjà un déploiement existant. Utilisez ensuite l'GetDeploymentopération pour commencer à partir de ce déploiement existant lorsque vous créez un nouveau déploiement.

Pour créer un déploiement (AWS CLI)
  1. Créez un fichier appelédeployment.json, puis copiez l'objet JSON suivant dans le fichier. targetArnRemplacez-le par l'ARN de l' AWS IoT objet ou du groupe d'objets à cibler pour le déploiement. Les ARN d'objets et de groupes d'objets ont le format suivant :

    • Objet : arn:aws:iot:region:account-id:thing/thingName

    • Groupe d'objets : arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  2. Vérifiez si la cible de déploiement possède un déploiement existant que vous souhaitez modifier. Procédez comme suit :

    1. Exécutez la commande suivante pour répertorier les déploiements pour la cible de déploiement. Remplacez targetArn par l'ARN de l' AWS IoT objet ou du groupe d'objets cible.

      aws greengrassv2 list-deployments --target-arn targetArn

      La réponse contient une liste avec le dernier déploiement pour la cible. Si la réponse est vide, cela signifie que la cible n'a pas de déploiement existant et vous pouvez passer àÉtape 3. Sinon, copiez l'deploymentIdextrait de la réponse pour l'utiliser à l'étape suivante.

      Note

      Vous pouvez également modifier un déploiement autre que la dernière révision pour la cible. Spécifiez l'--history-filter ALLargument pour répertorier tous les déploiements pour la cible. Copiez ensuite l'ID du déploiement que vous souhaitez modifier.

    2. Exécutez la commande suivante pour obtenir les détails du déploiement. Ces informations incluent les métadonnées, les composants et la configuration des tâches. deploymentIdRemplacez-le par l'identifiant de l'étape précédente.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      La réponse contient les détails du déploiement.

    3. Copiez l'une des paires clé-valeur suivantes depuis la réponse de la commande précédente dans. deployment.json Vous pouvez modifier ces valeurs pour le nouveau déploiement.

      • deploymentName— Le nom du déploiement.

      • components— Les composants du déploiement. Pour désinstaller un composant, supprimez-le de cet objet.

      • deploymentPolicies— Les politiques du déploiement.

      • iotJobConfiguration— Configuration des tâches du déploiement.

      • tags— Les tags du déploiement.

  3. (Facultatif) Définissez un nom pour le déploiement. Remplacez deploymentName par le nom du déploiement.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. Ajoutez chaque composant pour déployer les équipements cibles. Pour ce faire, ajoutez des paires clé-valeur à l'componentsobjet, la clé étant le nom du composant et la valeur étant un objet contenant les détails de ce composant. Spécifiez les informations suivantes pour chaque composant que vous ajoutez :

    • version— La version du composant à déployer.

    • configurationUpdate— La mise à jour de configuration à déployer. La mise à jour est une opération de correctif qui modifie la configuration existante du composant sur chaque machine cible, ou la configuration par défaut du composant s'il n'existe pas sur la machine cible. Vous pouvez spécifier les mises à jour de configuration suivantes :

      • Réinitialiser les mises à jour (reset) — (Facultatif) Une liste de pointeurs JSON qui définissent les valeurs de configuration pour rétablir leurs valeurs par défaut sur l'appareil cible. Le logiciel AWS IoT Greengrass Core applique les mises à jour de réinitialisation avant d'appliquer les mises à jour de fusion. Pour de plus amples informations, veuillez consulter Réinitialiser les mises à.

      • Mises à jour de fusion (merge) — (Facultatif) Document JSON qui définit les valeurs de configuration à fusionner sur l'appareil cible. Vous devez sérialiser le document JSON sous forme de chaîne. Pour de plus amples informations, veuillez consulter Fusion des mises à jour.

    • runWith— (Facultatif) Les options de processus système que le logiciel AWS IoT Greengrass Core utilise pour exécuter les processus de ce composant sur le périphérique principal. Si vous omettez un paramètre dans l'runWithobjet, le logiciel AWS IoT Greengrass Core utilise les valeurs par défaut que vous configurez sur le composant Greengrass Nucleus.

      Vous pouvez spécifier l'une des options suivantes :

      • posixUser— L'utilisateur du système POSIX et, éventuellement, le groupe à utiliser pour exécuter ce composant sur les périphériques principaux Linux. L'utilisateur, et le groupe s'il est spécifié, doivent exister sur chaque périphérique principal Linux. Spécifiez l'utilisateur et le groupe en les séparant par deux points (:) au format suivant : user:group. Le groupe est facultatif. Si vous ne spécifiez aucun groupe, le logiciel AWS IoT Greengrass Core utilise le groupe principal pour l'utilisateur. Pour de plus amples informations, veuillez consulter Configurer l'utilisateur qui exécute les composants.

      • windowsUser— L'utilisateur Windows à utiliser pour exécuter ce composant sur les appareils principaux de Windows. L'utilisateur doit exister sur chaque appareil Windows Core, et son nom et son mot de passe doivent être stockés dans l'instance Credentials Manager du LocalSystem compte. Pour de plus amples informations, veuillez consulter Configurer l'utilisateur qui exécute les composants.

        Cette fonctionnalité est disponible pour la version 2.5.0 et les versions ultérieures du composant Greengrass nucleus.

      • systemResourceLimits— Les limites de ressources système à appliquer aux processus de ce composant. Vous pouvez appliquer des limites de ressources système aux composants Lambda génériques et non conteneurisés. Pour de plus amples informations, veuillez consulter Configuration des limites de ressources système pour les composants.

        Vous pouvez spécifier l'une des options suivantes :

        • cpus Durée maximale du processeur que les processus de ce composant peuvent utiliser sur le périphérique principal. Le temps processeur total d'un appareil principal est équivalent au nombre de cœurs processeurs de l'appareil. Par exemple, sur un périphérique principal doté de 4 cœurs de processeur, vous pouvez définir cette valeur 2 pour limiter les processus de ce composant à 50 % d'utilisation de chaque cœur de processeur. Sur un appareil doté d'un cœur de processeur, vous pouvez définir cette valeur 0.25 pour limiter les processus de ce composant à 25 % d'utilisation du processeur. Si vous définissez cette valeur sur un nombre supérieur au nombre de cœurs du processeur, le logiciel AWS IoT Greengrass Core ne limite pas l'utilisation du processeur par le composant.

        • memory La quantité maximale de RAM (en kilo-octets) que les processus de ce composant peuvent utiliser sur le périphérique principal.

        Cette fonctionnalité est disponible pour la version 2.4.0 et les versions ultérieures du composant Greengrass nucleus. AWS IoT Greengrass ne prend pas actuellement en charge cette fonctionnalité sur les appareils Windows Core.

     

    Exemple Exemple de mise à jour de configuration de base

    L'exemple components d'objet suivant indique de déployer un composant qui attend un paramètre de configuration nommépythonVersion. com.example.PythonRuntime

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    Exemple Exemple de mise à jour de configuration avec mises à jour de réinitialisation et de fusion

    Prenons l'exemple d'un composant de tableau de bord industriel dont la configuration par défaut est la suivante. com.example.IndustrialDashboard

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

    La mise à jour de configuration suivante spécifie les instructions suivantes :

    1. Réinitialisez le paramètre HTTPS à sa valeur par défaut (true).

    2. Réinitialisez la liste des étiquettes industrielles à une liste vide.

    3. Fusionnez une liste de balises industrielles qui identifient les flux de données de température et de pression pour deux chaudières.

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

    L'exemple d'componentsobjet suivant indique de déployer ce composant de tableau de bord industriel et de mettre à jour la configuration.

    { "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. (Facultatif) Définissez des politiques de déploiement pour le déploiement. Vous pouvez configurer à quel moment les appareils principaux peuvent appliquer un déploiement en toute sécurité ou ce qu'il faut faire si un périphérique principal ne parvient pas à appliquer le déploiement. Pour ce faire, ajoutez un deploymentPolicies objet àdeployment.json, puis effectuez l'une des opérations suivantes :

    1. (Facultatif) Spécifiez la politique de mise à jour des composants (componentUpdatePolicy). Cette politique définit si le déploiement permet ou non aux composants de reporter une mise à jour jusqu'à ce qu'ils soient prêts à être mis à jour. Par exemple, les composants peuvent avoir besoin de nettoyer des ressources ou de terminer des actions critiques avant de pouvoir redémarrer pour appliquer une mise à jour. Cette politique définit également le délai dont disposent les composants pour répondre à une notification de mise à jour.

      Cette politique est un objet doté des paramètres suivants :

      • action— (Facultatif) Indique s'il faut ou non notifier les composants et attendre qu'ils signalent lorsqu'ils sont prêts à être mis à jour. Sélectionnez l’une des options suivantes :

        • NOTIFY_COMPONENTS : le déploiement avertit chaque composant avant qu'il ne s'arrête et met à jour ce composant. Les composants peuvent utiliser l'opération SubscribeToComponentUpdates IPC pour recevoir ces notifications.

        • SKIP_NOTIFY_COMPONENTS : le déploiement ne notifie pas les composants et n'attend pas qu'ils soient mis à jour en toute sécurité.

        La valeur par défaut est NOTIFY_COMPONENTS .

      • timeoutInSecondsLe temps en secondes dont dispose chaque composant pour répondre à une notification de mise à jour avec l'opération DeferComponentUpdate IPC. Si le composant ne répond pas dans ce délai, le déploiement se poursuit sur le périphérique principal.

        Par défaut, il est de 60 secondes.

    2. (Facultatif) Spécifiez la politique de validation de la configuration (configurationValidationPolicy). Cette politique définit le temps dont dispose chaque composant pour valider une mise à jour de configuration à partir d'un déploiement. Les composants peuvent utiliser l'opération SubscribeToValidateConfigurationUpdates IPC pour s'abonner aux notifications concernant leurs propres mises à jour de configuration. Les composants peuvent ensuite utiliser l'opération SendConfigurationValidityReport IPC pour indiquer au logiciel AWS IoT Greengrass Core si la mise à jour de configuration est valide. Si la mise à jour de configuration n'est pas valide, le déploiement échoue.

      Cette politique est un objet avec le paramètre suivant :

      • timeoutInSeconds(Facultatif) Durée en secondes dont dispose chaque composant pour valider une mise à jour de configuration. Si le composant ne répond pas dans ce délai, le déploiement se poursuit sur le périphérique principal.

        La valeur par défaut est de 30 secondes.

    3. (Facultatif) Spécifiez la politique de gestion des défaillances (failureHandlingPolicy). Cette politique est une chaîne qui définit s'il faut ou non restaurer les appareils en cas d'échec du déploiement. Sélectionnez l’une des options suivantes :

      • ROLLBACK— Si le déploiement échoue sur un appareil principal, le logiciel AWS IoT Greengrass Core rétablit la configuration précédente de cet appareil principal.

      • DO_NOTHING— Si le déploiement échoue sur un appareil principal, le logiciel AWS IoT Greengrass Core conserve la nouvelle configuration. Cela peut entraîner des composants cassés si la nouvelle configuration n'est pas valide.

      La valeur par défaut est ROLLBACK .

      Important

      Le logiciel AWS IoT Greengrass Core ignore la politique de gestion des défaillances pour les déploiements bootstrap. Un déploiement bootstrap met à jour la version du noyau de Greengrass ou inclut un composant comportant une étape du cycle de vie du bootstrap. Si un déploiement bootstrap échoue, le logiciel AWS IoT Greengrass Core rétablit la configuration précédente du périphérique principal. La restauration se produit même si vous définissez la politique de gestion des défaillances sur. DO_NOTHING Ce comportement permet de maintenir le périphérique principal en état de fonctionnement après un redémarrage.

    Votre déploiement dans deployment.json peut ressembler à l'exemple suivant :

    { "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. (Facultatif) Définissez la manière dont le déploiement s'arrête, se déploie ou expire. AWS IoT Greengrass utilise des AWS IoT Core tâches pour envoyer des déploiements vers les appareils principaux. Ces options sont donc identiques aux options de configuration des AWS IoT Core tâches. Pour plus d'informations, consultez la section Déploiement des tâches et abandon de la configuration dans le Guide du AWS IoT développeur.

    Pour définir les options de tâche, ajoutez un iotJobConfiguration objet àdeployment.json. Définissez ensuite les options à configurer.

    Votre déploiement dans deployment.json peut ressembler à l'exemple suivant :

    { "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. (Facultatif) Ajoutez des balises (tags) pour le déploiement. Pour de plus amples informations, veuillez consulter Marquez vos AWS IoT Greengrass Version 2 ressources.

  8. Exécutez la commande suivante pour créer le déploiement à partir dedeployment.json.

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

    La réponse inclut un identifiant deploymentId ce déploiement. Vous pouvez utiliser l'ID de déploiement pour vérifier l'état du déploiement. Pour de plus amples informations, veuillez consulter Vérifier l'état du déploiement.