

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Migrasi dari AWS SDK for Ruby versi 1 atau 2 ke SDK AWS for Ruby versi 3
<a name="migrating-to-v3"></a>

Topik ini mencakup detail untuk membantu Anda bermigrasi dari AWS SDK for Ruby versi 1 atau 2 ke versi 3.

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

Tidak perlu mengganti versi 1 atau 2 AWS SDK for Ruby dengan versi 3. Anda dapat menggunakannya bersama-sama dalam aplikasi yang sama. Lihat [posting blog ini](http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2) untuk informasi lebih lanjut.

Contoh cepat berikut.

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

Anda tidak perlu menulis ulang kode versi 1 atau 2 yang ada untuk mulai menggunakan SDK versi 3. Strategi migrasi yang valid adalah dengan hanya menulis kode baru terhadap SDK versi 3.

## Perbedaan umum
<a name="general-differences"></a>

Versi 3 berbeda dari versi 2 dalam satu cara penting.
+ Setiap layanan tersedia sebagai permata terpisah.

Versi 2 berbeda dari versi 1 dalam beberapa hal penting.
+ Namespace root yang berbeda — `Aws` versus. `AWS` Ini memungkinkan side-by-side penggunaan.
+  `Aws.config`— Sekarang hash vanilla Ruby, bukan metode.
+ Opsi konstruktor yang ketat - Saat membangun objek klien atau sumber daya di SDK versi 1, opsi konstruktor yang tidak diketahui diabaikan. Di versi 2, opsi konstruktor yang tidak diketahui memicu file`ArgumentError`. Contoh:

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

## Perbedaan klien
<a name="client-differences"></a>

Tidak ada perbedaan antara kelas klien di versi 2 dan versi 3.

Antara versi 1 dan versi 2, kelas klien memiliki perbedaan eksternal paling sedikit. Banyak klien layanan akan memiliki antarmuka yang kompatibel setelah konstruksi klien. Beberapa perbedaan penting:
+  `Aws::S3::Client`- Kelas klien Amazon S3 versi 1 dikodekan dengan tangan. Versi 2 dihasilkan dari model layanan. Nama metode dan input sangat berbeda di versi 2.
+  `Aws::EC2::Client`- Versi 2 menggunakan nama jamak untuk daftar output, versi 1 menggunakan akhiran`_set`. Contoh:

  ```
  # 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`— Versi 2 menggunakan respons terstruktur, di mana versi 1 menggunakan hash vanilla Ruby.
+ Ganti nama kelas layanan - Versi 2 menggunakan nama yang berbeda untuk beberapa layanan:
  +  `AWS::SimpleWorkflow`telah menjadi `Aws::SWF` 
  +  `AWS::ELB`telah menjadi `Aws::ElasticLoadBalancing` 
  +  `AWS::SimpleEmailService`telah menjadi `Aws::SES` 
+ Opsi konfigurasi klien - Beberapa opsi konfigurasi versi 1 diganti namanya dalam versi 2. Lainnya dihapus atau diganti. Berikut adalah perubahan utama:
  +  `:use_ssl`telah dihapus. Versi 2 menggunakan SSL di mana-mana. Untuk menonaktifkan SSL Anda harus mengkonfigurasi `:endpoint` yang menggunakan`http://`.
  +  `:ssl_ca_file`sekarang `:ssl_ca_bundle` 
  +  `:ssl_ca_path`sekarang `:ssl_ca_directory` 
  + Ditambahkan `:ssl_ca_store`.
  +  `:endpoint`sekarang harus menjadi HTTP atau HTTPS URI yang sepenuhnya memenuhi syarat alih-alih nama host.
  + `:*_port`Opsi yang dihapus untuk setiap layanan, sekarang diganti dengan`:endpoint`.
  +  `:user_agent_prefix`sekarang `:user_agent_suffix` 

## Perbedaan sumber daya
<a name="resource-differences"></a>

Tidak ada perbedaan antara antarmuka sumber daya di versi 2 dan versi 3.

Ada perbedaan yang signifikan antara antarmuka sumber daya di versi 1 dan versi 2. Versi 1 sepenuhnya dikodekan dengan tangan, di mana antarmuka sumber daya versi 2 dihasilkan dari model. Antarmuka sumber daya versi 2 secara signifikan lebih konsisten. Beberapa perbedaan sistemik meliputi:
+ Kelas sumber daya terpisah - Dalam versi 2, nama layanan adalah modul, bukan kelas. Dalam modul ini, ini adalah antarmuka sumber daya:

  ```
  # version 1
  s3 = AWS::S3.new
  
  # version 2
  s3 = Aws::S3::Resource.new
  ```
+ Referensi sumber daya — SDK versi 2 memisahkan koleksi dan pengambil sumber daya individu menjadi dua metode berbeda:

  ```
  # version 1
  s3.buckets['bucket-name'].objects['key'].delete
  
  # version 2
  s3.bucket('bucket-name').object('key').delete
  ```
+ Operasi Batch — Dalam versi 1, semua operasi batch adalah utilitas hand-coded. Di versi 2, banyak operasi batch adalah operasi batching yang dibuat secara otomatis melalui API. **Antarmuka batching versi 2 sangat berbeda dari versi 1.** 