Gérer les unités de location

Cette page explique comment gérer les unités de location pour votre service. Une unité de location est une ressource légère qui représente la relation entre un client de service et un service géré. Chaque client de service ne peut avoir qu'une seule unité de location active pour un service géré. Il s'agit d'une fonctionnalité fournie par Service Infrastructure.

Le nom de ressource d'une unité de location suit le format ci-dessous :

services/{your service name}/projects/{consumer project number}/tenancyUnits/{id}

L'ID d'une unité de location est généré automatiquement lors de sa création. Vous pouvez également fournir un ID lorsque vous appelez la méthode services.tenancyUnits.create. Si vous fournissez un ID, il doit être globalement unique dans le champ d'application de votre service géré, pour tous les clients du service.

Les exemples présentés sur cette page utilisent des appels directs à l'API REST Service Consumer Management. Pour une utilisation en production, nous vous recommandons d'utiliser les bibliothèques clientes fournies par Google, qui vous offrent davantage de facilité d'utilisation et de fiabilité.

Avant de commencer

  • L'API Service Consumer Management est conçue pour être utilisée avec des services gérés et des projets producteurs de services. Vous devez déjà disposer d'un projet Google Cloud et d'un service géré (tel qu'un service créé à l'aide de Cloud Endpoints) dans ce projet.
  • Pour utiliser des unités de location, l'API Service Consumer Management doit créer des projets locataires dans votre organisation de production de services. Assurez-vous de disposer d'un quota d'utilisation suffisant pour le nombre de projets locataires requis pour les clients de votre service.
  • Chaque projet locataire créé dans une unité de location doit également figurer dans un dossier que vous spécifiez dans la configuration du projet locataire. C'est pourquoi vous avez besoin d'une organisation pour utiliser des unités de location.

Authentification

Les API Cloud telles que l'API Service Consumer Management acceptent uniquement les appels authentifiés. Si vous n'avez pas encore de compte de service, découvrez comment en créer un et obtenir une clé JSON pour l'authentification auprès des API Cloud, en consultant la page Premiers pas avec l'authentification. Si vous utilisez une bibliothèque cliente Google, vous pouvez configurer votre environnement de sorte qu'il utilise les identifiants de votre compte de service par défaut. Pour les appels directs à l'API REST, vous devez fournir un jeton d'accès dans chaque en-tête, comme dans l'exemple suivant :

curl --header "Authorization: Bearer ${ACCESS_TOKEN}" --header 'Content-Type: application/json' --data '{"tag":"tag1", "project_config":{"folder":"folders/9876543210", "tenant_project_policy": {"policy_bindings":{"role":"roles/owner", "members":"user:user1@company.com"}}, "billing_config":{"billing_account":"billingAccounts/123456-472F22-28F9AA"}}}' -X POST "https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/consumers/12345678901/tenancyUnits/tu-hello:addProject"

Pour créer et supprimer des unités de location, vous devez suivre les instructions de configuration initiales fournies à la page Premiers pas avec l'API Service Consumer Management.

Créer une unité de location

Les unités de location et les projets locataires sont normalement créés lorsqu'il y a création de ressources dans votre propre service qui dépendent de ressources Google Cloud supplémentaires à provisionner pour les clients du service.

Pour créer une unité de location, procédez comme suit :

POST https://serviceconsumermanagement.googleapis.com/v1/services/service.example.com/projects/12345678901/tenancyUnits

Ici, "projects/12345678901" représente le client du service et service.example.com est le nom de votre service.

La structure de données renvoyée porte le nom de l'unité de location et contient un identifiant unique pouvant être utilisé pour y accéder. Dans cet exemple, le nom généré est services/your-service.example.com/projects/12345678901/tenancyUnits/absdef.

Ajouter un projet locataire

Vous pouvez maintenant ajouter un projet pour l'utilisateur. Pour ajouter un projet locataire à l'unité de location créée à l'étape précédente, appelez la méthode suivante :

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef:addProject

avec les données suivantes :

{"tag":"tag1", "project_config":{"folder":"folders/9876543210", "tenant_project_policy":{"policy_bindings":{"role":"roles/owner", "members":"user:bob@example.com"}}, "billing_config":{"billing_account":"billingAccounts/123456-472F22-28F9AA"}}}

La valeur tag est un identifiant de votre choix que vous fournissez pour le projet au sein de l'unité de location (ici, il s'agit de tag1). Cela peut être une région, un réseau de client ou simplement un ID de chaîne.

Cet appel affiche une opération de longue durée que vous pouvez interroger pour déterminer si le projet a été créé avec succès.

Si vous devez appliquer une configuration différente, par exemple pour ajouter des services gérés, vous pouvez appeler la méthode services.tenancyUnits.applyProjectConfig.

Rechercher des unités de location

Trouver une unité de location pour un client de service

Pour rechercher l'unité de location correspondant à un client de service spécifique, appelez la méthode services.tenancyUnits.ListTenancyUnits en spécifiant le numéro du projet client de service :

GET https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits

Rechercher des unités de location

Vous pouvez utiliser la méthode services.tenancyUnits.SearchTenancyUnits pour rechercher des unités de location définies pour votre service. Par exemple, la requête suivante va afficher toutes les unités contenant un projet avec le tag "tag1" :

GET https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com:search?query=tenant_resources.tag=tag1

Nettoyer des unités de location

Lorsqu'un client cesse d'utiliser votre service, vous devez supprimer son unité de location afin de libérer les ressources et de garantir la suppression des données utilisateur.

Supprimer des projets locataires

Vous devez supprimer tous les projets locataires avant de pouvoir supprimer l'unité de location correspondante. Utilisez la méthode services.tenancyUnits.removeProject pour supprimer un projet locataire et toutes les ressources qu'il contient :

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef:removeProject

Supprimer une unité de location

Une fois que vous avez supprimé tous les projets locataires d'une unité de location ou qu'ils se trouvent tous dans l'état DELETED, vous pouvez supprimer l'unité de location comme suit :

DELETE https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef