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:

Vorbereitung

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

Um Ihre Dienstkonfiguration zu aktualisieren, müssen Sie eine Liste der Quellkonfigurationsdienstdateien an die Service Management API senden. Der Server kompiliert sie in einer validierten Dienstkonfiguration.

Die Quelldateien können die folgenden Formate haben:

Die Service Management API akzeptiert keine .proto-Dateien. Sie müssen Protobuf-Deskriptoren aus Ihren .proto-Dateien generieren, bevor Sie sie senden. Sie können die Deskriptordateien mit dem folgenden Befehl generieren:

$ protoc hello.proto --include_source_info --include_imports --descriptor_set_out=service.descriptors *.proto

Wir empfehlen die Verwendung des Cloud SDK-Befehlszeilentools, um Quelldateien für die Dienstkonfiguration zu senden.

$ gcloud auth loging
$ 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. Wenn Sie beispielsweise diese OpenAPI-Definition (hello.json) haben:

{
  "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 den Versionsverlauf der übermittelten 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",
  ...
}