

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.

# Starten und Überwachen von Befehlsausführungen
<a name="iot-remote-command-execution-start-monitor"></a>

Nachdem Sie einen Befehl erstellt haben, starten Sie eine Ausführung auf dem Zielgerät. Das Gerät aktualisiert die Ergebnisse und veröffentlicht den Status in den für MQTT reservierten Themen. Rufen Sie den Ausführungsstatus von Ihrem Konto ab und überwachen Sie ihn.

Starten und überwachen Sie Befehle mit der AWS IoT Konsole oder AWS CLI.

**Topics**
+ [Starten Sie eine Befehlsausführung](#iot-remote-command-execution-start)
+ [Aktualisieren des Ergebnisses einer Befehlsausführung](#iot-remote-command-execution-update)
+ [Ruft eine Befehlsausführung ab](#iot-remote-command-execution-get)
+ [Befehlsaktualisierungen mit dem MQTT-Testclient anzeigen](#iot-remote-command-execution-update-mqtt)
+ [Listen Sie die Befehlsausführungen in Ihrem auf AWS-Konto](#iot-remote-command-execution-list)
+ [Löschen Sie eine Befehlsausführung](#iot-remote-command-execution-delete)

## Starten Sie eine Befehlsausführung
<a name="iot-remote-command-execution-start"></a>

**Wichtig**  
Sie sind allein dafür verantwortlich, Befehle auf sichere und den geltenden Gesetzen entsprechende Weise bereitzustellen.

Bevor Sie eine Ausführung starten, stellen Sie Folgendes sicher:
+ Sie haben im AWS IoT Namespace einen Befehl mit Payload-Informationen erstellt. Wenn die Ausführung gestartet wird, verarbeitet das Gerät Payload-Anweisungen und führt bestimmte Aktionen aus. Informationen [Erstellen Sie eine Befehlsressource](iot-remote-command-create-manage.md#iot-remote-command-create) zur Befehlserstellung finden Sie unter.
+ Ihr Gerät hat für MQTT reservierte Themen für Befehle abonniert. Wenn Sie mit der Ausführung beginnen, werden Payload-Informationen in dieser reservierten MQTT-Anforderung veröffentlicht. Thema:

  {{<devices>}}können Things- oder MQTT-Clients sein. {{<DeviceID>}}ist der Name des Dings oder die Client-ID. Unterstützte {{<PayloadFormat>}} Werte: JSON und CBOR. Weitere Informationen finden Sie unter [Befehle, Themen](reserved-topics.md#reserved-topics-commands).

  ```
  $aws/commands/{{<devices>}}/{{<DeviceID>}}/executions/+/request/{{<PayloadFormat>}}
  ```

  Verwenden Sie für „Nicht JSON/CBOR {{<PayloadFormat>}} -“ das folgende Befehlsthemenformat:

  ```
  $aws/commands/{{<devices>}}/{{<DeviceID>}}/executions/+/request
  ```

### Überlegungen zum Zielgerät
<a name="iot-command-execution-target"></a>

Geben Sie das Zielgerät an, das den Befehl empfangen und ausführen soll. Verwenden Sie einen Dingnamen für registrierte Geräte oder eine Client-ID für nicht registrierte Geräte. Nach Erhalt der Payload führt das Gerät den Befehl aus und führt die angegebenen Aktionen aus.

#### AWS IoT Objekt
<a name="iot-command-execution-target-thing"></a>

Zielgeräte können Dinge sein, die in der AWS IoT Registrierung registriert sind. Dinge vereinfachen die Gerätesuche und -verwaltung.

Registriere Geräte auf der [ Connect-Geräteseite ](https://console.aws.amazon.com/iot/home#/connect-overview) oder mithilfe von „Dinge“ [`CreateThing`](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateThing.html). Finden Sie vorhandene Dinge über [ Thing Hub ](https://console.aws.amazon.com/iot/home#/thinghub) oder mithilfe von [`DescribeThing`](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeThing.html). Einzelheiten zur Registrierung finden Sie unter Dinge mit der Registrierung [https://docs.aws.amazon.com/iot/latest/developerguide/thing-registry](https://docs.aws.amazon.com/iot/latest/developerguide/thing-registry) verwalten.

#### Client-ID
<a name="iot-command-execution-target-clientid"></a>

Verwenden Sie für nicht registrierte Geräte die Client-ID.

Die Client-ID ist eine eindeutige Kennung, die Sie Geräten zuweisen. Sie ist im MQTT-Protokoll definiert und enthält alphanumerische Zeichen, Unterstriche oder Bindestriche. Jedes Gerät, mit dem eine Verbindung hergestellt wird, AWS IoT benötigt eine eindeutige Client-ID.

**Anmerkung**  
Bei registrierten Dingen kann die Client-ID mit dem Namen des Dings übereinstimmen.
Wenn Geräte eine bestimmte Client-ID als Targeting verwenden, müssen sie AWS IoT mithilfe dieser Client-ID eine Verbindung herstellen, um die Payload zu empfangen.

Die Client-ID ist die MQTT-Client-ID, mit der Geräte eine Verbindung herstellen. AWS IoT Core AWS IoT verwendet diese ID, um Geräte zu identifizieren und Verbindungen und Abonnements zu verwalten.

### Überlegungen zum Timeout bei der Befehlsausführung
<a name="iot-command-execution-timeout"></a>

Timeout gibt die Dauer (in Sekunden) an, für die Geräte Ausführungsergebnisse bereitstellen.

Nach dem Erstellen einer Ausführung startet ein Timer. Wenn das Gerät offline geht oder innerhalb des Timeouts keine Ergebnisse meldet, wird für die Ausführung ein Timeout mit Status angezeigt`TIMED_OUT`.

Standard: 10 Sekunden. Maximum: 12 Stunden.

#### Timeout-Wert und `` TIMED\_OUT-Ausführungsstatus
<a name="iot-command-execution-timeout-status"></a>

Sowohl die Cloud als auch das Gerät können einen Timeout melden.

Nach dem Senden des Befehls startet ein Timer. Wenn innerhalb des Timeouts keine Geräteantwort eingeht, setzt die Cloud den Ausführungsstatus auf `TIMED_OUT` mit Ursachencode`$NO_RESPONSE_FROM_DEVICE`.

Dies tritt auf, wenn:
+ Das Gerät ging während der Ausführung offline.
+ Das Gerät konnte die Ausführung nicht innerhalb des Timeouts abschließen.
+ Das Gerät konnte den Status innerhalb des Timeouts nicht melden.

In diesem Fall erfolgt die Befehlsausführung nicht `TIMED_OUT` terminalgesteuert, wenn der Ausführungsstatus von aus der Cloud gemeldet wird. Ihr Gerät kann eine Antwort veröffentlichen, die den Status für jeden der Terminalstatus außer Kraft setzt:`SUCCEEDED`, `FAILED` oder. `REJECTED` Die Befehlsausführung wird dann zum Terminal und akzeptiert keine weiteren Aktualisierungen.

Ihr Gerät kann auch einen von der Cloud initiierten `TIMED_OUT` Status aktualisieren, indem es meldet, dass bei der Ausführung des Befehls ein Timeout aufgetreten ist. In diesem Fall bleibt der Ausführungsstatus des Befehls unverändert`TIMED_OUT`, aber das `statusReason` Objekt wird auf der Grundlage der vom Gerät gemeldeten Informationen aktualisiert. Die Befehlsausführung wird dann abgeschlossen, und es werden keine weiteren Aktualisierungen akzeptiert.

#### Verwendung persistenter MQTT-Sitzungen
<a name="iot-command-execution-timeout-persistent"></a>

Sie können persistente MQTT-Sitzungen für die Verwendung mit der AWS IoT Device Management Befehlsfunktion konfigurieren. Diese Funktion ist besonders nützlich, wenn Ihr Gerät beispielsweise offline geht und Sie sicherstellen möchten, dass das Gerät den Befehl auch dann empfängt, wenn es vor Ablauf der Zeitüberschreitung wieder online ist, und die angegebenen Anweisungen ausführt.

Standardmäßig ist die Ablaufzeit einer persistenten MQTT-Sitzung auf 60 Minuten festgelegt. Wenn Ihr Timeout für die Befehlsausführung auf einen Wert konfiguriert ist, der diese Dauer überschreitet, können Befehlsausführungen, die länger als 60 Minuten dauern, vom Message Broker abgelehnt werden und schlagen fehl. Um Befehle auszuführen, die länger als 60 Minuten dauern, können Sie eine Verlängerung der Ablaufzeit der persistenten Sitzung anfordern.

**Anmerkung**  
Um sicherzustellen, dass Sie die Funktion für persistente MQTT-Sitzungen korrekt verwenden, setzen Sie das Clean Start-Flag auf Null. Weitere Informationen finden Sie unter [Persistente MQTT-Sitzungen](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions).

### Starten Sie eine Befehlsausführung (Konsole)
<a name="iot-remote-command-execution-start-console"></a>

Um die Ausführung des Befehls von der Konsole aus zu starten, rufen Sie die [ Command ](https://console.aws.amazon.com/iot/home#/commandHub) Hub-Seite der AWS IoT Konsole auf und führen Sie die folgenden Schritte aus.

1. Um den Befehl auszuführen, den Sie erstellt haben, wählen Sie Befehl ** ausführen**.

1. Überprüfen Sie die Informationen zu dem Befehl, den Sie erstellt haben, einschließlich der reservierten MQTT-Themen und Parameter, falls zutreffend.

   Geben Sie für dynamische Befehle die Parameterwerte ein, oder belassen Sie sie bei den Standardwerten. Für Parameter, die keinen Standardwert haben, müssen Sie einen Wert angeben, der im Rahmen dieser Ausführung gesendet wird.

1. Geben Sie das Zielgerät an, das den Befehl empfangen und ausführen soll. Das Gerät kann als Objekt AWS IoT angegeben werden, wenn es registriert wurde AWS IoT, oder mithilfe der Client-ID, wenn Ihr Gerät noch nicht registriert wurde. Weitere Informationen finden Sie unter [Überlegungen zum Zielgerät](#iot-command-execution-target).

1. (Optional) Konfigurieren Sie einen Timeout-Wert für den Befehl, der die Dauer bestimmt, für die der Befehl ausgeführt werden soll, bevor das Zeitlimit überschritten wird. Wenn Ihr Befehl länger als 60 Minuten ausgeführt werden muss, müssen Sie möglicherweise die Ablaufzeit für persistente MQTT-Sitzungen verlängern. Weitere Informationen finden Sie unter [Überlegungen zum Timeout bei der Befehlsausführung](#iot-command-execution-timeout).

1. Wählen Sie **Befehl ausführen** aus.

### Starten Sie eine Befehlsausführung (AWS CLI)
<a name="iot-remote-command-execution-start-cli"></a>

Verwenden Sie die API-Operation für die [`StartCommandExecution`](https://docs.aws.amazon.com/iot/latest/apireference/API_StartCommandExecution.html) HTTP-Datenebene, um eine Befehlsausführung zu starten. Die API-Anfrage und -Antwort werden durch die Befehlsausführungs-ID korreliert. Nachdem das Gerät die Ausführung des Befehls abgeschlossen hat, kann es den Status und das Ausführungsergebnis an die Cloud melden, indem es eine Nachricht zum Antwortthema des Befehls veröffentlicht. Bei einem benutzerdefinierten Antwortcode können Anwendungscodes, die Sie besitzen, die Antwortnachricht verarbeiten und das Ergebnis an senden AWS IoT.

Wenn Ihre Geräte das Thema für die Befehlsanfrage abonniert haben, veröffentlicht die `StartCommandExecution` API die Payload-Nachricht zum Thema. Die Payload kann ein beliebiges Format Ihrer Wahl verwenden. Weitere Informationen finden Sie unter [Nutzlast des Befehls](iot-remote-command-create-manage.md#iot-commands-payload).

```
$aws/commands/{{<devices>}}/{{<DeviceID>}}/executions/+/request/{{<PayloadFormat>}}
```

Wenn das Payload-Format nicht JSON oder CBOR ist, wird im Folgenden das Format des Anforderungsthemas für Befehle angezeigt.

```
$aws/commands/{{<devices>}}/{{<DeviceID>}}/executions/+/request
```

#### Beispiel einer IAM-Richtlinie
<a name="iot-remote-command-execution-start-policy"></a>

Bevor Sie diesen API-Vorgang verwenden, stellen Sie sicher, dass Ihre IAM-Richtlinie Sie autorisiert, diese Aktion auf dem Gerät auszuführen. Das folgende Beispiel zeigt eine IAM-Richtlinie, die dem Benutzer die Berechtigung zum Ausführen der Aktion gewährt. `StartCommandExecution`

Ersetzen Sie in diesem Beispiel:
+ `{{region}}`mit Ihrem AWS-Region, z. B. `us-east-1`
+ `{{account-id}}`mit Ihrer AWS-Konto Nummer, wie z. `{{123456789012}}` B.
+ `{{command-id}}`mit einer eindeutigen Kennung für Ihren AWS IoT Befehl, z. `{{LockDoor}}` B. Wenn Sie mehr als einen Befehl senden möchten, können Sie diese Befehle in der IAM-Richtlinie angeben.
+ `{{devices}}`entweder mit `thing` oder `client` je nachdem, ob Ihre Geräte als AWS IoT Dinge registriert wurden oder als MQTT-Clients angegeben sind.
+ `{{device-id}}`mit deinem AWS IoT `thing-name` oder`client-id`.

```
{
  "Effect": "Allow",
  "Action": [
      "iot:StartCommandExecution"
  ],
  "Resource": [
      "arn:aws:iot:{{region}}:{{account-id}}:command/{{command-id}}",
      "arn:aws:iot:{{region}}:{{account-id}}:{{devices}}/{{device-id}}"
  ]
}
```

Eine Liste der unterstützten Bedingungsschlüssel finden Sie AWS IoT[ im * IAM-Benutzerhandbuch * unter ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-policy-keys) Bedingungsschlüssel für. `StartCommandExecution`

#### Rufen Sie den kontospezifischen Endpunkt auf der Datenebene ab
<a name="iot-remote-command-execution-start-endpoint"></a>

Bevor Sie den API-Befehl ausführen, müssen Sie die kontospezifische Endpunkt-URL für den Endpunkt abrufen. Wenn Sie Dual-Stack-Endpunkte (IPv4 und IPv6) verwenden, verwenden Sie die. `iot:Data-ATS` Der `iot:Jobs` Endpunkt ist nur für IPv4 vorgesehen. Wenn Sie z. B. den folgenden Befehl ausführen:

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

Es gibt die kontospezifische Endpunkt-URL zurück, wie in der Beispielantwort unten gezeigt.

```
{
    "endpointAddress":
    "{{<account-specific-prefix>}}-ats.iot.{{<region>}}.api.com"
}
```

#### Starten Sie ein Beispiel für die Befehlsausführung (AWS CLI)
<a name="iot-remote-command-execution-start-example"></a>

Das folgende Beispiel zeigt, wie die Ausführung eines Befehls mithilfe des `start-command-execution` AWS CLI Befehls gestartet wird.

Ersetzen Sie in diesem Beispiel:
+ {{`<command-arn>`}}mit dem ARN für den Befehl, den Sie ausführen möchten. Sie können diese Informationen der Antwort auf den `create-command` CLI-Befehl entnehmen. Wenn Sie beispielsweise den Befehl zum Ändern des Lenkradmodus ausführen, verwenden Sie`arn:aws:iot:{{region}}:{{account-id}}:command/{{SetComfortSteeringMode}}`.
+ {{`<target-arn>`}}mit dem Thing-ARN für das Zielgerät, das ein IoT-Ding oder ein MQTT-Client sein kann, für das Sie den Befehl ausführen möchten. Wenn Sie beispielsweise den Befehl für das Zielgerät ausführen`myRegisteredThing`, verwenden Sie`arn:aws:iot:{{region}}:{{account-id}}:thing/{{myRegisteredThing}}`.
+ {{`<endpoint-url>`}}mit dem kontospezifischen Endpunkt, den Sie erhalten haben[Rufen Sie den kontospezifischen Endpunkt auf der Datenebene ab](#iot-remote-command-execution-start-endpoint), mit dem Präfix. `https://` Beispiel, `https://{{123456789012abcd}}.jobs.iot.{{us-east-1}}.amazonaws.com`.
+ (Optional) Sie können auch einen zusätzlichen Parameter angeben`executionTimeoutSeconds`, wenn Sie den `StartCommandExecution` API-Vorgang ausführen. Dieses optionale Feld gibt die Zeit in Sekunden an, innerhalb derer das Gerät die Ausführung des Befehls abschließen muss. In der Standardeinstellung ist der Wert 10 Sekunden. Wenn der Befehlsausführungsstatus lautet`CREATED`, startet ein Timer. Wenn das Ergebnis der Befehlsausführung nicht vor Ablauf des Timers empfangen wird, wechselt der Status automatisch zu`TIMED_OUT`.
+ 

  ```
  aws iot-jobs-data start-command-execution \
      --command-arn {{<command-arn>}}  \
      --target-arn {{<target-arn>}} \  
      --endpoint {{<endpoint-url>}} \ 
      --execution-timeout-seconds {{900}}
  ```
+ (Optional) Geben Sie bei dynamischen Befehlen die Parameter und ihre Werte an, die für die Ersetzung verwendet werden sollen. Sie müssen einen Wert für Parameter angeben, für die bei der Befehlserstellung kein DefaultValue festgelegt wurde. Wenn ein Parameter einen DefaultValue hat, hat der hier angegebene Parameterwert Vorrang. Bei Parametern, für die valueConditions festgelegt sind, muss der hier angegebene Parameterwert die Bedingung erfüllen.

  Basierend auf einem `Light_Power_Status` dynamischen Befehlsbeispiel:
+ 

  ```
  aws iot-jobs-data start-command-execution \
      --command-arn {{arn:aws:iot:us-east-1:123456789012:command/Light_Power_Status}}  \
      --target-arn {{arn:aws:iot:us-east-1:123456789012:thing/exampleThing}} \
      --endpoint {{<endpoint-url>}} \
      --execution-timeout-seconds {{900}} \
      --parameters {{"powerStatus={S=ON}"}}
  ```

Wenn Sie diesen Befehl ausführen, wird eine Befehlsausführungs-ID zurückgegeben. Sie können diese ID verwenden, um den Befehlsausführungsstatus, die Details und den Verlauf der Befehlsausführung abzufragen.

**Anmerkung**  
Wenn der Befehl veraltet ist, schlägt die `StartCommandExecution` API-Anforderung mit einer Validierungsausnahme fehl. Um diesen Fehler zu beheben, stellen Sie zuerst den Befehl mithilfe der `UpdateCommand` API wieder her und führen Sie dann die `StartCommandExecution` Anfrage aus.

```
{
    "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542"
}
```

## Aktualisieren des Ergebnisses einer Befehlsausführung
<a name="iot-remote-command-execution-update"></a>

Verwenden Sie den API-Vorgang der `UpdateCommandExecution` MQTT-Datenebene, um den Status oder das Ergebnis einer Befehlsausführung zu aktualisieren.

**Anmerkung**  
Bevor Sie diese API verwenden:  
Ihr Gerät muss eine MQTT-Verbindung hergestellt und die Themen für Befehlsanfragen und Antworten abonniert haben. Weitere Informationen finden Sie unter [High-level Arbeitsablauf für Befehle](iot-remote-command-workflow.md).
Sie müssen diesen Befehl bereits mit der `StartCommandExecution` API-Operation ausgeführt haben.

### Beispiel einer IAM-Richtlinie
<a name="iot-remote-command-execution-update-policy"></a>

Bevor Sie diesen API-Vorgang verwenden, stellen Sie sicher, dass Ihre IAM-Richtlinie Ihr Gerät zur Ausführung dieser Aktionen autorisiert. Im Folgenden wird eine Beispielrichtlinie gezeigt, die Ihr Gerät zur Ausführung der Aktion autorisiert. Weitere Beispiele für IAM-Richtlinien, die dem Benutzer die Berechtigung zum Ausführen der `UpdateCommandExecution` MQTT-Aktion gewähren, finden Sie unter. [Beispiele zu den Verbinden- und Veröffentlichen-Richtlinien](connect-and-pub.md)

Ersetzen Sie in diesem Beispiel:
+ `{{Region}}`mit Ihrem AWS-Region, z. B. `us-east-1`
+ `{{AccountID}}`mit deiner AWS-Konto Nummer, wie zum Beispiel{{`123456789012`}}.
+ `{{ThingName}}`mit dem Namen Ihres Dings AWS IoT , für das Sie die Befehlsausführung ins Visier nehmen, wie zum Beispiel{{`myRegisteredThing`}}.
+ `{{commands-request-topic}}`und `{{commands-response-topic}}` mit den Namen Ihrer AWS IoT Befehlsanfrage- und Antwortthemen. Weitere Informationen finden Sie unter [High-level Arbeitsablauf für Befehle](iot-remote-command-workflow.md).

#### Beispiel für eine IAM-Richtlinie für die MQTT-Client-ID
<a name="iot-remote-command-execution-update-policy-client"></a>

Der folgende Code zeigt ein Beispiel für eine Geräterichtlinie bei Verwendung der MQTT-Client-ID.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/json"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/request",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/accepted",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/rejected",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/request/json",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/accepted/json",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/rejected/json"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/request",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/accepted",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/rejected",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/request/json",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/accepted/json",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/rejected/json"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:us-east-1:123456789012:client/${iot:ClientId}"
    }
  ]
}
```

#### Beispiel für eine IAM-Richtlinie für eine IoT-Sache
<a name="iot-remote-command-execution-update-policy-thing"></a>

Der folgende Code zeigt ein Beispiel für eine Geräterichtlinie bei der Verwendung AWS IoT eines Dings.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/request",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/accepted",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/rejected",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/request/json",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/accepted/json",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/rejected/json"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/request",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/accepted",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/rejected",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/request/json",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/accepted/json",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/rejected/json"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:us-east-1:123456789012:client/${iot:ClientId}"
    }
  ]
}
```

### Wie benutzt man die `UpdateCommandExecution` API
<a name="iot-remote-command-execution-update-works"></a>

Nachdem die Befehlsausführung im Anforderungsthema eingegangen ist, verarbeitet das Gerät den Befehl. Anschließend verwendet es die `UpdateCommandExecution` API, um den Status und das Ergebnis der Befehlsausführung auf das folgende Antwortthema zu aktualisieren.

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

In diesem Beispiel {{`<DeviceID>`}} ist das die eindeutige Kennung Ihres Zielgeräts und {{`<execution-id>`}} die Kennung der Befehlsausführung auf dem Zielgerät. Das {{<PayloadFormat>}} kann JSON oder CBOR sein.

**Anmerkung**  
Wenn Sie Ihr Gerät nicht registriert haben AWS IoT, können Sie die Client-ID als Ihre Kennung anstelle eines Objektnamens verwenden.

```
$aws/commands/clients/{{<ClientID>}}/executions/{{<ExecutionId>}}/response/{{<PayloadFormat>}}
```

#### Das Gerät hat Aktualisierungen des Ausführungsstatus gemeldet
<a name="iot-command-execution-reported"></a>

Ihre Geräte können die API verwenden, um jede der folgenden Statusaktualisierungen für die Befehlsausführung zu melden. Weitere Informationen zu diesen Status finden Sie unter[Status der Befehlsausführung](iot-remote-command-concepts.md#iot-command-execution-status).
+ `IN_PROGRESS`: Wenn das Gerät mit der Ausführung des Befehls beginnt, kann es den Status auf `IN_PROGRESS` aktualisieren.
+ `SUCCEEDED`: Wenn das Gerät den Befehl erfolgreich verarbeitet und die Ausführung abgeschlossen hat, kann das Gerät eine Nachricht im Antwortthema veröffentlichen als`SUCCEEDED`.
+ `FAILED`: Wenn das Gerät den Befehl nicht ausführen konnte, kann es eine Nachricht im Antwortthema veröffentlichen als`FAILED`.
+ `REJECTED`: Wenn das Gerät den Befehl nicht akzeptiert hat, kann es eine Nachricht im Antwortthema veröffentlichen als`REJECTED`.
+ `TIMED_OUT`: Der Ausführungsstatus des Befehls kann sich `TIMED_OUT` aus einem der folgenden Gründe in ändern.
  + Das Ergebnis der Befehlsausführung wurde nicht empfangen. Dies kann daran liegen, dass die Ausführung nicht innerhalb der angegebenen Dauer abgeschlossen wurde oder dass das Gerät die Statusinformationen zum Antwortthema nicht veröffentlicht hat.
  + Das Gerät meldet, dass beim Versuch, den Befehl auszuführen, ein Timeout aufgetreten ist.

Weitere Informationen zum `TIMED_OUT` Status finden Sie unter[Timeout-Wert und `` TIMED\_OUT-Ausführungsstatus](#iot-command-execution-timeout-status).

#### Überlegungen bei der Verwendung der `UpdateCommandExecution` API
<a name="iot-remote-command-execution-update-considerations"></a>

Im Folgenden finden Sie einige wichtige Überlegungen bei der Verwendung der `UpdateCommandExecution` API.
+ Ihre Geräte können ein optionales `statusReason` Objekt verwenden, um zusätzliche Informationen zur Ausführung bereitzustellen. Wenn Ihre Geräte dieses Objekt bereitstellen, ist das `reasonCode` Feld des Objekts erforderlich, das `reasonDescription` Feld ist jedoch optional.
+ Wenn Ihre Geräte das `statusReason` Objekt verwenden, `reasonCode` müssen sie das Muster verwenden `[A-Z0-9_-]+` und dürfen eine Länge von 64 Zeichen nicht überschreiten. Wenn Sie das angeben`reasonDescription`, stellen Sie sicher, dass es eine Länge von 1.024 Zeichen nicht überschreitet. Es können alle Zeichen außer Steuerzeichen wie Zeilenumbrüchen verwendet werden.
+ Ihre Geräte können ein optionales `result` Objekt verwenden, um Informationen über das Ergebnis der Befehlsausführung bereitzustellen, z. B. den Rückgabewert eines Remote-Funktionsaufrufs. Wenn Sie das angeben`result`, muss mindestens ein Eintrag erforderlich sein.
+ In dem `result` Feld geben Sie die Einträge als Schlüssel-Wert-Paare an. Für jeden Eintrag müssen Sie die Datentypinformationen als Zeichenfolge, boolesch oder binär angeben. Ein Zeichenfolgendatentyp muss den Schlüssel verwenden`s`, ein boolescher Datentyp verwendet den Schlüssel `b` und ein binärer Datentyp muss den Schlüssel verwenden. `bin` Stellen Sie sicher, dass diese Schlüssel in Kleinbuchstaben geschrieben sind.
+ Wenn Sie beim Ausführen der `UpdateCommandExecution` API auf einen Fehler stoßen, können Sie den Fehler in der `AWSIoTLogsV2` Protokollgruppe in Amazon CloudWatch einsehen. Informationen zum Aktivieren der Protokollierung und zum Anzeigen der Protokolle finden Sie unter[Konfiguration AWS IoT Protokollierung](configure-logging.md).

#### `UpdateCommandExecution`API-Beispiel
<a name="iot-remote-command-execution-update-example"></a>

Der folgende Code zeigt ein Beispiel dafür, wie Ihr Gerät die `UpdateCommandExecution` API verwenden kann, um den Ausführungsstatus zu melden, das `statusReason` Feld, um zusätzliche Informationen zum Status bereitzustellen, und das Ergebnisfeld, um Informationen über das Ergebnis der Ausführung bereitzustellen, in diesem Fall beispielsweise den Prozentsatz der Autobatterie.

```
{
  "status": "IN_PROGRESS",
  "statusReason": {
    "reasonCode": "200",
    "reasonDescription": "Execution_in_progress"
  },
  "result": {
        "car_battery": {
            "s": "car battery at 50 percent"
        }
    }
}
```

**Anmerkung**  
Wenn die `UpdateCommandExecution` MQTT-Anforderung fehlschlägt, veröffentlicht der Dienst eine Fehlerantwort auf das `/rejected` Thema. Eine vollständige Liste der Fehlercodes und Anleitungen zur Problembehandlung finden Sie unter[AWS IoT Befehle zur Problembehandlung](commands-troubleshooting.md).

## Ruft eine Befehlsausführung ab
<a name="iot-remote-command-execution-get"></a>

Nachdem Sie einen Befehl ausgeführt haben, können Sie Informationen über die Befehlsausführung von der AWS IoT Konsole abrufen und die verwenden AWS CLI. Sie können die folgenden Informationen abrufen.

**Anmerkung**  
Um den aktuellen Status der Befehlsausführung abzurufen, muss Ihr Gerät die Statusinformationen mithilfe der `UpdateCommandExecution` MQTT-API im Antwortthema veröffentlichen, wie unten beschrieben. Bis das Gerät eine Veröffentlichung zu diesem Thema veröffentlicht, meldet die `GetCommandExecution` API den Status als `CREATED` oder`TIMED_OUT`.

Jede Befehlsausführung, die Sie erstellen, hat:
+ eine **Ausführungs-ID**, die eine eindeutige Kennung der Befehlsausführung darstellt.
+ den **Status** der Befehlsausführung. Wenn Sie den Befehl auf dem Zielgerät ausführen, geht die Befehlsausführung in den Zustand `CREATED` über. Sie kann dann in andere Befehlsausführungsstatus übergehen, wie unten beschrieben.
+ Das ** Ergebnis ** der Befehlsausführung.
+ Die eindeutige **Befehls-ID** und das Zielgerät, für das Ausführungen erstellt wurden.
+ Das **Startdatum**, das die Uhrzeit angibt, zu der die Befehlsausführung erstellt wurde.

### Ruft eine Befehlsausführung ab (Konsole)
<a name="iot-remote-command-execution-get-console"></a>

Sie können eine Befehlsausführung mit einer der folgenden Methoden von der Konsole abrufen.
+ 

**Von der Command-Hub-Seite**  
Gehen Sie zur [ Command ](https://console.aws.amazon.com/iot/home#/commandHub) Hub-Seite der AWS IoT Konsole und führen Sie die folgenden Schritte aus.

  1. Wählen Sie den Befehl aus, für den Sie eine Ausführung auf dem Zielgerät erstellt haben.

  1. Auf der Seite mit den Befehlsdetails auf der ** Registerkarte ** Befehlsverlauf werden die von Ihnen erstellten Ausführungen angezeigt. Wählen Sie die Ausführung aus, für die Sie Informationen abrufen möchten.

  1. Wenn Ihre Geräte die `UpdateCommandExecution` API zur Bereitstellung der Ergebnisinformationen verwendet haben, finden Sie diese Informationen dann auf der ** Registerkarte ** Ergebnisse auf dieser Seite.
+ 

**Von der Thing-Hub-Seite**  
Wenn Sie bei der Ausführung des Befehls ein AWS IoT Ding als Zielgerät ausgewählt haben, können Sie die Ausführungsdetails auf der Ding-Hub-Seite einsehen.

  1. Gehen Sie in der AWS IoT Konsole zur [https://console.aws.amazon.com/iot/home#/thinghub](https://console.aws.amazon.com/iot/home#/thinghub) Thing-Hub-Seite und wählen Sie das Ding aus, für das Sie die Befehlsausführung erstellt haben.

  1. Auf der Seite mit den Ding-Details sehen Sie im ** Befehlsverlauf die Ausführungen**, die Sie erstellt haben. Wählen Sie die Ausführung aus, für die Sie Informationen abrufen möchten.

  1. Wenn Ihre Geräte die `UpdateCommandExecution` API zur Bereitstellung der Ergebnisinformationen verwendet haben, finden Sie diese Informationen dann auf der ** Registerkarte ** Ergebnisse auf dieser Seite.

### Rufen Sie eine Befehlsausführung (CLI) ab
<a name="iot-remote-command-execution-get-cli"></a>

Verwenden Sie den HTTP-API-Vorgang der [`GetCommandExecution`](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html) AWS IoT Core Steuerungsebene, um Informationen über eine Befehlsausführung abzurufen. Sie müssen diesen Befehl bereits mit der `StartCommandExecution` API-Operation ausgeführt haben.

#### Beispiel einer IAM-Richtlinie
<a name="iot-remote-command-execution-get-policy"></a>

Bevor Sie diesen API-Vorgang verwenden, stellen Sie sicher, dass Ihre IAM-Richtlinie Sie autorisiert, diese Aktion auf dem Gerät auszuführen. Das folgende Beispiel zeigt eine IAM-Richtlinie, die dem Benutzer die Berechtigung zum Ausführen der Aktion gewährt. `GetCommandExecution`

Ersetzen Sie in diesem Beispiel:
+ `{{region}}`mit Ihrem AWS-Region, z. B. `us-east-1`
+ `{{account-id}}`mit Ihrer AWS-Konto Nummer, wie z. `{{123456789012}}` B.
+ `{{command-id}}`mit Ihrer eindeutigen AWS IoT Befehlskennung, z. `{{LockDoor}}` B.
+ `{{devices}}`entweder mit `thing` oder `client` je nachdem, ob Ihre Geräte als AWS IoT Dinge registriert wurden oder als MQTT-Clients angegeben sind.
+ `{{device-id}}`mit deinem AWS IoT `thing-name` oder`client-id`.

```
{
  "Effect": "Allow",
  "Action": [
      "iot:GetCommandExecution"
  ],
  "Resource": [
      "arn:aws:iot:{{region}}:{{account-id}}:command/{{command-id}}",
      "arn:aws:iot:{{region}}:{{account-id}}:{{devices}}/{{device-id}}"
  ]
}
```

#### Rufen Sie ein Beispiel für die Befehlsausführung ab
<a name="iot-remote-command-execution-get-example"></a>

Das folgende Beispiel zeigt, wie Sie Informationen zu einem Befehl abrufen, der mit dem `start-command-execution` AWS CLI Befehl ausgeführt wurde. Das folgende Beispiel zeigt, wie Sie Informationen zu einem Befehl abrufen können, der ausgeführt wurde, um den Lenkradmodus auszuschalten.

Ersetzen Sie in diesem Beispiel:
+ {{`<execution-id>`}}mit dem Bezeichner für die Befehlsausführung, für die Sie Informationen abrufen möchten.
+ {{`<target-arn>`}}mit der Amazon-Ressourcennummer (ARN) des Geräts, für das Sie die Ausführung anstreben. Sie können diese Informationen der Antwort auf den `start-command-execution` CLI-Befehl entnehmen.
+ Wenn Ihre Geräte die `UpdateCommandExection` API zur Bereitstellung des Ausführungsergebnisses verwendet haben, können Sie optional angeben, ob das Ergebnis der Befehlsausführung in die Antwort der `GetCommandExecution` API mithilfe der `GetCommandExecution` API aufgenommen werden soll.

```
aws iot get-command-execution  
    --execution-id {{<execution-id>}} \ 
    --target-arn {{<target-arn>}} \
    --include-result
```

Wenn Sie diesen Befehl ausführen, wird eine Antwort generiert, die Informationen über den ARN der Befehlsausführung, den Ausführungsstatus und die Uhrzeit, zu der die Ausführung begonnen und abgeschlossen wurde, enthält. Es stellt auch ein `statusReason` Objekt bereit, das zusätzliche Informationen zum Status enthält. Weitere Informationen zu den verschiedenen Status und dem Grund für den Status finden Sie unter[Status der Befehlsausführung](iot-remote-command-concepts.md#iot-command-execution-status). 

Der folgende Code zeigt ein Beispiel für eine Antwort auf die API-Anforderung.

**Anmerkung**  
Das `completedAt` Feld in der Ausführungsantwort entspricht dem Zeitpunkt, zu dem das Gerät einen Terminalstatus an die Cloud meldet. Im Falle eines `TIMED_OUT` Status wird dieses Feld nur gesetzt, wenn das Gerät einen Timeout meldet. Wenn der `TIMED_OUT` Status von der Cloud festgelegt wird, wird der `TIMED_OUT` Status nicht aktualisiert. Weitere Informationen zum Timeout-Verhalten finden Sie unter[Überlegungen zum Timeout bei der Befehlsausführung](#iot-command-execution-timeout).

```
{
    "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
    "commandArn": "arn:aws:iot:us-east-1:123456789012:command/LockDoor",
    "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/myRegisteredThing",
    "status": "SUCCEEDED",
    "statusReason": {
        "reasonCode": "DEVICE_SUCCESSFULLY_EXECUTED",
        "reasonDescription": "SUCCESS"
    },
    "result": {
        "sn": { "s": "ABC-001" },
        "digital": { "b": true }        
    },
    "createdAt": "2024-03-23T00:50:10.095000-07:00",
    "completedAt": "2024-03-23T00:50:10.095000-07:00"    
}
```

## Befehlsaktualisierungen mit dem MQTT-Testclient anzeigen
<a name="iot-remote-command-execution-update-mqtt"></a>

Sie können den MQTT-Testclient verwenden, um den Nachrichtenaustausch über MQTT anzuzeigen, wenn Sie die Befehlsfunktion verwenden. Nachdem Ihr Gerät eine MQTT-Verbindung mit hergestellt hat AWS IoT, können Sie einen Befehl erstellen, die Nutzlast angeben und ihn dann auf dem Gerät ausführen. Wenn Sie den Befehl ausführen und Ihr Gerät das reservierte MQTT-Anforderungsthema für Befehle abonniert hat, wird die Payload-Meldung angezeigt, die zu diesem Thema veröffentlicht wurde.

Das Gerät empfängt dann die Payload-Anweisungen und führt die angegebenen Operationen auf dem Gerät aus. AWS IoT Anschließend verwendet es die `UpdateCommandExecution` API, um das Ergebnis der Befehlsausführung und die Statusinformationen in den für Befehle reservierten MQTT-Antwortthemen zu veröffentlichen. AWS IoT Device Management hört sich Aktualisierungen zu den Antwortthemen an und speichert die aktualisierten Informationen und veröffentlicht Protokolle an AWS CloudTrail und Amazon. CloudWatch Sie können dann die neuesten Informationen zur Befehlsausführung von der Konsole oder mithilfe der `GetCommandExecution` API abrufen.

Die folgenden Schritte zeigen, wie Sie den MQTT-Testclient verwenden, um Nachrichten zu beobachten.

1. Öffnen Sie den [ MQTT-Testclient ](https://console.aws.amazon.com/iot/home#/test) in der AWS IoT Konsole.

1. Geben Sie auf der ** Registerkarte ** Abonnieren das folgende Thema ein und wählen Sie dann ** Abonnieren**. Dabei {{<thingId>}} befindet sich der Name des Geräts, bei AWS IoT dem Sie sich registriert haben.
**Anmerkung**  
Den Dingnamen für Ihr Gerät finden Sie auf der [https://console.aws.amazon.com/iot/home#/thinghub](https://console.aws.amazon.com/iot/home#/thinghub) Thing-Hub-Seite der AWS IoT Konsole. Wenn Sie Ihr Gerät nicht als Ding registriert haben, können Sie es registrieren, wenn Sie über die Seite „Gerät [ verbinden“ eine Verbindung herstellen](https://console.aws.amazon.com/iot/home#/connect-overview). AWS IoT 

   ```
   $aws/commands/things/{{<thingId>}}/executions/+/request
   ```

1. (Optional) Auf der ** Registerkarte ** Abonnieren können Sie auch die folgenden Themen eingeben und ** Abonnieren auswählen**.

   ```
   $aws/commands/things/+/executions/+/response/accepted/json
   $aws/commands/things/+/executions/+/response/rejected/json
   ```

1. Wenn Sie eine Befehlsausführung starten, wird die Nutzlast der Nachricht unter Verwendung des Anforderungsthemas, das das Gerät abonniert hat, an das Gerät gesendet. `$aws/commands/things/{{<thingId>}}/executions/+/request` Im MQTT-Testclient sollten Sie die Befehlspayload sehen, die die Anweisungen für das Gerät zur Verarbeitung des Befehls enthält.

1. Nachdem das Gerät mit der Ausführung des Befehls begonnen hat, kann es Statusaktualisierungen zum folgenden reservierten MQTT-Antwortthema für Befehle veröffentlichen.

   ```
   $aws/commands/{{<devices>}}/{{<device-id>}}/executions/{{<executionId>}}/response/json
   ```

   Stellen Sie sich zum Beispiel einen Befehl vor, den Sie ausgeführt haben, um die Klimaanlage Ihres Autos einzuschalten, um die Temperatur auf einen gewünschten Wert zu senken. Die folgende JSON-Datei zeigt eine Beispielnachricht, die das Fahrzeug zum Antwortthema veröffentlicht hat und aus der hervorgeht, dass der Befehl nicht ausgeführt werden konnte.

   ```
   {
     "deviceId": "My_Car",
     "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
     "status": "FAILED",
     "statusReason": {
       "reasonCode": "CAR_LOW_ON_BATTERY",
       "reasonDescription": "Car battery is lower than 5 percent"
     }
   }
   ```

   In diesem Fall können Sie die Batterie Ihres Autos aufladen und den Befehl dann erneut ausführen.

## Listen Sie die Befehlsausführungen in Ihrem auf AWS-Konto
<a name="iot-remote-command-execution-list"></a>

Nachdem Sie einen Befehl ausgeführt haben, können Sie Informationen über die Befehlsausführung von der AWS IoT Konsole abrufen und die AWS CLI verwenden. Sie können die folgenden Informationen abrufen.
+ eine **Ausführungs-ID**, die eine eindeutige Kennung der Befehlsausführung darstellt.
+ den **Status** der Befehlsausführung. Wenn Sie den Befehl auf dem Zielgerät ausführen, geht die Befehlsausführung in den Zustand `CREATED` über. Sie kann dann in andere Befehlsausführungsstatus übergehen, wie unten beschrieben.
+ Die eindeutige **Befehls-ID** und das Zielgerät, für das Ausführungen erstellt wurden.
+ Das **Startdatum**, das die Uhrzeit angibt, zu der die Befehlsausführung erstellt wurde.

### Listet die Befehlsausführungen in Ihrem Konto auf (Konsole)
<a name="iot-remote-command-execution-list-console"></a>

Sie können alle Befehlsausführungen von der Konsole aus mit einer der folgenden Methoden sehen.
+ 

**Von der Command-Hub-Seite**  
Gehen Sie zur [ Command ](https://console.aws.amazon.com/iot/home#/commandHub) Hub-Seite der AWS IoT Konsole und führen Sie die folgenden Schritte aus.

  1. Wählen Sie den Befehl aus, für den Sie eine Ausführung auf dem Zielgerät erstellt haben.

  1. Gehen Sie auf der Seite mit den Befehlsdetails zur ** Registerkarte ** Befehlsverlauf. Dort wird eine Liste der von Ihnen erstellten Ausführungen angezeigt.
+ 

**Von der Thing-Hub-Seite**  
Wenn Sie bei der Ausführung des Befehls ein AWS IoT Ding als Zielgerät ausgewählt und mehrere Befehlsausführungen für ein einzelnes Gerät erstellt haben, können Sie die Ausführungen für das Gerät auf der Ding-Hub-Seite anzeigen.

  1. Gehen Sie in der AWS IoT Konsole zur [https://console.aws.amazon.com/iot/home#/thinghub](https://console.aws.amazon.com/iot/home#/thinghub) Thing-Hub-Seite und wählen Sie das Ding aus, für das Sie die Ausführungen erstellt haben.

  1. Auf der Seite mit den Ding-Details sehen Sie im ** Befehlsverlauf eine Liste der Ausführungen**, die Sie für das Gerät erstellt haben.

### Listet die Befehlsausführungen in Ihrem Konto auf (CLI)
<a name="iot-remote-command-execution-list-cli"></a>

Verwenden Sie den HTTP-API-Vorgang der [`ListCommandExecutions`](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommandExecutions.html) AWS IoT Core Steuerungsebene, um alle Befehlsausführungen in Ihrem Konto aufzulisten.

#### Beispiel einer IAM-Richtlinie
<a name="iot-remote-command-execution-list-policy"></a>

Bevor Sie diesen API-Vorgang verwenden, stellen Sie sicher, dass Ihre IAM-Richtlinie Sie autorisiert, diese Aktion auf dem Gerät auszuführen. Das folgende Beispiel zeigt eine IAM-Richtlinie, die dem Benutzer die Berechtigung zum Ausführen der Aktion gewährt. `ListCommandExecutions`

Ersetzen Sie in diesem Beispiel:
+ `{{region}}`mit Ihrem AWS-Region, z. B. `us-east-1`
+ `{{account-id}}`mit Ihrer AWS-Konto Nummer, wie z. `{{123456789012}}` B.
+ `{{command-id}}`mit Ihrer eindeutigen AWS IoT Befehlskennung, z. `{{LockDoor}}` B.

```
{
  "Effect": "Allow",
  "Action": "iot:ListCommandExecutions",
  "Resource": *
}
```

#### Beispiel für die Ausführung von Befehlen auflisten
<a name="iot-remote-command-execution-list-example"></a>

Das folgende Beispiel zeigt Ihnen, wie Sie Befehlsausführungen in Ihrem auflisten. AWS-Konto

Wenn Sie den Befehl ausführen, müssen Sie angeben, ob die Liste so gefiltert werden soll, dass nur Befehlsausführungen angezeigt werden, die für ein bestimmtes Gerät mithilfe von erstellt wurden`targetArn`, oder Ausführungen für einen bestimmten Befehl, der mit dem angegeben wurde. `commandArn`

Ersetzen Sie in diesem Beispiel:
+ {{`<target-arn>`}}mit der Amazon-Ressourcennummer (ARN) des Geräts, für das Sie die Ausführung anstreben, z. B. `arn:aws:iot:{{us-east-1}}:{{123456789012}}:thing/{{b8e4157c98f332cffb37627f}}`
+ {{`<target-arn>`}}mit der Amazon-Ressourcennummer (ARN) des Geräts, für das Sie die Ausführung anstreben, z. `arn:aws:iot:{{us-east-1}}:{{123456789012}}:thing/{{b8e4157c98f332cffb37627f}}` B.
+ {{`<after>`}}mit der Zeit, nach der Sie die Ausführungen auflisten möchten, die erstellt wurden, `2024-11-01T03:00` z. B.

```
aws iot list-command-executions \ 
--target-arn {{<target-arn>}} \ 
--started-time-filter '{after={{<after>}}}' \
--sort-order "ASCENDING"
```

Wenn Sie diesen Befehl ausführen, wird eine Antwort generiert, die eine Liste der von Ihnen erstellten Befehlsausführungen sowie die Uhrzeit, zu der die Ausführung der Ausführungen begonnen und abgeschlossen wurde, enthält. Es enthält auch Statusinformationen und das `statusReason` Objekt, das zusätzliche Informationen zum Status enthält.

```
{
    "commandExecutions": [
        {
            "commandArn": "arn:aws:iot:us-east-1:123456789012:command/TestMe002",
            "executionId": "b2b654ca-1a71-427f-9669-e74ae9d92d24",
            "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f",
            "status": "TIMED_OUT",
            "createdAt": "2024-11-24T14:39:25.791000-08:00",
            "startedAt": "2024-11-24T14:39:25.791000-08:00"
        },
        {
            "commandArn": "arn:aws:iot:us-east-1:123456789012:command/TestMe002",
            "executionId": "34bf015f-ef0f-4453-acd0-9cca2d42a48f",
            "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f",
            "status": "IN_PROGRESS",
            "createdAt": "2024-11-24T14:05:36.021000-08:00",
            "startedAt": "2024-11-24T14:05:36.021000-08:00"
        }
    ]
}
```

Weitere Informationen zu den verschiedenen Status und dem Grund für den Status finden Sie unter[Status der Befehlsausführung](iot-remote-command-concepts.md#iot-command-execution-status).

## Löschen Sie eine Befehlsausführung
<a name="iot-remote-command-execution-delete"></a>

Wenn Sie eine Befehlsausführung nicht mehr verwenden möchten, können Sie sie dauerhaft aus Ihrem Konto entfernen.

**Anmerkung**  
Eine Befehlsausführung kann nur gelöscht werden, wenn sie einen Terminalstatus wie `SUCCEEDED``FAILED`, oder erreicht hat`REJECTED`.
Dieser Vorgang kann nur mithilfe der AWS IoT Core API oder der ausgeführt werden AWS CLI. Er ist nicht über die Konsole verfügbar.

### Beispiel einer IAM-Richtlinie
<a name="iot-remote-command-execution-delete-policy"></a>

Bevor Sie diesen API-Vorgang verwenden, stellen Sie sicher, dass Ihre IAM-Richtlinie Ihr Gerät autorisiert, diese Aktionen auszuführen. Im Folgenden wird eine Beispielrichtlinie gezeigt, die Ihr Gerät zur Ausführung der Aktion autorisiert.

Ersetzen Sie in diesem Beispiel:
+ `{{Region}}`mit Ihrem AWS-Region, wie z. B. `us-east-1`
+ `{{AccountID}}`mit Ihrer AWS-Konto Nummer, wie z. {{`123456789012`}} B.
+ `{{CommandID}}`mit der Kennung des Befehls, für den Sie die Ausführung löschen möchten.
+ `{{devices}}`entweder mit `thing` oder `client` je nachdem, ob Ihre Geräte als AWS IoT Dinge registriert wurden oder als MQTT-Clients angegeben sind.
+ `{{device-id}}`mit deinem AWS IoT `thing-name` oder`client-id`.

```
{
  "Effect": "Allow",
  "Action": [
      "iot:DeleteCommandExecution"
  ],
  "Resource": [
      "arn:aws:iot:{{region}}:{{account-id}}:command/{{command-id}}",
      "arn:aws:iot:{{region}}:{{account-id}}:{{devices}}/{{device-id}}"
  ]
}
```

### Löschen Sie ein Beispiel für die Befehlsausführung
<a name="iot-remote-command-execution-delete-example"></a>

Das folgende Beispiel zeigt, wie Sie einen Befehl mithilfe des `delete-command` AWS CLI Befehls löschen. Ersetzen Sie je nach Anwendung {{`<execution-id>`}} durch den Bezeichner für die Befehlsausführung, den Sie löschen, und den {{`<target-arn>`}} durch den ARN Ihres Zielgeräts. 

```
aws iot delete-command-execution \ 
--execution-id {{<execution-id>}} \ 
--target-arn {{<target-arn>}}
```

Wenn die API-Anfrage erfolgreich ist, generiert die Befehlsausführung den Statuscode 200. Sie können die `GetCommandExecution` API verwenden, um zu überprüfen, ob die Befehlsausführung in Ihrem Konto nicht mehr existiert.