Questa pagina descrive come gestire le configurazioni dei servizi utilizzando Service Infrastructure.
Una configurazione del servizio è una specifica che descrive i diversi aspetti di un servizio gestito.
I metodi dell'API Service Management in genere utilizzati per gestire le configurazioni dei servizi sono:
- Utilizza
services.configs.create
oservices.configs.submit
per inviare configurazioni di servizio. - Utilizza
services.configs.list
eservices.configs.get
per recuperare le configurazioni dei servizi. - Utilizza
services.generateConfigReport
per generare un rapporto sulle modifiche tra due configurazioni del servizio.
Prima di iniziare
Per eseguire gli esempi in questa guida, assicurati di seguire prima le istruzioni per completare la configurazione iniziale in Getting started with the Service Management API.
Invio dei file di origine della configurazione del servizio
Per aggiornare la configurazione del servizio, devi inviare un elenco dei file di origine della configurazione del servizio all'API Service Management, che verrà quindi compilata dal server in una configurazione del servizio convalidata.
I file di origine possono avere i seguenti formati:
- OpenAPI v2
- Descrittore dei buffer di protocollo
google.api.Service
in formato JSON o YAML
L'API Service Management non accetta file .proto
, devi generare generato descrittori di protocollo dai tuoi file .proto
prima di inviarli.
Per generare i file dei descrittori, puoi utilizzare il comando seguente:
$ protoc hello.proto --include_source_info --include_imports --descriptor_set_out=service.descriptors *.proto
Il modo consigliato per inviare i file di origine della configurazione del servizio è utilizzare l'interfaccia a riga di comando gcloud.
$ gcloud auth login
$ gcloud endpoints services deploy [a list of service configuration source files]
Puoi anche chiamare direttamente l'API Service Management per inviare i file di origine. Ad esempio, se hai questa definizione di 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"
}
}
}
}
}
Puoi effettuare la seguente chiamata API per inviare la specifica 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.",
...
}
Generazione report di configurazione servizio
Prima di inviare una nuova versione di configurazione del servizio, ti consigliamo di chiamare il metodo services.generateConfigReport
per ricevere un rapporto sulle modifiche relative a una versione esistente della configurazione del servizio. Puoi specificare la versione da confrontare con il campo old_config
della richiesta oppure puoi semplicemente saltare questo campo per generare un rapporto con l'ultima versione di configurazione del servizio.
Supponendo che il nuovo file di configurazione di OpenAPI sia denominato hello.json
, puoi eseguire il comando seguente:
$ 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
Se vuoi generare un rapporto per una versione di configurazione specifica, puoi eseguire:
# 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
Recupero delle versioni precedenti della configurazione del servizio
L'API Service Management conserva una cronologia delle versioni delle configurazioni dei servizi inviate. Puoi elencarle o recuperarne una versione specifica utilizzando i metodi services.configs.list
o services.configs.get
, come illustrato dai seguenti comandi:
# 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",
...
}