Befehle erstellen und verwalten - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Befehle erstellen und verwalten

Sie können die AWS IoT Device Management Befehlsfunktion verwenden, um entweder wiederverwendbare Fernaktionen zu konfigurieren oder einmalige, sofortige Anweisungen an Ihre Geräte zu senden. In den folgenden Abschnitten erfahren Sie, wie Sie Befehle von der AWS IoT Konsole aus und mithilfe der erstellen und verwalten können AWS CLI.

Erstellen Sie eine Befehlsressource

Wenn Sie einen Befehl erstellen, müssen Sie die folgenden Informationen angeben.

  • Allgemeine Informationen

    Wenn Sie einen Befehl erstellen, müssen Sie eine Befehls-ID angeben. Dabei handelt es sich um eine eindeutige Kennung, anhand derer Sie den Befehl identifizieren können, wenn Sie ihn auf dem Zielgerät ausführen möchten. Optional können Sie auch einen Anzeigenamen, eine Beschreibung und Tags angeben, um Ihnen die Verwaltung des Befehls zu erleichtern.

  • Nutzlast

    Sie müssen auch eine Payload angeben, die die Aktionen definiert, die das Gerät ausführen muss. Es ist zwar optional, wir empfehlen jedoch, den Payload-Formattyp anzugeben, damit das Gerät die Payload korrekt interpretiert.

Die reservierten Themen zu Befehlen verwenden ein Format, das vom Typ des Payload-Formats abhängt.

  • Wenn Sie den Payload-Inhaltstyp application/json oder angebenapplication/cbor, lautet das Anforderungsthema wie folgt.

    $aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>
  • Wenn Sie einen anderen Payload-Inhaltstyp als application/json oder angebenapplication/cbor, oder wenn Sie den Payload-Formattyp nicht angeben, lautet das Anforderungsthema wie folgt. In diesem Fall wird das Payload-Format in den MQTT Nachrichtenheader aufgenommen.

    $aws/commands/<devices>/<DeviceID>/executions/+/request

Das Antwortthema des Befehls gibt ein Format zurück, das den Payload-Formattyp verwendet json oder von diesem cbor unabhängig ist. Das Antwortthema verwendet das folgende Format, wobei der Wert json oder <PayloadFormat> cbor angegeben werden muss.

$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>

In den folgenden Abschnitten erfahren Sie, was beim Format der Befehlspayload zu beachten ist und wie Sie Befehle von der Konsole aus erstellen.

Format der Befehls-Payload

Die Nutzlast kann ein beliebiges Format Ihrer Wahl verwenden. Die maximale Größe der Payload darf 32 KB nicht überschreiten. Um sicherzustellen, dass das Gerät die Payload sicher und korrekt interpretieren kann, empfehlen wir Ihnen, den Payload-Formattyp anzugeben.

Sie geben den Payload-Formattyp mithilfe des type/subtype Formats an, z. B. oder. application/json application/cbor Standardmäßig wird es als application/octet-stream festgelegt. Informationen zu Payload-Formaten, die Sie angeben können, finden Sie unter Allgemeine MIME Typen.

Wie erstelle ich einen Befehl (Konsole)

Um einen Befehl von der Konsole aus zu erstellen, rufen Sie den Command Hub der AWS IoT Konsole auf und führen Sie die folgenden Schritte aus.

  1. Um eine neue Befehlsressource zu erstellen, wählen Sie Befehl erstellen.

  2. Geben Sie eine eindeutige Befehls-ID an, um den Befehl zu identifizieren, den Sie auf dem Zielgerät ausführen möchten.

  3. (Optional) Geben Sie einen optionalen Anzeigenamen, eine Beschreibung und beliebige Name-Wert-Paare als Tags für Ihren Befehl an.

  4. Laden Sie die Payload-Datei aus Ihrem lokalen Speicher hoch, die die Aktionen enthält, die das Gerät ausführen muss. Es ist zwar optional, wir empfehlen jedoch, den Payload-Formattyp anzugeben, damit das Gerät die Datei korrekt interpretiert und die Anweisungen verarbeitet.

  5. Wählen Sie den Befehl Erstellen.

