Menggunakan pelayan di AWS SDK for Ruby - AWS SDK for Ruby

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

Menggunakan pelayan di AWS SDK for Ruby

Pelayan adalah metode utilitas yang polling untuk keadaan tertentu terjadi pada klien. Pelayan dapat gagal setelah sejumlah upaya pada interval pemungutan suara yang ditentukan untuk klien layanan. Untuk contoh bagaimana pelayan digunakan, lihat metode create_table dari Klien Enkripsi Amazon DynamoDB di Repositori Contoh Kode. AWS

Meminta pelayan

Untuk memanggil pelayan, hubungi klien wait_until layanan. Dalam contoh berikut, seorang pelayan menunggu sampai instance i-12345678 berjalan sebelum melanjutkan.

ec2 = Aws::EC2::Client.new begin ec2.wait_until(:instance_running, instance_ids:['i-12345678']) puts "instance running" rescue Aws::Waiters::Errors::WaiterFailed => error puts "failed waiting for instance running: #{error.message}" end

Parameter pertama adalah nama pelayan, yang khusus untuk klien layanan dan menunjukkan operasi mana yang sedang ditunggu. Parameter kedua adalah hash parameter yang diteruskan ke metode klien yang disebut oleh pelayan, yang bervariasi sesuai dengan nama pelayan.

Untuk daftar operasi yang dapat ditunggu dan metode klien dipanggil untuk setiap operasi, lihat dokumentasi waiter_names dan wait_until bidang untuk klien yang Anda gunakan.

Tunggu kegagalan

Pelayan bisa gagal dengan salah satu pengecualian berikut.

Aws: :Pelayan: :Kesalahan:: FailureStateError

Keadaan gagal ditemui saat menunggu.

Aws: :Pelayan: :Kesalahan:: NoSuchWaiterError

Nama pelayan yang ditentukan tidak ditentukan untuk klien yang digunakan.

Aws: :Pelayan: :Kesalahan:: TooManyAttemptsError

Jumlah upaya melebihi nilai pelayan. max_attempts

Aws: :Pelayan: :Kesalahan:: UnexpectedError

Terjadi kesalahan tak terduga saat menunggu.

Aws: :Pelayan: :Kesalahan:: WaiterFailed

Salah satu status menunggu terlampaui atau kegagalan lain terjadi saat menunggu.

Semua kesalahan ini — kecuali NoSuchWaiterError — didasarkan pada. WaiterFailed Untuk menangkap kesalahan dalam pelayan, gunakanWaiterFailed, seperti yang ditunjukkan pada contoh berikut.

rescue Aws::Waiters::Errors::WaiterFailed => error puts "failed waiting for instance running: #{error.message}" end

Mengkonfigurasi pelayan

Setiap pelayan memiliki interval polling default dan jumlah maksimum upaya yang akan dilakukan sebelum mengembalikan kontrol ke program Anda. Untuk mengatur nilai-nilai ini, gunakan delay: parameter max_attempts dan dalam wait_until panggilan Anda. Contoh berikut menunggu hingga 25 detik, polling setiap lima detik.

# Poll for ~25 seconds client.wait_until(...) do |w| w.max_attempts = 5 w.delay = 5 end

Untuk menonaktifkan kegagalan tunggu, atur nilai salah satu parameter ini kenil.

Memperpanjang pelayan

Untuk mengubah perilaku pelayan, Anda dapat mendaftarkan callback yang dipicu sebelum setiap upaya polling dan sebelum menunggu.

Contoh berikut mengimplementasikan backoff eksponensial dalam pelayan dengan menggandakan jumlah waktu untuk menunggu pada setiap upaya.

ec2 = Aws::EC2::Client.new ec2.wait_until(:instance_running, instance_ids:['i-12345678']) do |w| w.interval = 0 # disable normal sleep w.before_wait do |n, resp| sleep(n ** 2) end end

Contoh berikut menonaktifkan jumlah upaya maksimum, dan sebagai gantinya menunggu selama satu jam (3600 detik) sebelum gagal.

started_at = Time.now client.wait_until(...) do |w| # Disable max attempts w.max_attempts = nil # Poll for one hour, instead of a number of attempts w.before_wait do |attempts, response| throw :failure if Time.now - started_at > 3600 end end