Dienstkonfigurationen verwalten

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:

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:

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 Dienstkonfigurationsquelldateien ist die Verwendung der 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",
  ...
}