In diesem Abschnitt werden die API Operation auf der HTTP Steuerungsebene und der entsprechende AWS CLI Befehl beschrieben create-command, den Sie ausführen können, um eine Befehlsressource zu erstellen. CreateCommand

Payload des Befehls

Bei der Erstellung des Befehls müssen Sie eine Payload angeben. Die von Ihnen bereitgestellte Nutzlast ist Base64-codiert. Wenn Ihre Geräte den Befehl empfangen, kann die geräteseitige Logik die Nutzlast verarbeiten und die angegebenen Aktionen ausführen. Um sicherzustellen, dass Ihre Geräte den Befehl und die Payload korrekt empfangen, empfehlen wir Ihnen, den Payload-Inhaltstyp anzugeben.

Anmerkung

Nachdem Sie den Befehl erstellt haben, können Sie die Payload nicht mehr ändern. Um die Payload zu ändern, müssen Sie einen neuen Befehl erstellen.

Beispiel für eine Richtlinie IAM

Bevor Sie diesen API Vorgang verwenden, stellen Sie sicher, dass Ihre IAM Richtlinie Sie autorisiert, diese Aktion auf dem Gerät durchzuführen. Das folgende Beispiel zeigt eine IAM Richtlinie, die dem Benutzer die Erlaubnis erteilt, die CreateCommand Aktion auszuführen.

Ersetzen Sie in diesem Beispiel:

  • regionmit Ihrem AWS-Region, wie zum Beispielap-south-1.

  • account-idmit deiner AWS-Konto Nummer, wie123456789012.

  • command-idmit einer eindeutigen Kennung für Ihre AWS IoT Befehls-ID, z. LockDoor B. Wenn Sie mehr als einen Befehl senden möchten, können Sie diese Befehle in der IAM Richtlinie im Abschnitt Ressource angeben.

{ "Version": "2012-10-17", "Statement": { "Action": "iot:CreateCommand", "Effect": "Allow", "Resource": "arn:aws:iot:<region>:<account_id>:command/command-id" } }

Beispiel für einen Befehl erstellen

Das folgende Beispiel zeigt, wie Sie einen Befehl erstellen können. Ersetzen Sie je nach Anwendung:

  • <command-id>mit einer eindeutigen Kennung für den Befehl. Um beispielsweise die Dokumentenhistorie Ihres Hauses zu sperren, können Sie Folgendes angeben: LockDoor Wir empfehlen Ihnen, UUID zu verwenden. Sie können auch alphanumerische Zeichen, „-“ und „_“, verwenden.

  • (Optional) <display-name> und. <description> Dabei handelt es sich um optionale Felder, die Sie verwenden können, um einen benutzerfreundlichen Namen und eine aussagekräftige Beschreibung für den Befehl anzugeben, z. B. Lock the doors of my home

  • namespace, mit denen Sie den Namespace des Befehls angeben können. Das muss es sein. AWS-IoT

  • payloadenthält Informationen über die Payload, die Sie bei der Ausführung des Befehls verwenden möchten, und deren Inhaltstyp.

aws iot create-command \ --command-id <command-id> \ --display-name <display-name> \ --description <description> \ --namespace AWS-IoT \ --payload '{"content":"eyAibWVzc2FnZSI6ICJIZWxsbyBJb1QiIH0=","contentType":"application/json"}'

Die Ausführung dieses Befehls generiert eine Antwort, die die ID und ARN (Amazon-Ressourcenname) des Befehls enthält. Wenn Sie den LockDoor Befehl beispielsweise bei der Erstellung angegeben haben, zeigt das Folgende ein Beispiel für die Ausgabe der Ausführung des Befehls.

{ "commandId": "LockDoor", "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/LockDoor" }

Ruft Informationen zu einem Befehl ab

