

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Kellner im AWS SDK for Ruby verwenden
<a name="using-waiters"></a>

Waiter sind Hilfsprogrammmethoden, die einen bestimmten Status auf einem Client abfragen. Waiter-Objekte können fehlschlagen, nachdem eine Anzahl von Versuchen in einem für den Service-Client definierten Abrufintervall fehlgeschlagen ist. Ein Beispiel dafür, wie ein Kellner verwendet wird, finden Sie in der Methode [create\_table](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/ruby/example_code/dynamodb/scaffold.rb#L63) des Amazon DynamoDB Encryption Client im Code Examples Repository. AWS 

## Einen Kellner anrufen
<a name="aws-ruby-sdk-waiter-invoking"></a>

Rufen Sie zum Aufrufen eines Waiter-Objekts `wait_until` auf einem Service-Client auf. Im folgenden Beispiel wartet ein Waiter-Objekt, bis die Instance `i-12345678` ausgeführt wird, bevor der Vorgang fortgesetzt wird.

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

Der erste Parameter ist der Waiter-Name, der für den Service-Client spezifisch ist und die Operation angibt, auf die gewartet wird. Der zweite Parameter ist ein Hash von Parametern, die an die durch das Waiter-Objekt – welches gemäß dem Waiter-Namen variiert – aufgerufene Client-Methode übergeben werden.

Eine Liste der Operationen, auf die gewartet werden kann, und die jeweils aufgerufenen Client-Methoden finden Sie in der Dokumentation zu den `waiter_names`- und `wait_until`-Feldern für den von Ihnen verwendeten Client.

## Fehlschläge warten
<a name="aws-ruby-sdk-wait-failures"></a>

Waiter-Objekte können mit den folgenden Ausnahmen fehlschlagen.

** [Aws: :Waiters: :Fehler: FailureStateError](https://docs.aws.amazon.com/sdk-for-ruby/v3/api//Aws/Waiters/Errors/FailureStateError.html) **  
Während des Wartens ist ein Fehlerstatus aufgetreten.

** [Aws: :Waiters: :Fehler: NoSuchWaiterError](https://docs.aws.amazon.com/sdk-for-ruby/v3/api//Aws/Waiters/Errors/NoSuchWaiterError.html) **  
Der angegebene Waiter-Name wurde für den verwendeten Client nicht definiert.

** [Aws: :Waiters: :Fehler: TooManyAttemptsError](https://docs.aws.amazon.com/sdk-for-ruby/v3/api//Aws/Waiters/Errors/TooManyAttemptsError.html) **  
Die Anzahl der Versuche hat den `max_attempts`-Wert des Waiter-Objekts überschritten.

** [Aws: :Waiters: :Fehler: UnexpectedError](https://docs.aws.amazon.com/sdk-for-ruby/v3/api//Aws/Waiters/Errors/UnexpectedError.html) **  
Während des Wartens ist ein unerwarteter Fehler aufgetreten.

** [Aws: :Waiters: :Fehler: WaiterFailed](https://docs.aws.amazon.com/sdk-for-ruby/v3/api//Aws/Waiters/Errors/WaiterFailed.html) **  
Während des Wartens wurde einer der Wartestatus überschritten oder es ist ein anderer Fehler aufgetreten.

Alle diese Fehler — außer — basieren `NoSuchWaiterError` auf. `WaiterFailed` Zum Abfangen von Fehlern in einem Waiter-Objekt verwenden Sie `WaiterFailed`, wie im folgenden Beispiel gezeigt.

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

## Einen Kellner konfigurieren
<a name="aws-ruby-sdk-configuring-waiters"></a>

Jedes Waiter-Objekt verfügt über ein Standard-Abrufintervall und eine maximale Anzahl von ausgeführten Versuchen, bevor die Steuerung an Ihr Programm zurückgegeben wird. Diese Werte legen Sie über die `max_attempts`- und `delay:`-Parameter in Ihrem `wait_until`-Aufruf fest. Der folgende Beispielcode wartet bis zu 25 Sekunden und fragt alle 5 Sekunden ab.

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

Zum Deaktivieren von Wartefehlern setzen Sie den Wert von einem der dieser beiden Parameter auf `nil`.

## Einen Kellner verlängern
<a name="aws-ruby-sdk-extending-waiters"></a>

Wenn Sie das Verhalten von Waiter-Objekten ändern möchten, können Sie Callbacks registrieren, die vor jedem Abfrageversuch und vor dem Wartevorgang ausgelöst werden.

Das folgende Beispiel implementiert ein exponentielles Backoff in einem Waiter-Objekt durch die Verdopplung der Wartedauer bei jedem Versuch.

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

Im folgenden Beispiel wird die maximale Anzahl der Versuche deaktiviert. Stattdessen wird für 1 Stunde (3 600 Sekunden) gewartet, bevor der Vorgang fehlschlägt.

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