Blog
So finden Sie die Abhängigkeiten von Google Cloud Platform-Diensten

Bevor ich einen bestimmten Dienst nutzen kann, muss ich die API in meinem Google-Projekt aktivieren. Wenn ich dies tue, werden manchmal mehr Dienste aktiviert als der, den ich angegeben habe. In diesem Blog zeige ich Ihnen, wie Sie solche Service-Abhängigkeiten finden können.
Abschreibungshinweis In diesem Blog wurde die Nützlichkeit einer undokumentierten Eigenschaft in der Ausgabe des Befehls gcloud services list dokumentiert. Diese Eigenschaft ist verschwunden, daher sind die Anweisungen hier nicht mehr gültig.
Um dies in der Praxis zu sehen, werde ich den Dienst Cloud Functions aktivieren. Zunächst zeige ich Ihnen, dass durch die Aktivierung von Cloud Functions insgesamt sechs Dienste aktiviert werden. Dann werde ich Ihnen zeigen, wie Sie die Abhängigkeiten auflisten können. Zum Schluss zeige ich Ihnen ein kleines Dienstprogramm und ein Diagramm mit allen Abhängigkeiten, mit denen Sie herumspielen können.
Cloud-Funktionen aktivieren
Ich werde Ihnen also zeigen, dass die Aktivierung von Cloud-Funktionen eigentlich die Aktivierung mehrerer Dienste bedeutet. Zunächst werde ich die aktivierten Dienste in meinem Projekt überprüfen:
gcloud services list
Die Ausgabe sieht ungefähr so aus:
NAME TITLE
bigquery.googleapis.com BigQuery API
...
servicemanagement.googleapis.com Service Management API
serviceusage.googleapis.com Service Usage API
In diesem Fall ist der Dienst Cloud Functions nicht aufgeführt.
Aktivierung des Dienstes
Um Cloud-Funktionen in meinem Projekt zu aktivieren, gebe ich ein:
$ gcloud services enable cloudfunctions
Operation "operations/acf.3170fc7d-dc07-476f-851b-ff0cc2b9d79f" finished successfully.
Wenn ich nun die Liste der aktivierten Dienste erneut überprüfe, hat sich die Anzahl der aktiven Dienste um die folgenden sechs Dienste erhöht!
NAME TITLE
cloudfunctions.googleapis.com Cloud Functions API
logging.googleapis.com Cloud Logging API
pubsub.googleapis.com Cloud Pub/Sub API
source.googleapis.com Legacy Cloud Source Repositories API
storage-api.googleapis.com Google Cloud Storage JSON API
storage-component.googleapis.com Cloud Storage
...
Hätte ich das vorhersehen können, bevor ich es aktiviert habe? Ja, das hätte ich...
Auflistung aller verfügbaren Dienste
Um alle verfügbaren Dienste aufzulisten, verwende ich den folgenden Befehl:
gcloud services list --available --format json
Das Ergebnis ist eine Liste von Objekten mit Metainformationen über den Dienst:
{
"config": {
"name": "cloudfunctions.googleapis.com",
"title": "Cloud Functions API",
"documentation": {},
"features": [],
"monitoredResources": [
"monitoring": {},
"quota": {},
"authentication": {},
"usage": {}
},
"dependencyConfig": {
"dependsOn": [],
"directlyDependsOn": []
"directlyRequiredBy": [],
"requiredBy": []
},
"serviceAccounts": [],
"state": "DISABLED"
}
Ich sehe vier Hauptattribute für jeden Dienst: config, dependencyConfig, serviceAccounts und state. In den Feldern
Auflistung spezifischer Abhängigkeiten
Diese API zur Nutzung von Diensten liefert also alle Abhängigkeiten eines bestimmten Dienstes. Um alle abhängigen Dienste von Cloud Functions aufzulisten, verwende ich den folgenden Befehl:
gcloud services list
--available --format json |
jq --arg service cloudfunctions.googleapis.com
'map(select(.config.name == $service)|
{
name: .config.name,
dependsOn: .dependencyConfig.dependsOn
}
)'
und das Ergebnis ist:
{
"name": "cloudfunctions.googleapis.com",
"dependsOn": [
"cloudfunctions.googleapis.com",
"logging.googleapis.com",
"pubsub.googleapis.com",
"source.googleapis.com",
"storage-api.googleapis.com",
"storage-component.googleapis.com"
]
}
Dies sind genau die sechs Dienste, die zuvor aktiviert wurden o/. Wenn Sie die Abhängigkeiten selbst erkunden möchten, können Sie dieses
Fazit
Dank einiger undokumentierter Eigenschaften der Google Service Usage API kann ich alle Abhängigkeiten zwischen Google Cloud Platform-Diensten finden.
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