Nachdem Sie einen Befehl erstellt haben, können Sie Informationen dazu von der AWS IoT Konsole abrufen und den verwenden AWS CLI. Sie können die folgenden Informationen abrufen.

  • Die Befehls-ID, der Amazon-Ressourcenname (ARN), ein beliebiger Anzeigename und eine Beschreibung, die Sie für den Befehl angegeben haben.

  • Der Befehlsstatus, der angibt, ob ein Befehl auf dem Zielgerät ausgeführt werden kann oder ob er veraltet oder gelöscht ist.

  • Die von Ihnen bereitgestellte Payload und ihr Formattyp.

  • Die Uhrzeit, zu der der Befehl erstellt und zuletzt aktualisiert wurde.

Um einen Befehl von der Konsole abzurufen, gehen Sie zum Command Hub der AWS IoT Konsole und wählen Sie dann den Befehl aus, den Sie erstellt haben, um dessen Details anzuzeigen.

Zusätzlich zu den Befehlsdetails können Sie den Befehlsverlauf einsehen, der Informationen über die Ausführung des Befehls auf dem Zielgerät enthält. Nachdem Sie diesen Befehl auf dem Gerät ausgeführt haben, finden Sie auf dieser Registerkarte Informationen zu den Ausführungen.

Verwenden Sie die API Operation auf der GetCommandHTTPSteuerungsebene oder den get-command AWS CLI Befehl, um Informationen über eine Befehlsressource abzurufen. Sie müssen den Befehl bereits mit der CreateCommand API Anfrage oder dem erstellt haben create-commandCLI.

Beispiel für eine IAM Richtlinie

Bevor Sie diesen API Vorgang verwenden, stellen Sie sicher, dass Ihre IAM Richtlinie Sie autorisiert, diese Aktion auf dem Gerät durchzuführen. Das folgende Beispiel zeigt eine IAM Richtlinie, die dem Benutzer die Erlaubnis erteilt, die GetCommand Aktion auszuführen.

Ersetzen Sie in diesem Beispiel:

  • regionmit Ihrem AWS-Region, wie zum Beispielap-south-1.

  • account-idmit deiner AWS-Konto Nummer, wie123456789023.

  • command-idmit Ihrer AWS IoT eindeutigen Befehlskennung, z. LockDoor B. Wenn Sie mehr als einen Befehl abrufen möchten, können Sie diese Befehle in der IAM Richtlinie im Abschnitt Ressource angeben.

{ "Version": "2012-10-17", "Statement": { "Action": "iot:GetCommand", "Effect": "Allow", "Resource": "arn:aws:iot:<region>:<account_id>:command/command-id" } }

Beispiel für einen Befehl abrufen (AWS CLI)

Das folgende Beispiel zeigt Ihnen, wie Sie Informationen zu einem Befehl mit dem abrufen können get-command AWS CLI. Ersetzen Sie je nach Anwendung <command-id> durch den Bezeichner für den Befehl, für den Sie Informationen abrufen möchten. Sie können diese Informationen der Antwort des entnehmen create-commandCLI.

aws iot get-command --command-id <command-id>

Wenn Sie diesen Befehl ausführen, wird eine Antwort generiert, die Informationen über den Befehl, die Nutzlast und den Zeitpunkt der Erstellung und letzten Aktualisierung enthält. Es enthält auch Informationen, die angeben, ob ein Befehl veraltet ist oder gelöscht wird.

Der folgende Code zeigt beispielsweise eine Beispielantwort.

{ "commandId": "LockDoor", "commandArn": "arn:aws:iot:<region>:<account>:command/LockDoor", "namespace": "AWS-IoT", "payload":{ "content": "eyAibWVzc2FnZSI6ICJIZWxsbyBJb1QiIH0=", "contentType": "application/json" }, "createdAt": "2024-03-23T00:50:10.095000-07:00", "lastUpdatedAt": "2024-03-23T00:50:10.095000-07:00", "deprecated": false, "pendingDeletion": false }

