Fehler

Referenz zum Fehlerformat der REST-API, zu ihren Status- und Fehlercodes, zur Ratenbegrenzung und zu Fehlern, die Sie gefahrlos wiederholen können.

Wenn eine Anfrage fehlschlägt, gibt die API einen HTTP-Fehlerstatus und einen JSON-Body zurück, der den Fehler beschreibt. Diese Referenz führt das Format, die Codes und ihre Behandlung auf.

Fehlerformat

Ein Validierungsfehler
{
  "code": "VALIDATION_FAILED",
  "message": "2 fields failed validation: name, sizeGb",
  "field": "name",
  "details": {
    "errors": [
      { "field": "name", "code": "string_too_short", "message": "String should have at least 1 character" },
      { "field": "sizeGb", "code": "missing", "message": "Field required" }
    ]
  }
}
FeldVorhandenBedeutung
codeImmerEin maschinenlesbarer Fehlercode aus den Tabellen unten. Verzweigen Sie anhand dieses Felds.
messageImmerEine Beschreibung auf Englisch für Menschen. Werten Sie sie nicht maschinell aus; verwenden Sie in Ihrem Programm code.
fieldWenn sich der Fehler auf ein einzelnes Feld der Anfrage beziehtDer Name dieses Felds, z. B. name oder Idempotency-Key.
detailsWenn es weiteren Kontext gibtStrukturierte Daten, die vom Code abhängen, z. B. die Liste der Ressourcen, die ein Löschen blockieren.
retryableNur wenn sein Wert true istDas erneute Senden der identischen Anfrage kann erfolgreich sein. Wenn das Feld fehlt, ist es false.

Die API verwendet 400 Bad Request nicht: Eine Anfrage, die nicht dem Schema des Vorgangs entspricht, gibt 422 Unprocessable Entity zurück.

Statuscodes und Fehlercodes

