

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Garantire l'idempotenza nelle richieste di API Amazon EC2
<a name="ec2-api-idempotency"></a>

Quando si effettua una richiesta API mutante, di solito restituisce un risultato prima del completamento dei flussi di lavoro asincroni dell'operazione. Le operazioni potrebbero inoltre scadere o riscontrare altri problemi relativi al server prima del completamento, anche se la richiesta ha già restituito un risultato. Ciò potrebbe rendere difficile determinare l'esito della richiesta e potrebbe comportare più tentativi per garantire che l'operazione venga completata correttamente. Tuttavia, se la richiesta originale e i tentativi successivi hanno esito positivo, l'operazione viene completata più volte, Ciò significa che potresti creare più risorse del previsto.

L'*idempotenza* assicura che una richiesta API venga completata solo una volta. Quando si utilizza una richiesta idempotente, se la richiesta originale viene completata correttamente, tutti i tentativi successivi vengono completati correttamente senza alcuna azione aggiuntiva. Tuttavia, il risultato potrebbe contenere informazioni aggiornate, come lo stato di creazione corrente.

**Topics**
+ [

## Idempotenza in Amazon EC2
](#client-tokens)
+ [

## RunInstances idempotenza
](#run-instances-idempotency)
+ [

## Esempi
](#Run_Instance_Idempotency_CLI)
+ [

## Riprova i consigli per le richieste idempotenti
](#recommended-actions)

## Idempotenza in Amazon EC2
<a name="client-tokens"></a>

Le seguenti azioni API sono idempotenti per impostazione predefinita e non richiedono una configurazione aggiuntiva. Per impostazione predefinita, AWS CLI i comandi corrispondenti supportano anche l'idempotenza.

**Idempotente per impostazione predefinita**
+ AssociateAddress
+ CreateVpnConnection
+ DisassociateAddress
+ ReplaceNetworkAclAssociation
+ TerminateInstances

*Le seguenti azioni API supportano opzionalmente l'idempotenza utilizzando un token client.* I AWS CLI comandi corrispondenti supportano anche l'idempotenza utilizzando un token client. Un token client è una stringa unica, con distinzione tra maiuscole e minuscole, composta da un massimo di 64 caratteri ASCII. Per effettuare una richiesta API idempotente utilizzando una di queste azioni, specifica un token client nella richiesta. Non dovresti riutilizzare lo stesso token client per altre richieste API. Se riprovi una richiesta completata correttamente utilizzando lo stesso token client e gli stessi parametri, il nuovo tentativo ha esito positivo senza eseguire ulteriori azioni. Se si riprova una richiesta riuscita utilizzando lo stesso token client, ma uno o più parametri sono diversi, diversi dalla regione o dalla zona di disponibilità, il nuovo tentativo fallisce e viene restituito un errore. `IdempotentParameterMismatch`

**Idempotente utilizzando un token 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

**Tipi di idempotenza**
+ Regionale: le richieste sono idempotenti in ogni regione. Tuttavia, puoi utilizzare la stessa richiesta, incluso lo stesso token client, in una regione diversa.
+ Zonale: le richieste sono idempotenti in ogni zona di disponibilità di una regione. Ad esempio, se si specifica lo stesso token client in due chiamate nella stessa regione, le chiamate hanno esito positivo se specificano valori diversi per il parametro. **AllocateHosts** **AvailabilityZone**

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

L'azione [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API utilizza l'idempotenza regionale e zonale.

Il tipo di idempotenza utilizzato dipende da come si specifica la zona di disponibilità nella richiesta API. RunInstances La richiesta utilizza l'**idempotenza zonale** nei seguenti casi:
+ **Se specificate esplicitamente una zona di disponibilità utilizzando il **AvailabilityZone**parametro nel tipo di dati Placement**
+ Se si specifica implicitamente una zona di disponibilità utilizzando il parametro **SubnetId**

**Se non si specifica esplicitamente o implicitamente una zona di disponibilità, la richiesta utilizza l'idempotenza regionale.**

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

L'idempotenza zonale garantisce che una richiesta RunInstances API sia idempotente in ogni zona di disponibilità di una regione. Ciò garantisce che una richiesta con lo stesso token client possa essere completata una sola volta all'interno di ciascuna zona di disponibilità di una regione. Tuttavia, lo stesso token client può essere utilizzato per avviare istanze in altre zone di disponibilità della regione.

Ad esempio, se invii una richiesta idempotente per avviare un'istanza nella zona di `us-east-1a` disponibilità e quindi utilizzi lo stesso token client in una richiesta nella zona di `us-east-1b` disponibilità, lanciamo istanze in ciascuna di quelle zone di disponibilità. Se uno o più parametri sono diversi, i tentativi successivi con lo stesso token client in quelle zone di disponibilità vengono restituiti correttamente senza eseguire ulteriori azioni o falliscono con un errore. `IdempotentParameterMismatch`

### Idempotenza regionale
<a name="regional-idempotency"></a>

L'idempotenza regionale garantisce che una richiesta RunInstances API sia idempotente in una regione. Ciò garantisce che una richiesta con lo stesso token client possa essere completata solo una volta all'interno di una regione. Tuttavia, la stessa identica richiesta, con lo stesso token client, può essere utilizzata per avviare istanze in una regione diversa.

Ad esempio, se invii una richiesta idempotente per avviare un'istanza nella `us-east-1` regione e poi utilizzi lo stesso token client in una richiesta nella `eu-west-1` regione, lanciamo istanze in ognuna di quelle regioni. Se uno o più parametri sono diversi, i tentativi successivi con lo stesso token client in quelle regioni vengono restituiti correttamente senza eseguire ulteriori azioni o hanno esito negativo con un errore. `IdempotentParameterMismatch`

**Suggerimento**  
Se una delle zone di disponibilità nella regione richiesta non è disponibile, RunInstances le richieste che utilizzano l'idempotenza regionale potrebbero non riuscire. Per sfruttare le funzionalità della zona di disponibilità offerte dall' AWS infrastruttura, consigliamo di utilizzare l'idempotenza zonale all'avvio delle istanze. RunInstances le richieste che utilizzano l'idempotenza zonale e hanno come target una zona di disponibilità disponibile hanno esito positivo anche se un'altra zona di disponibilità nella regione richiesta non è disponibile.

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

### AWS CLI esempi di comandi
<a name="cli-example"></a>

Per rendere un AWS CLI comando idempotente, aggiungete l'opzione. `--client-token` 

**Esempio 1: idempotenza**  
Il seguente comando [allocate-hosts](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-hosts.html) utilizza l'idempotenza in quanto include un token 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
```

**Esempio 2: idempotenza regionale di run-instances**  
Il seguente comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) utilizza l'idempotenza regionale in quanto include un token client ma non specifica in modo esplicito o implicito una zona di disponibilità.

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

**Esempio 3: idempotenza zonale di run-instances**  
Il seguente comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) utilizza l'idempotenza zonale in quanto include un token client e una zona di disponibilità specificata in modo esplicito.

```
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
```

### Esempi di richieste API
<a name="api-example"></a>

Per rendere idempotente una richiesta API, aggiungi il parametro. `ClientToken`

**Esempio 1: idempotenza**  
La seguente richiesta [AllocateHosts](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AllocateHosts.html)API utilizza l'idempotenza in quanto include un token 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
```

**Esempio 2: idempotenza regionale RunInstances**  
La seguente richiesta [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API utilizza l'idempotenza regionale in quanto include un token client ma non specifica in modo esplicito o implicito una zona di 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
```

**Esempio 3: idempotenza zonale RunInstances**  
La seguente richiesta [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API utilizza l'idempotenza zonale in quanto include un token client e una zona di disponibilità specificata in modo esplicito.

```
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
```

## Riprova i consigli per le richieste idempotenti
<a name="recommended-actions"></a>

La tabella seguente mostra alcune risposte comuni che si potrebbero ricevere per richieste API idempotenti e fornisce consigli per effettuare nuovi tentativi.


| Risposta | Raccomandazione | Commenti | 
| --- | --- | --- | 
|  200 (OK)  |  Non riprovare  |  La richiesta originale è stata completata con successo. Qualsiasi tentativo successivo ottiene esito positivo.  | 
|  [Codici di risposta della serie 400 (errori del client)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html#CommonErrors)  |  Non riprovare  |  La richiesta presenta uno dei problemi seguenti:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ec2/latest/devguide/ec2-api-idempotency.html) Se la richiesta riguarda una risorsa che sta cambiando stato, un nuovo tentativo potrebbe avere esito positivo.  | 
|  [Codici di risposta della serie 500 (errori del server)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html#api-error-codes-table-server)  |  Riprova  |  L'errore è causato da un problema AWS sul lato server ed è generalmente temporaneo. Ripeti la richiesta con una strategia di backoff appropriata.  | 