Listen Sie Befehle in Ihrem auf AWS-Konto

Nachdem Sie Befehle erstellt haben, können Sie sich die Befehle ansehen, die Sie in Ihrem Konto erstellt haben. In der Liste finden Sie Informationen zu:

  • Die Befehls-ID und alle Anzeigenamen, die Sie für die Befehle angegeben haben.

  • Der Amazon-Ressourcenname (ARN) der Befehle.

  • Der Befehlsstatus, der angibt, ob die Befehle für die Ausführung auf dem Zielgerät verfügbar sind oder ob sie veraltet sind.

    Anmerkung

    In der Liste wird nicht angezeigt, welche aus Ihrem Konto gelöscht werden. Wenn die Befehle noch nicht gelöscht werden müssen, können Sie die Details zu diesen Befehlen immer noch anhand ihrer Befehls-ID anzeigen.

  • Der Zeitpunkt, zu dem die Befehle erstellt und zuletzt aktualisiert wurden.

In der AWS IoT Konsole finden Sie die Liste der Befehle, die Sie erstellt haben, und deren Details, indem Sie zum Command Hub gehen.

Um die Befehle aufzulisten, die Sie erstellt haben, verwenden Sie die ListCommandsAPIOperation oder die list-commandsCLI.

Beispiel für eine IAM Richtlinie

Bevor Sie diesen API Vorgang verwenden, stellen Sie sicher, dass Ihre IAM Richtlinie Sie autorisiert, diese Aktion auf dem Gerät durchzuführen. Das folgende Beispiel zeigt eine IAM Richtlinie, die dem Benutzer die Erlaubnis erteilt, die ListCommands Aktion auszuführen.

Ersetzen Sie in diesem Beispiel:

  • regionmit Ihrem AWS-Region, wie zum Beispielap-south-1.

  • account-idmit deiner AWS-Konto Nummer, wie123456789012.

{ "Version": "2012-10-17", "Statement": { "Action": "iot:ListCommands", "Effect": "Allow", "Resource": "arn:aws:iot:<region>:<account_id>:command/*" } }

Führen Sie Befehle in Ihrem Kontobeispiel auf

Der folgende Befehl zeigt, wie Sie Befehle in Ihrem Konto auflisten können.

aws iot list-commands --namespace "AWS-IoT"

Wenn Sie diesen Befehl ausführen, wird eine Antwort generiert, die eine Liste von Befehlen enthält, die Sie erstellt haben, sowie den Zeitpunkt, zu dem die Befehle erstellt wurden und wann sie zuletzt aktualisiert wurden. Er stellt auch Informationen zum Befehlsstatus bereit, die angeben, ob ein Befehl veraltet ist oder auf dem Zielgerät ausgeführt werden kann. Weitere Informationen zu den verschiedenen Status und den Gründen für den Status finden Sie unter. Status der Befehlsausführung

Aktualisieren Sie eine Befehlsressource

Nachdem Sie einen Befehl erstellt haben, können Sie den Anzeigenamen und die Beschreibung des Befehls aktualisieren.

Anmerkung

Die Payload für den Befehl kann nicht aktualisiert werden. Um diese Informationen zu aktualisieren oder eine geänderte Payload zu verwenden, müssen Sie einen neuen Befehl erstellen.

Um einen Befehl von der Konsole aus zu aktualisieren, rufen Sie den Command Hub der AWS IoT Konsole auf und führen Sie die folgenden Schritte aus.

  1. Um eine vorhandene Befehlsressource zu aktualisieren, wählen Sie den Befehl aus, den Sie aktualisieren möchten, und wählen Sie dann unter Aktionen die Option Bearbeiten aus.

  2. Geben Sie den Anzeigenamen und die Beschreibung an, die Sie verwenden möchten, sowie alle Name-Wert-Paare als Tags für Ihren Befehl.

  3. Wählen Sie Bearbeiten, um den Befehl mit den neuen Einstellungen zu speichern.