StatusCodeBedeutungVorgehen
400IDEMPOTENCY_KEY_REQUIREDEine Anfrage mit POST, die eine Ressource erstellt und mit einem API-Token oder einem Dienstkontoschlüssel gesendet wird, hat keinen Header Idempotency-Key.Senden Sie den Header mit einer neuen UUID und bei einer Wiederholung mit derselben UUID. Siehe Idempotente Anfragen.
401UNAUTHENTICATEDDie Anmeldedaten fehlen, sind falsch, abgelaufen oder widerrufen.Prüfen Sie den Header Authorization. Siehe Mit API-Tokens authentifizieren.
403FORBIDDENSie dürfen das nicht tun. details.reason gibt, sofern vorhanden, den Grund an.Siehe Problembehandlung.
403MFA_STEP_UP_REQUIREDDer Vorgang erfordert eine aktuelle Zwei-Faktor-Bestätigung in Ihrer Konsolensitzung.Bestätigen Sie in der Konsole mit Ihrer Authenticator-App, und versuchen Sie es erneut.
403MFA_SETUP_REQUIREDDer Vorgang erfordert Zwei-Faktor-Authentifizierung, und Ihr Konto hat keine eingerichtet.Richten Sie die Zwei-Faktor-Authentifizierung ein.
403INTERACTIVE_SESSION_REQUIREDDer Vorgang kann nicht mit einem API-Token oder einem Dienstkontoschlüssel ausgeführt werden.Führen Sie ihn in der Konsole aus.
404NOT_FOUNDDie Ressource existiert nicht, oder Sie haben keinen Zugriff darauf. Die API unterscheidet diese beiden Fälle nicht.Prüfen Sie die ID und das Projekt.
405METHOD_NOT_ALLOWEDDer Pfad existiert, aber nicht mit dieser Methode.Prüfen Sie die Methode in der API-Referenz.
409CONFLICTDie Anfrage steht im Konflikt mit dem aktuellen Status, z. B. ein bereits vergebener Name oder eine bereits laufende Aktion.Lesen Sie die Ressource, und lösen Sie den Konflikt. Wenn retryable true ist, versuchen Sie es später erneut.
409QUOTA_EXCEEDEDDie Anfrage würde ein Kontingent Ihres Abonnements oder ein Produktlimit überschreiten, z. B. die Anzahl der Schlüssel eines Dienstkontos. Bei einem Kontingent des Abonnements nennt die Meldung die Ressource, ihr Limit und ihre Nutzung sowie die Kontingent-ID.Geben Sie Ressourcen frei. Bei einem Kontingent des Abonnements können Sie auch eine Erhöhung beantragen. Siehe Kontingente.
409CAPACITY_UNAVAILABLEDie Region kann die Anfrage derzeit nicht platzieren.Versuchen Sie es später erneut, oder wählen Sie eine andere Größe. Dieser Fehler ist wiederholbar.
409DEPENDENCY_BLOCKEDAndere Ressourcen hängen von dieser ab. details listet sie auf, z. B. die Instanz, an die ein Volume angehängt ist.Entfernen Sie zuerst die Abhängigkeiten.
409LOCKEDDie Ressource kann nicht geändert werden, z. B. eine integrierte Rolle.Nichts; die Ressource bleibt, wie sie ist.
409DELETION_PROTECTEDDer Löschschutz ist aktiviert.Deaktivieren Sie den Löschschutz, und löschen Sie erneut.
409ROOT_VOLUME_WOULD_BE_DELETED, ATTACHED_VOLUME_WOULD_BE_DELETEDDas Löschen der Instanz würde auch ein Volume löschen, das erhalten bleiben muss, daher hat die Plattform das Löschen abgelehnt.Siehe Probleme mit virtuellen Maschinen beheben.
412PRECONDITION_FAILEDDer Wert von If-Match stimmt nicht mit der aktuellen Version der Ressource überein, oder ein erforderlicher Header If-Match fehlt.Lesen Sie die Ressource erneut, und wiederholen Sie die Änderung mit ihrem neuen ETag.
422VALIDATION_FAILEDDie Anfrage ist nicht gültig. field und details.errors nennen die Probleme.Korrigieren Sie die Anfrage. Siehe Validierungsfehler.
429RATE_LIMITEDSie haben zu viele Anfragen gesendet.Warten Sie die Anzahl der Sekunden im Header Retry-After ab. Siehe Ratenbegrenzung.
500INTERNALEin unerwarteter Fehler ist aufgetreten.Versuchen Sie es später erneut. Wenn der Fehler bestehen bleibt, melden Sie ihn mit der X-Request-Id.
502PROVIDER_ERRORDie Cloud hat die Arbeit angenommen, und sie ist dort fehlgeschlagen, z. B. bei einem Abbild, das nicht booten kann. Der Fehler ist nicht als wiederholbar gekennzeichnet.Lesen Sie die Meldung, und ändern Sie die Anfrage.
502INTERNAL mit "retryable": trueDas API-Gateway konnte einen Dienst nicht erreichen.Wiederholen Sie die Anfrage mit Backoff.
503PROVIDER_UNAVAILABLEEin Clouddienst ist vorübergehend nicht erreichbar.Wiederholen Sie die Anfrage mit Backoff. Dieser Fehler ist wiederholbar.

Einige Anfragen geben auch 404 Not Found für eine Funktion zurück, die die Region nicht anbietet, z. B. wenn Sie Verschlüsselung im Ruhezustand anfordern, wo die Region sie nicht bereitstellen kann. Die Meldung nennt die Funktion und die Region. Eine Wiederholung kann diese Antwort nicht ändern.

Importierte Projekte

Diese Codes treten nur bei Projekten auf, die der Plattformbetreiber mit ihren vorhandenen Ressourcen für Sie importiert hat:

StatusCodeBedeutung
409IMPORTED_PROJECT_ACK_REQUIREDDas Löschen des Projekts löscht die Ressourcen, die mit dem Import übernommen wurden. Die Anfrage muss acknowledgeImportedProjectDestruction auf true setzen, um das zu bestätigen.
403IMPORTED_PROJECT_PROTECTEDFür einen Zeitraum nach dem Import können Sie das Projekt nicht löschen. details.protectedUntil gibt an, bis wann.
409IMPORTED_PROJECT_IMPORT_INCOMPLETEDer Import ist nicht abgeschlossen, daher kann das Projekt nicht gelöscht werden.
409IMPORTED_PROJECT_RELEASE_IN_PROGRESSDer Betreiber gibt das Projekt frei, oder eine Freigabe ist fehlgeschlagen.
409IMPORTED_BACKUP_PLAN_READ_ONLYDer Backup-Plan enthält die Backups, die mit dem Import übernommen wurden. Sie können ihn lesen und daraus wiederherstellen, aber nicht ändern.

