Recomendaciones de uso de la API
En esta página, se explica cómo ver y administrar recomendaciones en el recomendador mediante los comandos de gcloud
o la API de REST.
La siguiente es una interacción de recomendación típica con la API del recomendador:
- Enumera las recomendaciones para un proyecto específico.
- Marca una recomendación que deseas aplicar como reclamada o marca una recomendación que no pretendas aplicar como descartada.
- Aplica la recomendación con comandos
gcloud
o llamadas a la API de REST específicas para el tipo de recurso (por ejemplo, roles de IAM o instancias de VM de Compute Engine). - Marca la recomendación como funcionó o falló
Ten en cuenta que las recomendaciones recuperadas con la API solo pueden interactuar a través de la API o BigQuery Export.
Para obtener información sobre cómo cambiar el estado de las recomendaciones en la consola de Google Cloud, consulta la documentación del Centro de recomendaciones o el recommender apropiado.
Configura el proyecto predeterminado
Configura el proyecto predeterminado si aún no lo hiciste:
gcloud config set project PROJECT_ID
En el ejemplo anterior, PROJECT_ID es el ID de tu proyecto.
Configure las variables de entorno
Configura las variables de entorno para las interacciones del Recomendador:
PROJECT=TARGET_PROJECT_ID LOCATION=LOCATION_ID RECOMMENDER=RECOMMENDER_ID
donde:
TARGET_PROJECT_ID es el proyecto cuyas recomendaciones deseas enumerar. Este puede ser un proyecto diferente del actual.
- Para los comandos de
gcloud
, debes usar el ID del proyecto - Para las solicitudes a la API, puedes usar el número o el ID del proyecto. Se recomienda usar el número del proyecto.
El número de proyecto se muestra en las respuestas de la API y los comandos de
gcloud
.- Para los comandos de
LOCATION_ID es la ubicación de Google Cloud en la que se encuentran los recursos asociados con las recomendaciones (por ejemplo,
global
ous-central1-a
).RECOMMENDER_ID es el ID del recomendador completamente calificado (por ejemplo,
google.compute.instance.MachineTypeRecommender
).
Consulta Recomendadores para obtener una tabla de vínculos a información sobre cada recomendador, incluidas las ubicaciones admitidas y los ID de recomendación.
Configurar permisos
Debes tener permisos para acceder a las recomendaciones del proyecto de destino.
- Para solicitantes que incluyen un proyecto de facturación en su solicitud. El proyecto usado en la solicitud debe estar en regla y el usuario debe tener un rol en el proyecto que contenga el permiso
serviceusage.services.use
. El rol Consumidor de Service Usage contiene el permiso requerido. - Cada recomendador requiere permisos específicos. Consulta Recomendadores para obtener una tabla de vínculos a información sobre cada recomendador, incluidos los permisos necesarios.
Crea una lista de recomendaciones
Como se muestra en la pestaña gcloud beta, puedes enumerar todas las configuraciones sin la necesidad de especificar una ubicación ni un recomendador. Esta función está en vista previa.
La función de GA requiere que especifiques un proyecto, una ubicación y un recomendador. Para obtener más detalles, consulta la pestaña gcloud.
gcloud Beta
Ingresa el siguiente comando:
gcloud beta recommender recommendations list \ --project=${PROJECT} \ --format=FORMAT
donde FORMAT es un gcloud
formato de salida admitido, como json
Por ejemplo:
gcloud beta recommender recommendations list \ --project=example-project \ --format=json
gcloud
Ingrese lo siguiente:
gcloud recommender recommendations list \ --project=${PROJECT} \ --location=${LOCATION} \ --recommender=${RECOMMENDER} \ --format=FORMAT
En el comando anterior, FORMAT es un formato de salida de gcloud
compatible (por ejemplo, json
).
Por ejemplo:
gcloud recommender recommendations list \ --project=example-project \ --location=us-central1-a \ --recommender=google.compute.instance.MachineTypeRecommender \ --format=json
REST
Ingrese lo siguiente:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: ${PROJECT}" \ "https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"
Por ejemplo:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: example-project" \ "https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations"
Esta operación genera las recomendaciones actuales sobre el tamaño de las instancias de VM en el proyecto de destino como una lista de entidades Recommendation
en el formato especificado.
El resultado es similar al siguiente:
[ { "content": { "operationGroups": [ { "operations": [ { "action": "test", "path": "/machineType", "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1", "resourceType": "compute.googleapis.com/Instance", "valueMatcher": { "matchesPattern": ".*zones/us-central1-a/machineTypes/n1-standard-4" } }, { "action": "replace", "path": "/machineType", "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1", "resourceType": "compute.googleapis.com/Instance", "value": "zones/us-central1-a/machineTypes/custom-2-5120" } ] } ] }, "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.", "etag": "\"280b34810bba8a1a\"", "lastRefreshTime": "2019-06-28T06:49:21Z", "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9", "primaryImpact": { ... }, "stateInfo": { "state": "ACTIVE" }, "recommenderSubtype": "CHANGE_MACHINE_TYPE" } ]
Ten en cuenta que las recomendaciones que se muestran incluyen los siguientes campos:
Un campo
name
en el siguiente formato:projects/PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations/RECOMMENDATION_ID
RECOMMENDATION_ID : Identifica de forma única la recomendación
Un campo
etag
asociado con el estado actual de la recomendación.
Cuando haces referencia a una recomendación mediante comandos de Google Cloud CLI
posteriores o llamadas a la API de REST, haces referencia al ID de recomendación y al ETag, lo que garantiza que cualquier operación se realice solo si la recomendación no se ha se modificó desde su última recuperación.
Cómo marcar una recomendación como reclamada o descartada
Puedes marcar una recomendación como reclamada para indicar que tienes la intención de aplicar los cambios recomendados al recurso asociado. Cuando se reclama una recomendación, tu nombre de usuario se asigna como la persona que actúa para la recomendación y el recomendador no actualiza la recomendación con contenido más reciente.
Puedes marcar una recomendación como descartada para indicar que no deseas aplicar los cambios recomendados al recurso asociado o que no deseas seguir viéndola. Cuando se descarta una recomendación, ya no aparecerá como ACTIVA. El recomendador puede seguir actualizando la recomendación con contenido más reciente.
Para marcar una recomendación como reclamada o descartada, sigue estos pasos:
gcloud
Ingrese el siguiente comando:
gcloud recommender recommendations STATE_CHANGE \ RECOMMENDATION_ID \ --project=${PROJECT} \ --location=${LOCATION} \ --recommender=${RECOMMENDER} \ --etag=etag \ --state-metadata=STATE_METADATA --format=FORMAT
Aquí:
- STATE_CHANGE es el estado que deseas marcar para una recomendación.
Estos son los valores válidos:
mark-claimed
para marcar la recomendación como reclamada.mark-dismissed
para marcar la recomendación como descartada.
- RECOMMENDATION_ID es el ID de una recomendación que recuperaste de una llamada anterior para hacer una lista de recomendaciones.
- etag es la ETag que se muestra que representa el estado de recomendación
- STATE_METADATA es un metadato opcional sobre la operación. Especifica los metadatos como una lista separada por comas de pares KEY=VALUE. Esta opción está disponible cuando marcas una recomendación como reclamada, exitosa o fallida.
Por ejemplo:
gcloud recommender recommendations mark-claimed \ a523ff7e-ed03-4143-a3a5-5b396b99cba9 \ --project=example-project \ --location=us-central1-a \ --recommender=google.compute.instance.MachineTypeRecommender \ --etag='"280b34810bba8a1a"' \ --state-metadata=priority=high,tracking_number=12345 --format=json
REST
Ingrese lo siguiente:
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: ${PROJECT}" \ --data-binary @- \ https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations/RECOMMENDATION_ID:STATE_CHANGE \ << EOM { "etag": "etag", "stateMetadata": STATE_METADATA } EOM
donde:
- STATE_CHANGE es el estado que deseas marcar para una recomendación.
Estos son los valores válidos:
mark-claimed
para marcar la recomendación como reclamada.mark-dismissed
para marcar la recomendación como descartada.
- RECOMMENDATION_ID es el ID de una recomendación que recuperaste de una llamada anterior para hacer una lista de recomendaciones.
- etag es la ETag que se muestra que representa el estado de recomendación.
- STATE_METADATA es un campo opcional con metadatos adicionales sobre la operación. Especifica los metadatos como pares
key:value
. Este campo está disponible cuando marcas una recomendación como reclamada, exitosa o fallida.
Por ejemplo:
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: example-project" \ --data-binary @- \ https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/8f20d509-83d2-45d2-8152-1b8d5d7d5831:markClaimed \ << EOM { "etag": "\"280b34810bba8a1a\"" "stateMetadata": { "priority" : "high", "tracking_number": "12345" } } EOM
Esta operación muestra la entidad Recommendation
en el formato especificado después de que se realiza la operación.
El resultado es similar al siguiente:
{ "content": { "operationGroups": [ ... ] }, "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.", "etag": "\"5e3a63cccf1e0964\"", "lastRefreshTime": "2019-06-28T06:49:21Z", "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9", "primaryImpact": { ... }, "stateInfo": { "state": "CLAIMED" } }
Ten en cuenta que el valor del campo state
cambió a CLAIMED
.
Aplica recomendaciones
Una vez que marcaste una recomendación como reclamada, puedes aplicarla mediante los comandos de gcloud
o las llamadas a la API de REST que son específicas del tipo de recurso.
Por ejemplo, para cambiar el tamaño de una instancia de VM en respuesta a una recomendación del recomendador de tamaño de instancia de VM, usa los comandos gcloud
de Compute Engine o las llamadas a la API de REST de Compute Engine
Cuando realizas estas operaciones, puedes identificar el recurso de destino con el valor del campo resource
en el array OperationsGroup
en la entidad Recommendation
que se muestra. Este campo está en el siguiente formato:
//API_NAME/RESOURCE_PATH
Por ejemplo:
//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1"
Cambia el estado de una recomendación
Después de aplicar una recomendación, puedes marcarla como exitosa o fallida.
Para marcar una recomendación como exitosa, sigue estos pasos:
gcloud
Ingrese lo siguiente:
gcloud recommender recommendations STATE_CHANGE \ RECOMMENDATION_ID \ --project=${PROJECT} \ --location=${LOCATION} \ --recommender=${RECOMMENDER} \ --etag=etag \ --state-metadata=priority=high,tracking_number=12345 --format=FORMAT
Donde
- STATE_CHANGE es el cambio que deseas hacer en una recomendación.
Estos son los valores válidos:
mark-succeeded
para marcar la recomendación como exitosa.mark-failed
para marcar la recomendación como con errores.
- STATE_METADATA es un metadato opcional sobre la operación. Especifica los metadatos como una lista separada por comas de pares KEY=VALUE. Esta opción está disponible cuando marcas una recomendación como reclamada, exitosa o fallida.
Por ejemplo:
gcloud recommender recommendations mark-succeeded \ a523ff7e-ed03-4143-a3a5-5b396b99cba9 \ --project=example-project \ --location=us-central1-a \ --recommender=google.compute.instance.MachineTypeRecommender \ --etag='"5e3a63cccf1e0964"' \ --state-metadata=priority=high,tracking_number=12345 --format=json
REST
Ingrese lo siguiente
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: ${PROJECT}" \ --data-binary @- \ https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations/RECOMMENDATION_ID:STATE_CHANGE \ << EOM { "etag": "etag" "stateMetadata": STATE_METADATA } EOM
donde:
- RECOMMENDATION_ID es el ID de una recomendación que recuperaste de una llamada anterior para hacer una lista de recomendaciones.
- STATE_CHANGE es el cambio que deseas hacer en una recomendación.
Estos son los valores válidos:
markSucceeded
para marcar la recomendación como exitosa.markFailed
para marcar la recomendación como con errores.
- etag es la ETag que se muestra que representa el estado de recomendación
- STATE_METADATA es un campo opcional con metadatos adicionales sobre la operación. Especifica los metadatos como pares
key:value
. Este campo está disponible cuando marcas una recomendación como reclamada, exitosa o fallida.
Por ejemplo:
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: example-project" \ --data-binary @- \ https://recommender.googleapis.com/v1/projects/example-project/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/8f20d509-83d2-45d2-8152-1b8d5d7d5831:markSucceeded \ << EOM { "etag": "\"280b34810bba8a1a\"" "stateMetadata": { "priority" : "high", "tracking_number": "12345" } } EOM
Esta operación muestra la entidad Recommendation
en el formato especificado después de que se realiza la operación.
El resultado es similar al siguiente:
{ "content": { "operationGroups": [ ... ] }, "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.", "etag": "\"5e3a63cccf1e053c\"", "lastRefreshTime": "2019-06-28T06:49:21Z", "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9", "primaryImpact": { ... }, "stateInfo": { "state": "SUCCEEDED", "stateMetadata": { "priority" : "high", "tracking_number": "12345" } } }
Ten en cuenta que el valor del campo state
cambió a SUCCEEDED
.