

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.

# Sicherstellung der Idempotenz
<a name="ECS_Idempotency"></a>

Wenn Sie einen Mutationsvorgang durchführen, wird möglicherweise eine Ausnahme angezeigt, die auf Timeouts oder Serverprobleme zurückzuführen ist, die nach der Mutation der Ressourcen auftreten. Dies kann es schwierig machen, festzustellen, ob die Mutation aufgetreten ist, und kann zu mehreren Wiederholungsversuchen führen. Wenn der ursprüngliche Vorgang und die nachfolgenden Wiederholungen die Mutationen jedoch tatsächlich durchgeführt haben, haben Sie möglicherweise Stacking-Änderungen vorgenommen oder mehr Ressourcen erstellt, als Sie beabsichtigt hatten. Idempotenz stellt sicher, dass eine Operation Ressourcen nicht öfter als einmal mutiert. Wenn bei einer idempotenten Anfrage die ursprüngliche Anfrage erfolgreich mutiert wurde, werden alle nachfolgenden Versuche erfolgreich abgeschlossen, ohne dass eine weitere Mutation durchgeführt wird. 

**Topics**
+ [Idempotenz in Amazon ECS](#client-tokens)
+ [Idempotenz für RunTask](#RunTaskIdempotency)
+ [Beispiele](#Run_Task_Idempotency_CLI)
+ [Versuchen Sie es erneut mit den Empfehlungen für idempotente Anfragen](#recommended-actions)

## Idempotenz in Amazon ECS
<a name="client-tokens"></a>

*Die folgenden API-Aktionen unterstützen optional Idempotenz mithilfe eines Client-Tokens.* Die entsprechenden AWS CLI Befehle unterstützen auch Idempotenz mithilfe eines Client-Tokens. Ein Client-Token ist eine eindeutige Zeichenfolge, bei der Groß- und Kleinschreibung beachtet wird. Um mit einer dieser Aktionen eine idempotente API-Anfrage zu stellen, geben Sie in der Anfrage ein Client-Token an. Sie sollten dasselbe Client-Token nicht für andere API-Anfragen wiederverwenden. Wenn Sie eine Anfrage, die erfolgreich abgeschlossen wurde, mit demselben Client-Token und denselben Parametern erneut versuchen, ist die Wiederholung erfolgreich, ohne dass weitere Aktionen ausgeführt werden. 

**Ich bin impotent, wenn ein Client-Token verwendet wird**
+ CreateService

  Das Client-Token kann bis zu 36 ASCII-Zeichen im Bereich von 33—126 (einschließlich) enthalten.
+ CreateTaskSet

  Das Client-Token kann bis zu 36 ASCII-Zeichen im Bereich von 33—126 (einschließlich) enthalten.
+ RunTask

  Das Client-Token kann bis zu 64 ASCII-Zeichen im Bereich von 33—126 (einschließlich) enthalten.

**Arten von Idempotenz**
+ Cluster — Anfragen mit demselben Token im selben Cluster sind idempotent. Beispielsweise kann ClientToken A nur einmal als Anforderungsparameter für `RunTask` Anfragen in Cluster X verwendet werden. `RunTask` Anfragen an andere Cluster werden als separate Anfrage betrachtet. Daher können Sie ClientToken A für eine `RunTask` Anfrage für Cluster Y verwenden.

## Idempotenz für RunTask
<a name="RunTaskIdempotency"></a>

Die `RunTask` API unterstützt Idempotenz mithilfe eines Client-Tokens. Ein Client-Token ist eine eindeutige Zeichenfolge, die Sie beim Senden einer API-Anforderung angeben. Wenn Sie eine API-Anforderung mit demselben Client-Token und denselben Anforderungsparametern wiederholen, nachdem sie erfolgreich abgeschlossen wurde, wird das Ergebnis der ursprünglichen Anforderung zurückgegeben. Wenn Sie eine erfolgreiche Anfrage mit demselben Client-Token erneut versuchen, aber einer oder mehrere der Parameter anders sind als die Region oder Availability Zone, schlägt der erneute Versuch mit einem fehl. `ConflictException` Wenn Sie kein eigenes Client-Token angeben, generiert das AWS SDK AWS Command Line Interface automatisch ein Client-Token für die Anfrage, um sicherzustellen, dass sie idempotent ist. Ein Client-Token kann eine beliebige Zeichenfolge sein, die bis zu 64 ASCII-Zeichen im Bereich von 33—126 (einschließlich) enthält.

Die Gültigkeitsdauer (TTL) für das `RunTask` Client-Token beträgt 24 Stunden. Sie sollten dasselbe Client-Token nicht für verschiedene Anfragen wiederverwenden. Die maximale TTL des Client-Tokens ist gültig, je nachdem, welcher der beiden folgenden Werte niedriger ist:
+ 24 Stunden
+ Die Lebensdauer der Ressource plus eine Stunde

  Die Lebensdauer einer Ressource entspricht dem Zeitstempel, zu dem die Aufgabe erstellt wurde, und dem Zeitstempel, zu dem der letzte Status (`lastStatus`) übergegangen ist. `STOPPED` Wenn Sie `RunTask` mehr als eine Aufgabe starten, entspricht die Lebensdauer der Ressource der Lebensdauer der letzten Aufgabe, zu der gewechselt wurde. `STOPPED`

### RunTask Regeln und Antworten erneut versuchen
<a name="retry-response"></a>

Wenn Sie eine Anfrage erneut versuchen, weil Sie eine 5xx-Ausnahme erhalten haben, enthält die wiederholte erfolgreiche Antwort normalerweise alle Informationen, die bei der ursprünglichen Anfrage zurückgegeben worden wären. Aufgaben, die für weniger als eine Stunde angehalten wurden, enthalten nur den ARN der Aufgabe, den letzten Status und den gewünschten Status.

Im Folgenden finden Sie ein Beispiel für die Antwort auf einen erneuten Versuch, wenn eine Aufgabe ausgeführt, eine Aufgabe gestoppt wurde und eine Aufgabe nicht gestartet werden konnte.

```
{
  "failures": [
    {
      "arn": "arn:aws:ecs:us-east-1:123456789012:container/4df26bb4-f057-467b-a079-961675296e64",
      "reason": "RESOURCE:MEMORY"
    }
  ],
  "tasks": [
    {
      "desiredStatus": "RUNNING",
      "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/default/fdf2c302-468c-4e55-b884-5331d816e7fb",
      ...
    },
    {
      "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/default/fdf2c302-468c-4e55-b884-5331d819999",
      "lastStatus": "STOPPED",
      ...
     }
  ]
}
```

Fehler, die älter als eine Stunde sind, beinhalten nur die Anzahl der fehlgeschlagenen Aufgaben.

## Beispiele
<a name="Run_Task_Idempotency_CLI"></a>

### AWS CLI Beispiele für Befehle
<a name="cli-example"></a>

Um einen AWS CLI Befehl idempotent zu machen, fügen Sie die `--client-token` Option hinzu. 

**Beispiel: create-service**  
Der folgende Befehl [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html#examples) verwendet Idempotenz, da er ein Client-Token enthält.

```
aws ecs create-service \
    --cluster MyCluster \
    --service MyService \
    --task-definition MyTaskDefinition:2 \
    --desired-count 2 \
    --launch-type FARGATE \
    --platform-version LATEST \
    --network-configuration "awsvpcConfiguration={subnets=["subnet-12344321"],securityGroups=["sg-12344321"],assignPublicIp="ENABLED"}" \
    --client-token 550e8400-e29b-41d4-a716-44665544
```

**Beispiel: create-task-set**  
Der folgende Befehl [create-task-set](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-task-set.html#examples) verwendet Idempotenz, da er ein Client-Token enthält.

```
aws ecs create-task-set \
    --cluster MyCluster \
    --service MyService \
    --task-definition MyTaskDefinition:2 \
    --network-configuration "awsvpcConfiguration={subnets=["subnet-12344321"],securityGroups=["sg-12344321"]}" \
    --client-token 550e8400-e29b-41d4-a716-44665544
```

**Beispiel: run-task**  
Der folgende [Run-Task-Befehl](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html#examples) verwendet Idempotenz, da er ein Client-Token enthält.

```
aws ecs run-task \
    --cluster MyCluster \
    --task-definition MyTaskDefinition:2 \
    --client-token 550e8400-e29b-41d4-a716-446655440000
```

### Beispiele für API-Anfragen
<a name="api-example"></a>

Um eine API-Anfrage idempotent zu machen, fügen Sie den `clientToken` Parameter hinzu.

**Beispiel: CreateService**  
Die folgende [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)API-Anfrage verwendet Idempotenz, da sie ein Client-Token enthält.

```
POST / HTTP/1.1
Host: ecs.us-east-1.amazonaws.com
Accept-Encoding: identity
Content-Length: 87
X-Amz-Target: AmazonEC2ContainerServiceV20141113.CreateService
X-Amz-Date: 20150429T170125Z
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
  "serviceName": "MyService",
  "taskDefinition": "MyTaskDefinition:2",
  "desiredCount": 10,
   "capacityProviderStrategy": [ 
      { 
         "base": "number",
         "capacityProvider": "FARGATE",
         "weight": 1
      }
   ],
   "capacityProviderStrategy": [ 
      { 
         "base": "number",
         "capacityProvider": "FARGATE_SPOT",
         "weight": 1
      }
   ],
   "clientToken": "550e8400-e29b-41d4-a716-44665544"
}
```

**Beispiel: CreateTaskSet**  
Die folgende [CreateTaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html)API-Anfrage verwendet Idempotenz, da sie ein Client-Token enthält.

```
POST / HTTP/1.1
Host: ecs.us-east-1.amazonaws.com
Accept-Encoding: identity
Content-Length: 87
X-Amz-Target: AmazonEC2ContainerServiceV20141113.CreateTaskSet
X-Amz-Date: 20150429T170125Z
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
  "serviceName": "MyService",
  "taskDefinition": "mytask:1",
  "desiredCount": 1,
   "capacityProviderStrategy": [ 
      { 
         "base": "number",
         "capacityProvider": "FARGATE",
         "weight": 1
      }
   ],
   "capacityProviderStrategy": [ 
      { 
         "base": "number",
         "capacityProvider": "FARGATE_SPOT",
         "weight": 1
      }
   ],
    "clientToken": "550e8400-e29b-41d4-a716-44665544" 
}
```

**Beispiel: RunTask**  
Die folgende [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)API-Anfrage verwendet Idempotenz, da sie ein Client-Token enthält.

```
POST / HTTP/1.1
Host: ecs.us-east-1.amazonaws.com
Accept-Encoding: identity
Content-Length: 45
X-Amz-Target: AmazonEC2ContainerServiceV20141113.RunTask
X-Amz-Date: 20161121T215740Z
User-Agent: aws-cli/1.11.13 Python/2.7.12 Darwin/16.1.0 botocore/1.4.66
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{
  "count": 1,
  "taskDefinition": "mytask:1",
  "clientToken": "550e8400-e29b-41d4-a716-446655440000" 
}
```

## Versuchen Sie es erneut mit den Empfehlungen für idempotente Anfragen
<a name="recommended-actions"></a>

Die folgende Tabelle zeigt einige häufig vorkommende Antworten, die Sie auf idempotente API-Anfragen erhalten könnten, und stellt Empfehlungen zu Wiederholungsversuchen bereit.


| Antwort | Empfehlung | Kommentare | 
| --- | --- | --- | 
| 200 (OK) | Nicht erneut versuchen | Die ursprüngliche Anfrage wurde erfolgreich abgeschlossen. Alle nachfolgenden Wiederholungsversuche werden als erfolgreich zurückgegeben. | 
| [Antwortcodes der Serie 400 (Client-Fehler)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/errors-overview.html#CommonErrors) | Nicht erneut versuchen | Es liegt eins der folgenden Probleme mit der Anfrage vor: [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/AmazonECS/latest/developerguide/ECS_Idempotency.html)<br />Wenn die Anfrage eine Ressource umfasst, deren Status sich gerade ändert, könnte ein erneuter Anfrageversuch möglicherweise erfolgreich sein. | 
| Antwortcodes der Serie 500 ([Serverfehler](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/errors-overview.html#api-error-codes-table-server)) | Erneut versuchen | Der Fehler wird durch ein AWS serverseitiges Problem verursacht und ist im Allgemeinen vorübergehend. Wiederholen Sie die Anfrage mit einer geeigneten Back-off-Strategie. | 