Auf dieser Seite wird beschrieben, wie Sie Dienstkonfigurationen mithilfe von Service Infrastructure verwalten.
Eine Dienstkonfiguration beschreibt verschiedene Aspekte eines verwalteten Dienstes.
Zur Verwaltung von Dienstkonfigurationen werden üblicherweise folgende Methoden der Service Management API verwendet:
services.configs.create
oderservices.configs.submit
zum Senden von Dienstkonfigurationen verwenden.services.configs.list
undservices.configs.get
zum Abrufen von Dienstkonfigurationen verwenden.services.generateConfigReport
zum Abrufen eines Änderungsberichts über die Unterschiede zwischen zwei Dienstkonfigurationen verwenden.
Hinweis
Wenn Sie die Beispiele in diesem Leitfaden verwenden möchten, müssen Sie die Ersteinrichtung abgeschlossen haben. Folgen Sie dazu der Anleitung unter Erste Schritte mit der Service Management API.
Dienstkonfigurationsquelldateien senden
Zum Aktualisieren Ihrer Dienstkonfiguration müssen Sie eine Liste der Dienstkonfigurationsquelldateien an die Service Management API senden. Der Server kompiliert sie dann zu einer validierten Dienstkonfiguration.
Die Quelldateien können die folgenden Formate haben:
- OpenAPI v2
- Protocol Buffers-Deskriptor
google.api.Service
im JSON- oder YAML-Format
Die Service Management API akzeptiert keine .proto
-Dateien. Sie müssen dazu protobuf-Deskriptoren aus Ihren .proto
-Dateien generieren, bevor Sie sie senden.
Mit dem folgenden Befehl können Sie die Deskriptordateien generieren:
$ protoc hello.proto --include_source_info --include_imports --descriptor_set_out=service.descriptors *.proto
Die empfohlene Methode zum Senden von Quelldateien für die Dienstkonfiguration ist die Verwendung von über die gcloud CLI.
$ gcloud auth login
$ gcloud endpoints services deploy [a list of service configuration source files]
Sie können die Service Management API auch direkt aufrufen, um Quelldateien zu senden. Beispiel: Sie haben diese OpenAPI-Definition (hello.json
):
{
"swagger": "2.0",
"info": {
"title": "Hello Endpoints API.",
"description": "Hello Endpoints API.",
"version": "v1"
},
"host": "endpointsapis.appspot.com",
"schemes": ["https"],
"paths": {
"/v1/hello": {
"get": {
"tags": ["endpointsapis"],
"operationId": "GetHello",
"description": "Returns \"Hello\" with given name in the response.",
"parameters": [
{
"name": "name",
"description": "Name to be greeted.",
"in": "query",
"type": "string"
}
],
"responses": {
"default": {
"description": "Successful operation",
"schema": {
"$ref": "#/definitions/GetHelloResponse"
}
}
}
}
}
},
"definitions": {
"GetHelloResponse": {
"description": "Response message for GetHello method.",
"type": "object",
"properties": {
"response": {
"description": "String of \"Hello \" + `name` provided in the request.",
"type": "string"
}
}
}
}
}
Sie können die folgenden API-Aufrufe vornehmen, um die OpenAPI-Spezifikation zu senden:
$ gcurl -d "
{
'serviceName': 'endpointsapis.appspot.com',
'configSource':
{
'files': [
{
'fileContents': '$(base64 hello.json | sed ':a;N;$!ba;s/\n//g')',
'fileType': 'OPEN_API_JSON',
'filePath': 'hello.json',
}
]
}
}" https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/configs:submit
{
"name": "operations/serviceConfigs.endpointsapis.appspot.com:a7651c15-9017-4274-b065-d644cc337847",
"metadata": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
"resourceNames": [
"services/endpointsapis.appspot.com/configs/2016-07-29r10"
],
"startTime": "2016-07-29r10T23:59:21.081Z",
"persisted": true
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.SubmitConfigSourceResponse",
"serviceConfig": {
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API.",
...
}
Berichte für Dienstkonfigurationen generieren
Bevor Sie eine neue Version der Dienstkonfiguration senden, können Sie über die Methode services.generateConfigReport
einen Bericht abrufen, der die Änderungen im Vergleich zu einer vorhandenen Version der Dienstkonfiguration aufzeigt. Sie können in der Anfrage über das Feld old_config
die Version angeben, die verglichen werden soll, oder dieses Feld überspringen, um einen Bericht für die aktuellste Dienstkonfigurationsversion zu generieren.
Wenn die neue OpenAPI-Konfigurationsdatei hello.json
heißt, können Sie den folgenden Befehl ausführen:
$ gcurl -d "
{
'newConfig':
{
'@type': 'type.googleapis.com/google.api.servicemanagement.v1.ConfigSource',
'files': [
{
'fileContents': '$(base64 hello.json | sed ':a;N;$!ba;s/\n//g')',
'fileType': 'OPEN_API_JSON',
'filePath': 'hello.json',
}
],
}
}" https://servicemanagement.googleapis.com/v1/services:generateConfigReport
Einen Bericht zu einer bestimmten Konfigurationsversion generieren Sie so:
# Generate config report for the local configration from `/tmp/hello.json`
# and the configration version `2016-07-29r10`.
$ gcurl -d "
{
'newConfig':
{
'@type': 'type.googleapis.com/google.api.servicemanagement.v1.ConfigSource',
'files': [
{
'fileContents': '$(base64 hello.json | sed ':a;N;$!ba;s/\n//g')',
'fileType': 'OPEN_API_JSON',
'filePath': 'hello.json',
}
],
},
'oldConfig':
{
'@type': 'type.googleapis.com/google.api.servicemanagement.v1.ConfigRef',
'name': 'services/endpointsapis.appspot.com/configs/2016-07-29r10'
}
}" https://servicemanagement.googleapis.com/v1/services:generateConfigReport
Vorherige Versionen von Dienstkonfigurationen abrufen
Die Service Management API speichert einen Versionsverlauf der gesendeten Dienstkonfigurationen. Mithilfe der Methoden services.configs.list
oder services.configs.get
können Sie diese auflisten oder eine bestimmte Version abrufen, wie in den folgenden Befehlen dargestellt:
# List the service configuration history for a managed service.
$ gcurl https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/configs
{
"serviceConfigs": [
{
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API",
"id": "2016-07-16r1",
...
},
{
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API",
"id": "2016-07-16r0",
...
}
]
}
# Get a specific version of the service configuration for a managed service.
$ gcurl https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/configs/2016-07-16r0
{
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API",
"id": "2016-07-16r0",
...
}