Verwenden Sie die API Operation auf der UpdateCommandSteuerungsebene oder die update-command AWS CLI , um eine Befehlsressource zu aktualisieren. Damit API können Sie:

  • Bearbeiten Sie den Anzeigenamen und die Beschreibung eines Befehls, den Sie erstellt haben.

  • Verwerfen Sie eine Befehlsressource oder stellen Sie einen Befehl wieder her, der bereits veraltet ist.

IAMBeispiel für eine Richtlinie

Bevor Sie diesen API Vorgang verwenden, stellen Sie sicher, dass Ihre IAM Richtlinie Sie autorisiert, diese Aktion auf dem Gerät durchzuführen. Das folgende Beispiel zeigt eine IAM Richtlinie, die dem Benutzer die Erlaubnis erteilt, die UpdateCommand Aktion auszuführen.

Ersetzen Sie in diesem Beispiel:

  • regionmit Ihrem AWS-Region, wie zum Beispielap-south-1.

  • account-idmit deiner AWS-Konto Nummer, wie123456789012.

  • command-idmit Ihrer AWS IoT eindeutigen Befehlskennung, z. LockDoor B. Wenn Sie mehr als einen Befehl abrufen möchten, können Sie diese Befehle in der IAM Richtlinie im Abschnitt Ressource angeben.

{ "Version": "2012-10-17", "Statement": { "Action": "iot:UpdateCommand", "Effect": "Allow", "Resource": "arn:aws:iot:<region>:<account_id>:command/<command-id>" } }

Informationen zu einem Befehl aktualisieren — Beispiele (AWS CLI)

Das folgende Beispiel zeigt Ihnen, wie Sie Informationen zu einem Befehl mithilfe des update-command AWS CLI Befehls aktualisieren. Hinweise dazu, wie Sie API damit eine Befehlsressource als veraltet markieren oder wiederherstellen können, finden Sie unter. Aktualisieren Sie eine Befehlsressource (CLI)

Das Beispiel zeigt, wie Sie den Anzeigenamen und die Beschreibung eines Befehls aktualisieren können. Je nach Anwendung <command-id> ersetzen Sie ihn durch den Bezeichner für den Befehl, für den Sie Informationen abrufen möchten.

aws iot update-command \ --command-id <command-id> --displayname <display-name> \ --description <description>

Wenn Sie diesen Befehl ausführen, wird eine Antwort generiert, die die aktualisierten Informationen über den Befehl und den Zeitpunkt der letzten Aktualisierung enthält. Der folgende Code zeigt eine Beispielanforderung und -antwort für die Aktualisierung des Anzeigenamens und der Beschreibung eines Befehls, der die Klimaanlage ausschaltet.

aws iot update-command \ --command-id <LockDoor> \ --displayname <Secondary lock door> \ --description <Locks doors to my home>

Die Ausführung dieses Befehls generiert die folgende Antwort.

{ "commandId": "LockDoor", "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/LockDoor", "displayName": "Secondary lock door", "description": "Locks doors to my home", "lastUpdatedAt": "2024-05-09T23:15:53.899000-07:00" }

Verwerfen Sie eine Befehlsressource oder stellen Sie sie wieder her

Wenn Sie einen Befehl erstellt haben und ihn nicht mehr weiter verwenden möchten, können Sie ihn als veraltet markieren. Wenn Sie einen Befehl als veraltet markieren, werden alle ausstehenden Befehlsausführungen auf dem Zielgerät weiterlaufen, bis sie den Terminalstatus erreichen. Wenn ein Befehl als veraltet gilt und Sie ihn beispielsweise zum Senden einer neuen Befehlsausführung an das Zielgerät verwenden möchten, müssen Sie ihn wiederherstellen.

Anmerkung

Sie können einen veralteten Befehl nicht bearbeiten oder neue Ausführungen für ihn ausführen. Um neue Befehle auf dem Gerät auszuführen, müssen Sie es wiederherstellen, sodass der Befehlsstatus auf Verfügbar geändert wird.