Validierungsfehler

Eine Antwort 422 Unprocessable Entity für eine ungültige Anfrage listet alle Probleme auf einmal in details.errors auf. Jeder Eintrag hat:

  • field: den Pfad des Felds in der Anfrage, mit Punkten zwischen den Ebenen, oder null, wenn das Problem den Body als Ganzes betrifft.
  • code: die Art des Problems, z. B. missing oder string_too_short.
  • message: eine Beschreibung auf Englisch.

Das field der obersten Ebene beschreibt den ersten Eintrag, und message nennt jedes Feld. Korrigieren Sie alle aufgeführten Felder, bevor Sie die Anfrage erneut senden.

Ratenbegrenzung

Das API-Gateway begrenzt, wie schnell Anfragen mit einzelnen Anmeldedaten gesendet werden können. Jedes API-Token, jeder Dienstkontoschlüssel und jede Konsolensitzung hat ein eigenes Limit, und Anfragen ohne Anmeldedaten werden nach Quell-IP-Adresse begrenzt. Das Limit erlaubt kurze Spitzen über der dauerhaften Rate.

Für ein API-Token oder einen Dienstkontoschlüssel gilt das Limit pro Anmeldedaten und zusätzlich pro Mandant, über alle Anmeldedaten des Mandanten zusammen. Jede Antwort auf eine solche Anfrage enthält diese Header:

HeaderWert
X-RateLimit-LimitDie Anzahl der Anfragen, die das aktuelle Zeitfenster erlaubt.
X-RateLimit-RemainingDie Anzahl der Anfragen, die im aktuellen Zeitfenster übrig sind.
X-RateLimit-ResetDie Anzahl der Sekunden, bis das Zeitfenster zurückgesetzt wird, mindestens 1.

Wenn Sie das Limit überschreiten, antwortet das Gateway mit 429 Too Many Requests, dem Code RATE_LIMITED, "retryable": true und einem Header Retry-After mit der Anzahl der zu wartenden Sekunden, mindestens 1. Warten Sie mindestens so lange, bevor Sie die nächste Anfrage senden.

Dieses Limit gilt für Anfragen an die REST-API. Die Limits von Anwendungs-Credentials finden Sie unter Limits der OpenStack-API.

Fehler in asynchronen Vorgängen

Wenn die Arbeit einer Anfrage mit 202 Accepted fehlschlägt, wird der state des Vorgangs zu FAILED, und sein Feld error enthält einen Fehler im obigen Format. Ein erfolgreicher Vorgang kann eine warning im selben Format enthalten, wenn etwas, das Sie angefordert haben, nicht geliefert werden konnte. Siehe Synchrone und asynchrone Anfragen.

Antworten aus dem Netzwerk vor der API

Während die Plattform aktualisiert wird, kann ein Proxy vor der API mit 500, 502, 503 oder 504 und einem Body antworten, der nicht dem obigen Fehlerformat entspricht, z. B. mit reinem Text. Eine solche Antwort bedeutet, dass Ihre Anfrage die API nicht erreicht hat. Wiederholen Sie sie mit Backoff und demselben Idempotency-Key.

Anfragen nach Fehlern wiederholen

  • Wiederholen Sie die Anfrage, wenn die Antwort "retryable": true enthält, und nach einer Antwort 500, 502, 503 oder 504, die nicht im Fehlerformat vorliegt. Senden Sie denselben Idempotency-Key erneut. Siehe Idempotente Anfragen.
  • Warten Sie vor jeder Wiederholung länger, z. B. 1, 2, 4 und dann 8 Sekunden. Warten Sie nach einer Antwort 429 mindestens die Zeit aus Retry-After.
  • Wiederholen Sie andere 4xx-Fehler nicht unverändert. Korrigieren Sie zuerst die Anfrage, die Anmeldedaten oder den Status der Ressource.

Auf dieser Seite