En el portal se proporciona una API especial para sincronizar tu contenido personalizado. Para llamar a esta API, debes seguir estos pasos:
- Sincroniza tu contenido personalizado de manera manual al menos una vez.
- Crea una cuenta de servicio con la autorización y clave adecuadas.
- Haz una solicitud HTTP para sincronizar tu contenido.
Este documento ofrece instrucciones sobre cómo crear una cuenta de servicio y ejemplos sobre cómo hacer la solicitud con Python o mediante la línea de comandos.
Crear una cuenta de servicio autorizada
Para usar una API para sincronizar tu contenido personalizado, necesitas una cuenta de servicio con la autorización y la clave adecuadas. Para crear la cuenta de servicio, otorgarle la función adecuada y obtener el archivo de claves necesario, sigue estas instrucciones:
Consola
Crear una cuenta de servicio:
En la consola de Google Cloud, ve a la página Cuentas de servicio.
Selecciona el proyecto que se configuró para usar tu API.
Haz clic en
Crear cuenta de servicio.Ingresa un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de cuenta de servicio según este nombre.
Opcional: En el campo Descripción de la cuenta de servicio, ingresa una descripción para la cuenta de servicio.
Haz clic en Crear y continuar.
Haz clic en Listo para terminar de crear la cuenta de servicio.
No cierres la ventana del navegador. La usarás en la próxima tarea.
Descarga una clave JSON para la cuenta de servicio que acabas de crear:
- En la consola de Google Cloud, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
- Haga clic en Claves.
- Haz clic en Agregar clave, luego haz clic en Crear clave nueva.
Haz clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
Asegúrate de almacenar el archivo de claves de forma segura, ya que se puede usar para autenticarse como tu cuenta de servicio. Puedes mover y cambiar el nombre de este archivo como desees.
Haz clic en Cerrar.
En la consola de Google Cloud, ve a la página Endpoints > Servicios de tu proyecto.
Haz clic en el nombre de la API en la que necesitas sincronizar contenido personalizado para cambiar sus permisos de acceso.
Si el panel lateral Permisos no está abierto, haz clic en +Permisos.
Para otorgar acceso a la API a la cuenta de servicio creada, ingresa la dirección de correo electrónico de esta en el campo Agregar miembros.
En la lista desplegable Seleccionar una función, haz clic en Administración de servicios y selecciona la función Editor de configuración de servicio para la cuenta de servicio.
Felicitaciones Creaste la cuenta de servicio, descargaste su clave privada a un archivo JSON y le asignaste la función adecuada.
gcloud
Ingresa el siguiente comando para mostrar los ID de tus proyectos de Google Cloud:
gcloud projects list
Reemplaza
[YOUR_PROJECT_ID]
en el siguiente comando para definir el proyecto predeterminado en el que se encuentra tu API:gcloud config set project [YOUR_PROJECT_ID]
Asegúrate de que Google Cloud CLI (gcloud) esté autorizado para acceder a tus datos y servicios en Google Cloud:
gcloud auth login
Si tienes más de una cuenta, asegúrate de elegir la que está en el proyecto de Google Cloud en el que se encuentra la API. Si ejecutas
gcloud auth list
, la cuenta que seleccionaste se muestra como la cuenta activa para el proyecto.Para crear una cuenta de servicio, ejecuta el siguiente comando y reemplaza
[SERVICE_ACCOUNT_NAME]
y[Service Account to Sync Custom Content]
por el nombre y el nombre comercial que quieres usar:gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] \ --display-name "[Service Account to Sync Custom Content]"
Con el comando, se asigna una dirección de correo electrónico para la cuenta de servicio en este formato:
[SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com
Esta dirección de correo electrónico se requiere en los comandos posteriores.
Crea un archivo de claves de cuenta de servicio y reemplaza
[KEY_FILE]
con el nombre de archivo para tu clave:gcloud iam service-accounts keys create ~/[KEY_FILE] \ --iam-account [SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com
Para otorgarle acceso a la API con el contenido personalizado a la cuenta de servicio, ejecuta el siguiente comando, pero reemplaza
[YOUR_SERVICE_NAME]
con el nombre de la API que tenga el contenido personalizado:gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \ --member=serviceAccount:[SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com \ --role roles/servicemanagement.configEditor
Envía una solicitud para sincronizar el contenido personalizado
En los siguientes ejemplos se muestra cómo hacer una solicitud para sincronizar contenido personalizado. La solicitud debería ser similar a la siguiente:
POST https://endpointsportal.[YOUR_PROJECT_ID].cloud.goog/api/v1/[YOUR_SERVICE_NAME]/custom-content/
Reemplaza [YOUR_PROJECT_ID]
y [YOUR_SERVICE_NAME]
con los valores que correspondan. Cuando la solicitud se completa correctamente, la respuesta tiene un código de estado HTTP de 200
.
Los siguientes ejemplos muestran cómo obtener un token de acceso de los servidores de autorización de Google y cómo usarlo para realizar la solicitud en el extremo de tu portal con Python o la línea de comandos:
Python
- Instala las bibliotecas de Python necesarias:
pip install --upgrade google-auth
- Para crear un objeto
Credentials
a partir de las credenciales de la cuenta de servicio y los permisos que requiere el extremo, y realizar la solicitud para sincronizar el contenido, reemplaza[YOUR_PROJECT_ID]
,/path/to/service.json
y[YOUR_SERVICE_NAME]
por los valores adecuados en la siguiente secuencia de comandos:from google.oauth2 import service_account from google.auth.transport.requests import AuthorizedSession SCOPES = ["https://www.googleapis.com/auth/service.management.readonly"] SERVICE_ACCOUNT_FILE = "/path/to/service.json" PROJECT_ID = "[YOUR_PROJECT_ID]" SERVICE_NAME = "[YOUR_SERVICE_NAME]" credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) authed_session = AuthorizedSession(credentials) endpoint = "https://endpointsportal.%s.cloud.goog/api/v1/%s/custom-content" % (PROJECT_ID, SERVICE_NAME) result = authed_session.post(endpoint) print result
Línea de comandos
- Abre Cloud Shell o una ventana de la terminal si tienes la CLI de gcloud instalada en tu computadora Linux.
- Para autenticar tu cuenta de servicio, reemplaza
[KEY_FILE]
con la ruta de acceso al archivo de claves de tu cuenta de servicio y ejecuta el comando:gcloud auth activate-service-account --key-file [KEY_FILE]
-
Obtén un token de autorización con tu cuenta de servicio:
ACCESS_TOKEN=$(gcloud auth print-access-token)
- Cuando llames a la API, transfiere el valor del token como un token del portador en un encabezado de autorización. Reemplaza
[YOUR_PROJECT_ID]
y[YOUR_SERVICE_NAME]
con los valores que correspondan:curl -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" \ https://endpointsportal.[YOUR_PROJECT_ID].cloud.goog/api/v1/[YOUR_SERVICE_NAME]/custom-content