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 équipements cibles. Vous pouvez définir le déploiement dans le fichier JSON que vous fournissez auAWS CLI.

La cible de déploiement détermine les appareils sur lesquels vous souhaitez exécuter vos composants. Pour effectuer un déploiement sur un appareil principal, spécifiez un élément. Pour effectuer un déploiement 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 sections Groupes d'objets statiques et Groupes d'objets dynamiques dans le Guide du AWS IoT développeur.

Suivez les étapes décrites dans 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 déployée, consultezRéviser les déploiements.

Avertissement

L'CreateDeploymentopération peut désinstaller des composants des périphériques 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, utilisez d'abord l'ListDeploymentsopération pour vérifier si la cible du déploiement possède déjà un déploiement existant. Utilisez ensuite l'GetDeploymentopération pour démarrer à 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. Remplacez TargetArn par l'ARN de l'objet ou AWS IoT 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 comporte un déploiement existant que vous souhaitez réviser. 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'objet ou du groupe d'AWS IoTobjets cible.

      aws greengrassv2 list-deployments --target-arn targetArn

      La réponse contient une liste du dernier déploiement pour la cible. Si la réponse est vide, la cible n'a pas de déploiement existant et vous pouvez passer àÉtape 3. Sinon, copiez le contenu deploymentId 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 détails incluent les métadonnées, les composants et la configuration des tâches. Remplacez DeploymentID par l'ID 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 de 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— La 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 détails suivants pour chaque composant que vous ajoutez :

    • version— 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 équipement cible, ou la configuration par défaut du composant s'il n'existe pas sur le périphérique cible. Vous pouvez spécifier les mises à jour de configuration suivantes :

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

      • Merge updates (merge) — (Facultatif) Document JSON qui définit les valeurs de configuration à fusionner sur le périphérique cible. Vous devez sérialiser le document JSON sous forme de chaîne. Pour plus d’informations, consultez 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 définir 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 de Linux. L'utilisateur et le groupe, s'ils sont spécifiés, 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 plus d’informations, consultez 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 principal de Windows, et son nom et son mot de passe doivent être stockés dans l'instance Credentials Manager du LocalSystem compte. Pour plus d’informations, consultez Configurer l'utilisateur qui exécute les composants.

        Cette fonctionnalité est disponible pour les versions 2.5.0 et 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 plus d’informations, consultez Configuration des limites de ressources système pour les composants.

        Vous pouvez définir l'une des options suivantes :

        • cpusLe temps processeur maximal 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 de processeur, le logiciel AWS IoT Greengrass Core ne limite pas l'utilisation du processeur par le composant.

        • memoryLa 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 les versions 2.4.0 et ultérieures du composant Greengrass nucleus. AWS IoT Greengrassne prend actuellement pas en charge cette fonctionnalité sur les appareils Windows principaux.

     

    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 de mise à jour de configuration avec mises à jour de réinitialisation et de fusion

    Prenons un exemple de 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 tags industriels à une liste vide.

    3. Fusionnez une liste d'étiquettes industrielles identifiant 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 les politiques de déploiement pour le déploiement. Vous pouvez configurer à quel moment les périphériques principaux peuvent effectuer un déploiement en toute sécurité ou ce qu'il convient de faire si un périphérique principal ne parvient pas à effectuer 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 différer une mise à jour jusqu'à ce qu'ils soient prêts à être mis à jour. Par exemple, les composants peuvent avoir besoin de nettoyer les 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) S'il faut ou non informer les composants et attendre qu'ils signalent lorsqu'ils sont prêts à être mis à jour. Sélectionnez parmi les 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.

      • timeoutInSecondsDurée en secondes pendant laquelle chaque composant doit 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.

        La valeur par défaut est de 60 secondes.

    2. (Facultatif) Spécifiez la politique de validation de 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 relatives à leurs propres mises à jour de configuration. Les composants peuvent ensuite utiliser l'opération SendConfigurationValidityReport IPC pour indiquer au logiciel AWS IoT Greengrass principal 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 dont le paramètre est le 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 annuler les appareils en cas d'échec du déploiement. Sélectionnez parmi les options suivantes :

      • ROLLBACK— Si le déploiement échoue sur un périphérique principal, le logiciel AWS IoT Greengrass Core rétablit la configuration précédente de ce périphérique 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.

    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 le mode d'arrêt, de déploiement ou d'expiration du déploiement. AWS IoT Greengrassutilise 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 de Job et configuration d'abandon dans le Guide du AWS IoTdéveloppeur.

    Pour définir les options de la 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 plus d’informations, consultez Baliser vos ressources AWS IoT Greengrass Version 2.

  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 deploymentId identifiant ce déploiement. Vous pouvez utiliser l'ID de déploiement pour vérifier l'état du déploiement. Pour plus d'informations, consultez Vérification du statut du déploiement.