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.
Flux de travail de commandes de haut niveau
Les étapes suivantes fournissent une vue d'ensemble du flux de travail des commandes entre vos appareils et vos AWS IoT Device Management commandes. Lorsque vous utilisez l'une des HTTP API opérations de commande, la demande est signée à l'aide des informations d'identification Sigv4.

Présentation du flux de travail
Création et gestion de commandes
Pour créer et gérer des commandes pour vos appareils, effectuez les étapes suivantes.
-
Création d'une ressource de commande
Avant de pouvoir envoyer la commande à vos appareils, créez une ressource de commande à partir du hub de commande
de la AWS IoT console ou à l'aide du plan de CreateCommand
APIcontrôle. -
Spécifiez la charge utile
Lors de la création de la commande, vous devez fournir une charge utile pour votre commande. Le contenu de la charge utile peut utiliser n'importe quel format de votre choix. Pour vous assurer que l'appareil interprète correctement la charge utile, nous vous recommandons de spécifier également le type de contenu de la charge utile.
-
(Facultatif) Gérez les commandes créées
Après avoir créé la commande, vous pouvez mettre à jour son nom d'affichage et sa description. Vous pouvez également marquer une commande comme obsolète si vous n'avez plus l'intention de l'utiliser, ou la supprimer complètement de votre compte. Si vous souhaitez modifier les informations de charge utile, vous devez créer une nouvelle commande et télécharger le nouveau fichier de charge utile.
Choisissez l'appareil cible pour vos commandes et abonnez-vous aux MQTT rubriques
Pour préparer le flux de travail des commandes, choisissez votre appareil cible et spécifiez les MQTT sujets AWS IoT réservés pour recevoir des commandes et publier des messages de réponse.
-
Choisissez l'appareil cible pour votre commande
Pour préparer le flux de travail des commandes, choisissez votre appareil cible qui recevra la commande et exécutera les actions spécifiées. L'appareil cible peut être un AWS IoT objet que vous avez enregistré dans le AWS IoT registre, ou peut être spécifié à l'aide de l'ID MQTT client, si votre appareil n'a pas été enregistré auprès de celui-ci AWS IoT. Pour de plus amples informations, veuillez consulter Considérations relatives à l'appareil cible.
-
Configuration de la politique relative aux appareils IoT
Avant que votre appareil puisse recevoir des exécutions de commandes et publier des mises à jour, il doit utiliser une IAM politique qui accorde les autorisations nécessaires pour effectuer ces actions. Pour obtenir des exemples de politiques que vous pouvez utiliser selon que votre appareil est enregistré en tant qu' AWS IoT objet ou qu'il est spécifié sous forme d'identifiant MQTT client, consultezExemple de IAM politique.
-
Établissez une MQTT connexion
Pour préparer vos appareils à utiliser la fonction de commandes, ils doivent d'abord se connecter au courtier de messages et s'abonner aux rubriques de demande et de réponse. Votre appareil doit être autorisé à effectuer l'
iot:Connect
action de connexion AWS IoT Core et d'établissement d'une MQTT connexion avec le courtier de messages. Pour trouver le point de terminaison du plan de données qui vous convient Compte AWS, utilisez ladescribe-endpoint
CLI commandeDescribeEndpoint
API ou comme indiqué ci-dessous.aws iot describe-endpoint --endpoint-type iot:Data-ATS
L'exécution de cette commande renvoie le point de terminaison du plan de données spécifique au compte, comme indiqué ci-dessous.
account-specific-prefix
.iot.region
.amazonaws.com -
Abonnez-vous aux rubriques relatives aux commandes
Une fois la connexion établie, vos appareils peuvent s'abonner à la rubrique de demande de commandes. Lorsque vous créez une commande et que vous lancez son exécution sur votre appareil cible, le message de charge utile est publié dans le sujet de la demande par le courtier de messages. Votre appareil peut ensuite recevoir le message de charge utile et traiter la commande.
(Facultatif) Vos appareils peuvent également s'abonner à ces sujets de réponse aux commandes (
accepted
ourejected
) pour recevoir un message indiquant si le service cloud a accepté ou rejeté la réponse de l'appareil.Dans cet exemple, remplacez :
-
avec<device>
thing
ouclient
selon que l'appareil que vous ciblez a été enregistré en tant qu'objet IoT ou spécifié en tant que MQTT client. -
avec l'identifiant unique de votre appareil cible. Cet identifiant peut être l'identifiant unique MQTT du client ou un nom d'objet.<DeviceID>
Note
Si le type de charge utile n'est pas JSON ouCBOR, le
<PayloadFormat>
champ n'est peut-être pas présent dans la rubrique de demande de commandes. Pour obtenir le format de charge utile, nous vous recommandons d'utiliser MQTT 5 pour obtenir les informations de format à partir des en-têtes des MQTT messages. Pour de plus amples informations, veuillez consulter Rubriques relatives aux commandes.$aws/commands/
<devices>
/<DeviceID>
/executions/+/request/<PayloadFormat>
$aws/commands/<devices>
/<DeviceID>
/executions/+/response/<PayloadFormat>
/accepted $aws/commands/<devices>
/<DeviceID>
/executions/+/response/<PayloadFormat>
/rejected -
Démarrez et surveillez les exécutions de commandes pour votre appareil cible
Après avoir créé les commandes et spécifié les cibles de la commande, vous pouvez démarrer l'exécution sur le périphérique cible en effectuant les étapes suivantes.
-
Lancer l'exécution de la commande sur le périphérique cible
Démarrez l'exécution de la commande sur l'appareil cible depuis le hub de commande
de la AWS IoT console ou en utilisant le plan de StartCommandExecution
données API avec le point de terminaison spécifique à votre compteiot:Jobs
. APIPublie le message de charge utile dans la rubrique de demande de commandes mentionnée ci-dessus à laquelle l'appareil s'est abonné.Note
Si l'appareil était hors ligne lorsque la commande a été envoyée depuis le cloud et s'il utilise des sessions MQTT persistantes, la commande attend le courtier de messages. Si l'appareil revient en ligne avant la fin du délai imparti et s'il s'est abonné à la rubrique de demande de commandes, il peut alors traiter la commande et publier le résultat dans la rubrique de réponse aux commandes. Si l'appareil ne revient pas en ligne avant le délai d'expiration, l'exécution de la commande expirera et le message de charge utile risque d'expirer et d'être supprimé par le courtier de messages.
-
Mettre à jour le résultat de l'exécution de la commande
Le périphérique reçoit désormais le message de charge utile et peut traiter la commande et exécuter les actions spécifiées, puis publier le résultat de l'exécution de la commande dans la rubrique de réponse aux commandes suivante à l'aide du
UpdateCommandExecution
API. Si votre appareil s'est abonné aux sujets de réponse acceptés et rejetés des commandes, il recevra un message indiquant si la réponse a été acceptée ou rejetée par le service cloud.Selon la manière que vous avez spécifiée dans le sujet de la demande, il
<devices>
peut s'agir d'objets ou de clients, et il<DeviceID>
peut s'agir du nom de votre objet IoT ou de l'identifiant du MQTT client.Note
Il ne
<PayloadFormat>
peut être que JSON ou CBOR dans la rubrique de réponse aux commandes.$aws/commands/
<devices>
/<DeviceID>
/executions/<ExecutionId>
/response/<PayloadFormat>
-
(Facultatif) Récupère le résultat de l'exécution de la commande
Pour récupérer le résultat de l'exécution de la commande, vous pouvez consulter l'historique des commandes depuis la AWS IoT console ou utiliser l'APIopération du plan de
GetCommandExecution
contrôle. Pour obtenir les informations les plus récentes, votre appareil doit avoir publié le résultat de l'exécution de la commande dans la rubrique consacrée aux réponses aux commandes. Vous pouvez également obtenir des informations supplémentaires sur les données d'exécution, telles que la date de leur dernière mise à jour, le résultat de l'exécution et la date à laquelle l'exécution s'est terminée.
(Facultatif) Activer les notifications pour les événements liés aux commandes
Vous pouvez vous abonner aux événements de commandes pour recevoir des notifications lorsque le statut de l'exécution d'une commande change. Les étapes suivantes vous montrent comment vous abonner à des événements de commandes, puis comment les traiter.
-
Créer une règle de rubrique
Vous pouvez vous abonner à la rubrique des événements relatifs aux commandes et recevoir des notifications lorsque le statut de l'exécution d'une commande change. Vous pouvez également créer une règle thématique pour acheminer les données traitées par l'appareil vers d'autres AWS IoT services pris en charge par des règles AWS Lambda, tels qu'Amazon SQS et AWS Step Functions. Vous pouvez créer une règle de sujet à l'aide de la AWS IoT console ou à l'aide du plan de
CreateTopicRule
AWS IoT Core API contrôle. Pour de plus amples informations, veuillez consulter Création d'une AWS IoT règle.Dans cet exemple, remplacez-le
par l'identifiant de la commande pour laquelle vous souhaitez recevoir des notifications et<CommandID>
par le statut de l'exécution de la commande.<CommandExecutionStatus>
$aws/events/commandExecution/
<CommandID>
/<CommandExecutionStatus>
Note
Pour recevoir des notifications concernant toutes les commandes et les statuts d'exécution des commandes, vous pouvez utiliser des caractères génériques et vous abonner à la rubrique suivante.
$aws/events/commandExecution/+/#
-
Réception et traitement des événements liés aux commandes
Si vous avez créé une règle thématique à l'étape précédente pour vous abonner aux événements de commandes, vous pouvez gérer les notifications push de commandes que vous recevez et créer une application sur la base de ces services.
Le code suivant montre un exemple de charge utile pour les notifications d'événements de commande que vous recevrez.
{ "executionId": "
2bd65c51-4cfd-49e4-9310-d5cbfdbc8554
", "status":"FAILED", "statusReason": { "reasonCode": "DEVICE_TOO_BUSY", "reasonDescription": "" }, "eventType": "COMMAND_EXECUTION", "commandArn":"arn:aws:iot:us-east-1
:123456789012
:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086
", "targetArn":"arn:aws:iot:us-east-1
:123456789012
:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd
", "timestamp":1717708862107
}