Wissenstest - Programmatische Grundlagen
Ein Skript eines Entwicklers erstellt einen Server mit einem POST zu /cloudapi/v6/datacenters/{dcId}/servers und gibt dann sofort einen zweiten Aufruf, um ein Volume an diesen Server anzuhängen. Der Aufruf von Volume schlägt intermittierend mit einem 404 fehl. Was ist die korrekte Lösung?
Die IONOS-Bereitstellung ist asynchron: Ein POST gibt 202 Accepted mit der Ressource im Zustand BUSY zurück, und ein 404 direkt nach der Erstellung bedeutet "noch nicht bereit", nicht "fehlend". Sie müssen den Anfragestatus-URL aus dem Location-Header überwachen, bis DONE ist, bevor Sie einen abhängigen Aufruf tätigen. Enge Wiederholungen verschwenden den Rate-Limit-Haushalt, ohne die Ursache anzugehen, und depth steuert nur die Größe der Antwortnutzlast.
Ein geplanter Job, der bei jedem Lauf ein neues Bearer-Token generiert, fällt nach mehreren Wochen mit Authentifizierungsfehlern aus, und das Token Manager zeigt Dutzende von Token an. Was ist die zugrunde liegende Grenze und das korrekte Muster?
Ein Benutzer kann bis zu 100 Authentifizierungstoken generieren, so dass ein Skript, das bei jedem Lauf ein neues Token prägt, schließlich die Quote erschöpft. Das korrekte Muster besteht darin, ein Token mit begrenztem Umfang und kurzer Lebensdauer pro Dienst oder Umgebung auszustellen, es bei der Erstellung zu erfassen (der Wert wird nur einmal angezeigt) und es erneut zu verwenden, bis es abläuft, und dann zu rotieren. Ein einzelnes gemeinsam genutztes langlebiges Token verletzt das Prinzip der geringsten Privilegien, und die Lebensdauer der Token wird aus einer festen Menge im Bereich von 1 Stunde bis 365 Tagen ausgewählt, nicht aus einer festen Stunde von 1 Stunde.
Ein Entwickler listet Ressourcen mit GET /cloudapi/v6/datacenters auf und verarbeitet die zurückgegebenen Elemente, entdeckt aber später, dass einige Ressourcen vom Skript nie gesehen wurden. Die Sammlung hat mehr als 1000 Einträge. Was ist passiert und wie sollte es gehandhabt werden?
Listendpunkte geben paginierte Sammlungen mit einer Standard-limit von 1000 und einer Standard-offset von 0 zurück, sodass ein einzelner Aufruf nur die erste Seite sieht. Die Lösung besteht darin, zu iterieren und offset um die Seitengröße zu erhöhen, bis eine Seite weniger als limit Elemente zurückgibt. Der depth-Parameter steuert, wie viel des verschachtelten Ressourcenbaums pro Element eingebettet wird, und nicht, wie viele Elemente zurückgegeben werden, und 429 ist die Rate-Limit-Antwort, die nicht mit der Paginierung zusammenhängt.
Ein Entwickler fügt einen IONOS Object Storage-Bucket als Terraform-Remote-State-Backend hinzu, aber terraform init schlägt mit Fehlern über den Security Token Service und einer fehlenden Kontonummer fehl. Welche Änderung behebt das Backend-Problem?
Das S3-Backend geht davon aus, dass AWS verwendet wird, und versucht AWS-spezifische Aufrufe (STS, Kontonummer-Suche), die IONOS Object Storage nicht implementiert, sodass die skip_*-Flags sowie ein expliziter IONOS-Endpunkt (z. B. https://s3.eu-central-1.ionoscloud.com) erforderlich sind. IONOS Object Storage ist mit S3 kompatibel und funktioniert als Backend einwandfrei, authentifiziert sich jedoch mit einem Zugriffsschlüssel und einem Geheimnis-Schlüssel, nicht mit einem Bearer-Token. IONOS bietet keine DynamoDB-Sperrtabelle, daher ist das Hinzufügen einer solchen keine Option.
Ein Entwickler möchte einen Server, der zuvor mit einem curl-Skript erstellt wurde, unter Terraform-Verwaltung bringen, ohne ihn neu zu erstellen. Welcher Ansatz ist korrekt?
IONOS-Importe verwenden eine zusammengesetzte ID, die die Rechenzentrum-ID und die Ressourcen-ID (dc_id/server_id) verbindet, und der Arbeitsablauf besteht darin, einen passenden ionoscloud_server-Block zu schreiben, zu importieren und dann die HCL anzupassen, bis terraform plan keine Änderungen mehr meldet. Terraform übernimmt keine vorhandenen Ressourcen auf apply automatisch, und terraform refresh aktualisiert nur den Zustand für bereits verwaltete Ressourcen. Das Löschen und Neu-Erstellen widerspricht dem Ziel, den vorhandenen Server zu erhalten.