Wenn Sie eine API-Anfrage an Deployment Manager senden, sendet Deployment Manager entsprechende Anfragen an andere Google Cloud APIs. Wenn Sie beispielsweise eine Bereitstellung erstellen, die eine Compute Engine-Instanz enthält, sendet Deployment Manager eine instances.insert
-Anfrage an die Compute Engine API.
Wenn Sie Bereitstellungen erstellen, aktualisieren oder löschen oder andere API-Methoden verwenden, die mehrere Minuten oder länger dauern, geben API-Anfragen an Deployment Manager Vorgänge mit langer Ausführungszeit zurück.
Auf dieser Seite werden die Richtlinien für die Verwaltung von Vorgängen mit langer Ausführungszeit mit der Deployment Manager API beschrieben.
Hinweise
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
- Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.
Methoden, die möglicherweise lang andauernde Vorgänge starten, sind:
insert
-Vorgänge wiedeployments.insert()
,typeProviders.insert()
usw.update
-Vorgänge wiedeployments.update()
delete
-Vorgänge wiedeployments.delete()
Bei diesen Anfragen ist die Antwort eine Vorgangsressource, die in etwa so aussieht:
{
"kind": "deploymentmanager#operation",
"id": "7123423453456654321", # generated ID
"name": "operation-11233234311678-587af2c0xyz9c-0987fa54-baccd59f", # generated name
"operationType": "insert",
"targetLink": "https://www.googleapis.com/deploymentmanager/v2/projects/example-project/global/deployments/wordpress-1",
"targetId": "5123321654456321123",
"status": "DONE", # possible values: RUNNING, PENDING, DONE
"user": "example@example.com",
"progress": 100,
"insertTime": "2019-04-29T11:08:32.190-07:00",
"startTime": "2019-04-29T11:08:32.200-07:00",
"endTime": "2019-04-29T11:09:38.176-07:00",
"selfLink": "https://www.googleapis.com/deploymentmanager/v2/projects/example-project/global/operations/operation-11233234311678-587af2c0xyz9c-0987fa54-baccd59f"
}
Status eines Vorgangs abrufen
Wenn Sie den Status eines Vorgangs prüfen möchten, senden Sie über das Feld name
des Vorgangs eine operations.get()
-Anfrage und prüfen Sie die status
oder progress
des Vorgangs.
Wenn status
DONE
, progress
100
und das error
-Objekt leer ist, ist die Bereitstellung abgeschlossen und Ihre Ressourcen können verwendet werden.
Wenn während des Vorgangs Fehler auftreten, werden diese im error
-Objekt im folgenden Format aufgeführt:
"error": {
"errors": [
{
"code": "error code" # string,
"location": "location of the error" # string,
"message": "error message" # string
},
...
]
}
Als Best Practice empfehlen wir, den Status des Vorgangs mit einem exponentiellen Backoff abzufragen. Senden Sie die erste Anfrage beispielsweise nach 5 Sekunden, die nächste nach 10 Sekunden, die dritte nach 20 Sekunden usw. Wir empfehlen, eine maximale Wartezeit von einigen Minuten festzulegen. Nachdem Sie die maximale Backoff-Zeit erreicht haben, müssen Sie die Backoff-Zeit nicht mehr verlängern.