서비스 구성 관리

이 페이지에서는 Service Infrastructure를 사용하여 서비스 구성을 관리하는 방법을 설명합니다.

서비스 구성관리형 서비스의 다양한 측면을 지정합니다.

서비스 구성을 관리하는 데 사용되는 Service Management API 메소드는 일반적으로 다음과 같습니다.

시작하기 전에

이 가이드의 예를 실행하려면 먼저 Service Management API 시작하기의 안내를 따라 초기 설정을 완료해야 합니다.

서비스 구성 소스 파일 제출

서비스 구성을 업데이트하려면 Service Management API에 서비스 구성 소스 파일 목록을 제출해야 하며 서버는 이를 확인된 서비스 구성으로 컴파일합니다.

소스 파일의 형식은 다음과 같습니다.

Service Management API는 .proto 파일을 가져오지 않습니다. 파일을 제출하기 전에 .proto 파일에서 protobuf 설명자를 생성해야 합니다. 다음 명령어를 사용하여 설명자 파일을 생성할 수 있습니다.

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

서비스 구성 소스 파일을 제출하는 권장 방법은 gcloud CLI를 사용하는 것입니다.

$ gcloud auth login
$ gcloud endpoints services deploy [a list of service configuration source files]

Service Management API를 직접 호출하여 소스 파일을 제출할 수도 있습니다. 예를 들어 이 OpenAPI 정의가 포함된 경우(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"
        }
      }
    }
  }
}

다음 API 호출을 수행하여 OpenAPI 사양을 제출할 수 있습니다.

$ 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.",
  ...
}

서비스 구성 보고서 생성

새로운 서비스 구성 버전을 제출하기 전에 services.generateConfigReport 메서드를 호출하여 기존 서비스 구성 버전에서 변경된 사항에 대한 보고서를 가져올 수도 있습니다. 요청에서 old_config 필드를 사용하여 비교할 버전을 지정하거나, 간단히 이 필드를 건너뛰어 최신 서비스 구성 버전에 맞춰 보고서를 생성할 수 있습니다.

새 OpenAPI 구성 파일이 hello.json으로 호출되었다고 가정하고 다음 명령어를 실행할 수 있습니다.

$ 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

특정 구성 버전의 보고서를 생성하려면 다음을 실행하면 됩니다.

# 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

이전 서비스 구성 버전 가져오기

Service Management API는 제출된 서비스 구성의 버전 기록을 유지합니다. 다음 명령어에 표시된 것처럼 services.configs.list 또는 services.configs.get 메서드를 사용하여 특정 버전을 나열하거나 검색할 수 있습니다.

# 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",
  ...
}