En esta página se describe cómo gestionar las configuraciones de servicios mediante Service Infrastructure.
Una configuración de servicio es una especificación que describe diferentes aspectos de un servicio gestionado.
Los métodos de la API Service Management que suelen usarse para gestionar las configuraciones de servicios son los siguientes:
- Usar
services.configs.create
oservices.configs.submit
para enviar configuraciones de servicios. - Usa
services.configs.list
yservices.configs.get
para obtener las configuraciones de los servicios. - Usa
services.generateConfigReport
para obtener un informe de cambios entre dos configuraciones de servicio.
Antes de empezar
Para ejecutar los ejemplos de esta guía, primero debes seguir las instrucciones para completar la configuración inicial en Primeros pasos con la API Service Management.
Enviar archivos de origen de configuración de servicio
Para actualizar la configuración de tu servicio, debes enviar una lista de archivos de origen de configuración de servicio a la API Service Management. El servidor los compilará en una configuración de servicio validada.
Los archivos de origen pueden tener los siguientes formatos:
- OpenAPI v2
- Descriptor de búferes de protocolo
google.api.Service
en formato JSON o YAML
La API Service Management no acepta archivos .proto
. Debes generar descriptores protobuf a partir de tus archivos .proto
antes de enviarlos.
Puedes usar el siguiente comando para generar los archivos de descriptor:
$ protoc hello.proto --include_source_info --include_imports --descriptor_set_out=service.descriptors *.proto
La forma recomendada de enviar archivos de origen de configuración de servicios es usar la CLI de gcloud.
$ gcloud auth login
$ gcloud endpoints services deploy [a list of service configuration source files]
También puede llamar directamente a la API Service Management para enviar archivos de origen. Por ejemplo, si tienes esta definición de 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"
}
}
}
}
}
Puedes hacer la siguiente llamada a la API para enviar la especificación de 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.",
...
}
Generar informes de configuración de servicios
Antes de enviar una nueva versión de la configuración de un servicio, puede llamar al método services.generateConfigReport
para obtener un informe de los cambios relativos a una versión de la configuración del servicio. Puede especificar la versión con la que se va a comparar mediante el campo old_config
de la solicitud o simplemente omitir este campo para generar un informe con la versión más reciente de la configuración del servicio.
Si el nuevo archivo de configuración de OpenAPI se llama hello.json
, puedes ejecutar el siguiente comando:
$ 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
Si quiere generar un informe de una versión de configuración específica, puede ejecutar el siguiente comando:
# 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
Obtener versiones anteriores de la configuración del servicio
La API Service Management mantiene un historial de versiones de las configuraciones de servicio enviadas. Puedes enumerarlas o recuperar una versión específica con los métodos services.configs.list
o services.configs.get
, como se muestra en los siguientes comandos:
# 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",
...
}