

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à.

# Migrazione da AWS SDK for Ruby versione 1 o 2 a SDK AWS for Ruby versione 3
<a name="migrating-to-v3"></a>

Questo argomento include dettagli per aiutarti a migrare dalla versione 1 o 2 dell' AWS SDK for Ruby alla versione 3.

## Side-by-side utilizzo
<a name="side-by-side-usage"></a>

Non è necessario sostituire la versione 1 o 2 dell' AWS SDK for Ruby con la versione 3. È possibile utilizzarli insieme nella stessa applicazione. Per ulteriori informazioni, consulta [questo post del blog](http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2).

Segue un rapido esempio.

```
require 'aws-sdk-v1' # version 1
require 'aws-sdk'    # version 2
require 'aws-sdk-s3' # version 3

s3 = AWS::S3::Client.new # version 1
s3 = Aws::S3::Client.new # version 2 or 3
```

Non è necessario riscrivere il codice della versione funzionante 1 o 2 esistente per iniziare a utilizzare l'SDK della versione 3. Una strategia di migrazione valida consiste nello scrivere solo nuovo codice sull'SDK della versione 3.

## Differenze generali
<a name="general-differences"></a>

La versione 3 differisce dalla versione 2 in un modo importante.
+ Ogni servizio è disponibile come gemma separata.

La versione 2 differisce dalla versione 1 in diversi modi importanti.
+ Namespace root diverso, rispetto a. `Aws` `AWS` Ciò consente l'utilizzo. side-by-side
+  `Aws.config`— Ora un hash Ruby alla vaniglia, invece di un metodo.
+ Opzioni di costruzione rigorose: quando si costruisce un client o un oggetto risorsa nell'SDK della versione 1, le opzioni di costruzione sconosciute vengono ignorate. Nella versione 2, le opzioni del costruttore sconosciute attivano un. `ArgumentError` Esempio:

  ```
  # version 1
  AWS::S3::Client.new(http_reed_timeout: 10)
  # oops, typo'd option is ignored
  
  # version 2
  Aws::S3::Client.new(http_reed_timeout: 10)
  # => raises ArgumentError
  ```

## Differenze tra i client
<a name="client-differences"></a>

Non ci sono differenze tra le classi di client nella versione 2 e nella versione 3.

Tra la versione 1 e la versione 2, le classi client presentano il minor numero di differenze esterne. Molti client di servizi disporranno di interfacce compatibili dopo la costruzione del client. Alcune differenze importanti:
+  `Aws::S3::Client`- La classe client Amazon S3 versione 1 è stata codificata a mano. La versione 2 è generata da un modello di servizio. I nomi e gli input dei metodi sono molto diversi nella versione 2.
+  `Aws::EC2::Client`- La versione 2 utilizza nomi plurali per gli elenchi di output, la versione 1 utilizza il suffisso. `_set` Esempio:

  ```
  # version 1
  resp = AWS::EC2::Client.new.describe_security_groups
  resp.security_group_set
  #=> [...]
  
  # version 2
  resp = Aws::EC2::Client.new.describe_security_groups
  resp.security_groups
  #=> [...]
  ```
+  `Aws::SWF::Client`— La versione 2 utilizza risposte strutturate, mentre la versione 1 utilizza hash Ruby di tipo vanilla.
+ Rinomine delle classi di servizio: la versione 2 utilizza un nome diverso per più servizi:
  +  `AWS::SimpleWorkflow`è diventato `Aws::SWF` 
  +  `AWS::ELB`è diventato `Aws::ElasticLoadBalancing` 
  +  `AWS::SimpleEmailService`è diventato `Aws::SES` 
+ Opzioni di configurazione del client: alcune delle opzioni di configurazione della versione 1 vengono rinominate nella versione 2. Altre vengono rimosse o sostituite. Ecco le principali modifiche:
  +  `:use_ssl` è stato rimosso. La versione 2 utilizza SSL ovunque. Per disabilitare SSL è necessario configurare e utilizzare`:endpoint`. `http://`
  +  `:ssl_ca_file`è adesso `:ssl_ca_bundle` 
  +  `:ssl_ca_path`è adesso `:ssl_ca_directory` 
  + Aggiunto `:ssl_ca_store`.
  +  `:endpoint`ora deve essere un URI HTTP o HTTPS completo anziché un nome host.
  + `:*_port`Opzioni rimosse per ogni servizio, ora sostituite da`:endpoint`.
  +  `:user_agent_prefix`è ora `:user_agent_suffix` 

## differenze di risorse
<a name="resource-differences"></a>

Non ci sono differenze tra le interfacce delle risorse nella versione 2 e nella versione 3.

Esistono differenze significative tra le interfacce delle risorse nella versione 1 e nella versione 2. La versione 1 è stata interamente codificata a mano, mentre la versione 2 le interfacce di risorse sono generate da un modello. Le interfacce di risorse della versione 2 sono notevolmente più coerenti. Alcune delle differenze sistemiche includono:
+ Classe di risorse separata: nella versione 2, il nome del servizio è un modulo, non una classe. In questo modulo, è l'interfaccia delle risorse:

  ```
  # version 1
  s3 = AWS::S3.new
  
  # version 2
  s3 = Aws::S3::Resource.new
  ```
+ Risorse di riferimento: l'SDK versione 2 separa le raccolte e i singoli getter di risorse in due metodi diversi:

  ```
  # version 1
  s3.buckets['bucket-name'].objects['key'].delete
  
  # version 2
  s3.bucket('bucket-name').object('key').delete
  ```
+ Operazioni in batch: nella versione 1, tutte le operazioni in batch erano utilità codificate a mano. Nella versione 2, molte operazioni batch sono operazioni di batch generate automaticamente tramite l'API. **Le interfacce di batch della versione 2 sono molto diverse dalla versione 1.** 