

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.

# Garantir l'idempuissance des requêtes d'API Amazon EC2
<a name="ec2-api-idempotency"></a>

Lorsque vous effectuez une demande d’API de mutation, la demande renvoie généralement un résultat avant la fin des flux de travail asynchrones de l’opération. Les opérations peuvent également expirer ou rencontrer d’autres problèmes de serveur avant d’être terminées, même si la demande a déjà renvoyé un résultat. Par conséquent, il peut être difficile de déterminer si la demande a abouti ou non et de multiples tentatives peuvent être déclenchées pour s’assurer que l’opération se termine correctement. Toutefois, si la demande initiale et les tentatives suivantes aboutissent, l’opération est terminée plusieurs fois. Cela signifie que vous pourriez créer plus de ressources que vous ne le souhaitiez.

L’*idempotence* garantit qu’une demande d’API se termine correctement. Avec une demande idempotente, si la demande d’origine se termine avec succès, toutes les tentatives suivantes se terminent avec succès, sans aucune action supplémentaire. Toutefois, le résultat peut contenir des informations mises à jour, telles que le statut de création actuel.

**Topics**
+ [Idempotencia sur Amazon EC2](#client-tokens)
+ [RunInstances idempuissance](#run-instances-idempotency)
+ [Exemples](#Run_Instance_Idempotency_CLI)
+ [Recommandations de nouvelle tentative pour les demandes idempotentes](#recommended-actions)

## Idempotencia sur Amazon EC2
<a name="client-tokens"></a>

Les actions d'API suivantes sont idempotentes par défaut et ne nécessitent aucune configuration supplémentaire. Les AWS CLI commandes correspondantes prennent également en charge l'idempotencie par défaut.

**Idempotent par défaut**
+ AssociateAddress
+ CreateVpnConnection
+ DisassociateAddress
+ ReplaceNetworkAclAssociation
+ TerminateInstances

Les actions d'API suivantes prennent éventuellement en charge l'idempotencie à l'aide d'un jeton *client*. Les AWS CLI commandes correspondantes prennent également en charge l'idempotencie à l'aide d'un jeton client. Un jeton client est une chaîne unique, distinguant majuscules et minuscules, comportant jusqu'à 64 caractères ASCII. Pour effectuer une demande d'API idempotente à l'aide de l'une de ces actions, spécifiez un jeton client dans la demande. Vous ne devez pas réutiliser le même jeton client pour d'autres demandes d'API. Si vous réessayez une demande qui s'est terminée avec succès en utilisant le même jeton client et les mêmes paramètres, la nouvelle tentative aboutit sans effectuer d'autre action. Si vous réessayez une demande réussie en utilisant le même jeton client, mais qu'un ou plusieurs paramètres sont différents, autres que la région ou la zone de disponibilité, la nouvelle tentative échoue avec une `IdempotentParameterMismatch` erreur.

**Idempotent à l'aide d'un jeton client**
+ AllocateHosts
+ AllocateIpamPoolCidr
+ AssociateClientVpnTargetNetwork
+ AssociateIpamResourceDiscovery
+ AttachVerifiedAccessTrustProvider
+ AuthorizeClientVpnIngress
+ CopyFpgaImage
+ CopyImage
+ CreateCapacityReservation
+ CreateCapacityReservationFleet
+ CreateClientVpnEndpoint
+ CreateClientVpnRoute
+ CreateEgressOnlyInternetGateway
+ CreateFleet
+ CreateFlowLogs
+ CreateFpgaImage
+ CreateInstanceConnectEndpoint
+ CreateIpam
+ CreateIpamPool
+ CreateIpamResourceDiscovery
+ CreateIpamScope
+ CreateLaunchTemplate
+ CreateLaunchTemplateVersion
+ CreateManagedPrefixList
+ CreateNatGateway
+ CreateNetworkAcl
+ CreateNetworkInsightsAccessScope
+ CreateNetworkInsightsPath
+ CreateNetworkInterface
+ CreateReplaceRootVolumeTask
+ CreateReservedInstancesListing
+ CreateRouteTable
+ CreateTrafficMirrorFilter
+ CreateTrafficMirrorFilterRule
+ CreateTrafficMirrorSession
+ CreateTrafficMirrorTarget
+ CreateVerifiedAccessEndpoint
+ CreateVerifiedAccessGroup
+ CreateVerifiedAccessInstance
+ CreateVerifiedAccessTrustProvider
+ CreateVolume
+ CreateVpcEndpoint
+ CreateVpcEndpointConnectionNotification
+ CreateVpcEndpointServiceConfiguration
+ DeleteVerifiedAccessEndpoint
+ DeleteVerifiedAccessGroup
+ DeleteVerifiedAccessInstance
+ DeleteVerifiedAccessTrustProvider
+ DetachVerifiedAccessTrustProvider
+ ExportImage
+ ImportImage
+ ImportSnapshot
+ ModifyInstanceCreditSpecification
+ ModifyLaunchTemplate
+ ModifyReservedInstances
+ ModifyVerifiedAccessEndpoint
+ ModifyVerifiedAccessEndpointPolicy
+ ModifyVerifiedAccessGroup
+ ModifyVerifiedAccessGroupPolicy
+ ModifyVerifiedAccessInstance
+ ModifyVerifiedAccessInstanceLoggingConfiguration
+ ModifyVerifiedAccessTrustProvider
+ ProvisionIpamPoolCidr
+ PurchaseHostReservation
+ RequestSpotFleet
+ RequestSpotInstances
+ RunInstances
+ StartNetworkInsightsAccessScopeAnalysis
+ StartNetworkInsightsAnalysis

**Types d'idempuissance**
+ Régional — Les demandes sont idempotentes dans chaque région. Cependant, vous pouvez utiliser la même demande, y compris le même jeton client, dans une région différente.
+ Zonal — Les demandes sont idempotentes dans chaque zone de disponibilité d'une région. Par exemple, si vous spécifiez le même jeton client lors de deux appels vers **AllocateHosts** la même région, les appels aboutissent s'ils spécifient des valeurs différentes pour le **AvailabilityZone** paramètre.

## RunInstances idempuissance
<a name="run-instances-idempotency"></a>

L'action de [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)l'API utilise à la fois l'idempuissance régionale et zonale.

Le type d'idempuissance utilisé dépend de la manière dont vous spécifiez la zone de disponibilité dans votre demande d' RunInstances API. La demande utilise l'**idempotencie zonale** dans les cas suivants :
+ Si vous spécifiez explicitement une zone de disponibilité à l'aide du **AvailabilityZone**paramètre du type de données de **placement**
+ Si vous spécifiez implicitement une zone de disponibilité à l'aide du paramètre **SubnetId**

Si vous ne spécifiez pas explicitement ou implicitement de zone de disponibilité, la demande utilise l'**idempotencie régionale**.

### Idempotencie zonale
<a name="zonal-idempotency"></a>

L'idempotencie zonale garantit qu'une demande d' RunInstances API est idempotente dans chaque zone de disponibilité d'une région. Cela garantit qu'une demande avec le même jeton client ne peut être traitée qu'une seule fois dans chaque zone de disponibilité d'une région. Toutefois, le même jeton client peut être utilisé pour lancer des instances dans d'autres zones de disponibilité de la région.

Par exemple, si vous envoyez une demande idempotente pour lancer une instance dans la zone de `us-east-1a` disponibilité, puis que vous utilisez le même jeton client dans une demande dans la zone de `us-east-1b` disponibilité, nous lançons des instances dans chacune de ces zones de disponibilité. Si un ou plusieurs paramètres sont différents, les tentatives suivantes avec le même jeton client dans ces zones de disponibilité sont soit renvoyées avec succès sans effectuer aucune autre action, soit échouer avec une `IdempotentParameterMismatch` erreur.

### Idempuissance régionale
<a name="regional-idempotency"></a>

L'idempuissance régionale garantit qu'une demande d' RunInstances API est idempotente dans une région. Cela garantit qu'une demande avec le même jeton client ne peut être traitée qu'une seule fois dans une région. Cependant, la même demande, avec le même jeton client, peut être utilisée pour lancer des instances dans une autre région.

Par exemple, si vous envoyez une demande idempotente pour lancer une instance dans la `us-east-1` région, puis que vous utilisez le même jeton client dans une demande dans la `eu-west-1` région, nous lançons des instances dans chacune de ces régions. Si un ou plusieurs paramètres sont différents, les tentatives suivantes avec le même jeton client dans ces régions sont soit renvoyées avec succès sans effectuer aucune autre action, soit échouer avec une `IdempotentParameterMismatch` erreur.

**Astuce**  
Si l'une des zones de disponibilité de la région demandée n'est pas disponible, les RunInstances demandes utilisant l'idempuissance régionale peuvent échouer. Pour tirer parti des fonctionnalités de zone de disponibilité proposées par l' AWS infrastructure, nous vous recommandons d'utiliser l'idempotencie zonale lors du lancement des instances. RunInstances les demandes qui utilisent l'idempotencie zonale et ciblent une zone de disponibilité disponible aboutissent même si aucune autre zone de disponibilité dans la région demandée n'est disponible.

## Exemples
<a name="Run_Instance_Idempotency_CLI"></a>

### AWS CLI exemples de commandes
<a name="cli-example"></a>

Pour rendre une AWS CLI commande idempotente, ajoutez l'`--client-token`option. 

**Exemple 1 : Idempotencie**  
La commande [allocate-hosts](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-hosts.html) suivante utilise l'idempotencie car elle inclut un jeton client.

```
aws ec2 allocate-hosts  --instance-type m5.large  --availability-zone eu-west-1a  --auto-placement on  --quantity 1 --client-token 550e8400-e29b-41d4-a716-446655440000
```

**Exemple 2 : idempotence régionale des instances d'exécution**  
La commande [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) suivante utilise l'idempotencie régionale car elle inclut un jeton client mais ne spécifie pas explicitement ou implicitement de zone de disponibilité.

```
aws ec2 run-instances --image-id ami-b232d0db --count 1 --key-name my-key-pair --client-token 550e8400-e29b-41d4-a716-446655440000
```

**Exemple 3 : idempotencie zonale des instances d'exécution**  
La commande [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) suivante utilise l'idempotencie zonale car elle inclut un jeton client et une zone de disponibilité explicitement spécifiée.

```
aws ec2 run-instances  --placement "AvailabilityZone=us-east-1a" --image-id ami-b232d0db --count 1 --key-name my-key-pair --client-token 550e8400-e29b-41d4-a716-446655440000
```

### Exemples de demandes d'API
<a name="api-example"></a>

Pour rendre une demande d'API idempotente, ajoutez le `ClientToken` paramètre.

**Exemple 1 : Idempotencie**  
La demande [AllocateHosts](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AllocateHosts.html)d'API suivante utilise l'idempotencie car elle inclut un jeton client.

```
https://ec2.amazonaws.com/?Action=AllocateHosts
&AvailabilityZone=us-east-1b
&InstanceType=m5.large
&Quantity=1
&AutoPlacement=off
&ClientToken=550e8400-e29b-41d4-a716-446655440000
&AUTHPARAMS
```

**Exemple 2 : RunInstances idempuissance régionale**  
La demande [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)d'API suivante utilise l'idempotencie régionale car elle inclut un jeton client mais ne spécifie pas explicitement ou implicitement de zone de disponibilité.

```
https://ec2.amazonaws.com/?Action=RunInstances
&ImageId=ami-3ac33653
&MaxCount=1
&MinCount=1
&KeyName=my-key-pair
&ClientToken=550e8400-e29b-41d4-a716-446655440000
&AUTHPARAMS
```

**Exemple 3 : idempotence RunInstances zonale**  
La demande [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)d'API suivante utilise l'idempotencie zonale car elle inclut un jeton client et une zone de disponibilité explicitement spécifiée.

```
https://ec2.amazonaws.com/?Action=RunInstances
&Placement.AvailabilityZone=us-east-1d
&ImageId=ami-3ac33653
&MaxCount=1
&MinCount=1
&KeyName=my-key-pair
&ClientToken=550e8400-e29b-41d4-a716-446655440000
&AUTHPARAMS
```

## Recommandations de nouvelle tentative pour les demandes idempotentes
<a name="recommended-actions"></a>

La table suivante présente certaines réponses courantes que vous pouvez obtenir pour les demandes d’API idempotentes et fournit des recommandations pour réessayer.


| Réponse | Recommandation | Commentaires | 
| --- | --- | --- | 
|  200 (OK)  |  Ne pas réessayer  |  La demande d’origine s’est terminée avec succès. Toutes les tentatives suivantes sont renvoyées avec succès.  | 
|  Codes de réponse de la série 400 (erreurs [du client](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html#CommonErrors))  |  Ne pas réessayer  |  La demande présente un problème, parmi les suivants :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/ec2/latest/devguide/ec2-api-idempotency.html) Si la demande concerne une ressource en train de changer d’état, il est possible que la nouvelle tentative aboutisse.  | 
|  Codes de réponse de la série 500 ([erreurs du serveur](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html#api-error-codes-table-server))  |  Réessayer  |  L'erreur est due à un problème AWS côté serveur et est généralement transitoire. Répétez la demande avec une stratégie de backoff appropriée.  | 