Weitere Informationen zum Verwerfen und Wiederherstellen eines Befehls sowie zu diesbezüglichen Überlegungen finden Sie unter. Eine Befehlsressource als veraltet kennzeichnen

Löschen Sie eine Befehlsressource

Wenn Sie einen Befehl nicht mehr verwenden möchten, können Sie ihn dauerhaft aus Ihrem Konto entfernen. Wenn die Löschaktion erfolgreich ist:

  • Wenn der Befehl für eine Dauer, die länger als das maximale Timeout von 12 Stunden ist, als veraltet gilt, wird der Befehl sofort gelöscht.

  • Wenn der Befehl nicht veraltet ist oder für eine Dauer, die kürzer als das maximale Timeout ist, als veraltet gilt, befindet sich der Befehl in einem Status. pending deletion Er wird nach Ablauf des maximalen Timeouts von 12 Stunden automatisch aus Ihrem Konto entfernt.

Anmerkung

Der Befehl kann gelöscht werden, auch wenn noch ausstehende Befehlsausführungen vorliegen. Der Befehl befindet sich im Status „Ausstehende Löschung“ und wird automatisch aus Ihrem Konto entfernt.

Um einen Befehl von der Konsole zu löschen, rufen Sie den Command Hub der AWS IoT Konsole auf und führen Sie die folgenden Schritte aus.

  1. Wählen Sie den Befehl aus, den Sie löschen möchten, und wählen Sie dann unter Aktionen die Option Löschen aus.

  2. Bestätigen Sie, dass Sie den Befehl löschen möchten, und wählen Sie dann Löschen aus.

Der Befehl wird zum Löschen markiert und nach 12 Stunden dauerhaft aus Ihrem Konto entfernt.

Verwenden Sie die API Operation auf der DeleteCommand HTTP Steuerungsebene oder den delete-command AWS CLI Befehl, um eine Befehlsressource zu löschen. Wenn die Löschaktion erfolgreich ist, wird ein Wert HTTP statusCode von 204 oder 202 angezeigt, und der Befehl wird nach Ablauf der maximalen Timeoutdauer von 12 Stunden automatisch aus Ihrem Konto gelöscht. Im Fall des Status 204 bedeutet dies, dass der Befehl gelöscht wurde.

Beispiel für eine IAM Richtlinie

Bevor Sie diesen API Vorgang verwenden, stellen Sie sicher, dass Ihre IAM Richtlinie Sie autorisiert, diese Aktion auf dem Gerät durchzuführen. Das folgende Beispiel zeigt eine IAM Richtlinie, die dem Benutzer die Erlaubnis erteilt, die DeleteCommand Aktion auszuführen.

Ersetzen Sie in diesem Beispiel:

  • regionmit Ihrem AWS-Region, wie zum Beispielap-south-1.

  • account-idmit deiner AWS-Konto Nummer, wie123456789012.

  • command-idmit Ihrer AWS IoT eindeutigen Befehlskennung, z. LockDoor B. Wenn Sie mehr als einen Befehl abrufen möchten, können Sie diese Befehle in der IAM Richtlinie im Abschnitt Ressource angeben.

{ "Version": "2012-10-17", "Statement": { "Action": "iot:DeleteCommand", "Effect": "Allow", "Resource": "arn:aws:iot:<region>:<account_id>:command/command-id" } }

Beispiel für einen Befehl löschen (AWS CLI)

Die folgenden Beispiele zeigen Ihnen, wie Sie einen Befehl mithilfe des delete-command AWS CLI Befehls löschen. Je nach Anwendung <command-id> ersetzen Sie ihn durch den Bezeichner für den Befehl, den Sie löschen möchten.

aws iot delete-command --command-id <command-id>

Wenn die API Anfrage erfolgreich ist, generiert der Befehl den Statuscode 202 oder 204. Sie können den verwenden GetCommandAPI, um zu überprüfen, ob der Befehl in Ihrem Konto nicht mehr vorhanden ist.