Premiers pas avec les unités de location

Cette page présente la configuration de base des unités de location et le workflow associé avec Service Infrastructure, par exemple :

Les exemples utilisent des appels directs à l'API REST Service Consumer Management.

Pour plus d'informations sur les unités de location, consultez la page Créer et supprimer des unités de location.

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 nécessaire de projets clients de services.
  • Chaque projet client de service créé dans une unité de location doit également figurer dans un dossier que vous spécifiez. C'est pourquoi vous avez besoin d'une organisation pour utiliser des unités de location.

Authentication

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"

Créer une unité de location

Une fois que vous avez défini les autorisations appropriées, lorsqu'un client de service active votre service, vous pouvez créer une unité de location qui va contenir le projet locataire de ce client de service. Une unité de location est une entité légère qui représente le lien avec un client de service. Il s'agit généralement d'un projet Cloud qui a activé vos API et votre service géré. Chaque client de service ne peut avoir qu'une seule unité de location active.

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

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

Ici, 'projects/12345678901' est le numéro de projet du client du service et your-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 une unité de location pour un client de service spécifique, appelez la méthode 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 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, la suppression de l'unité de location permet de nettoyer les ressources et de garantir la suppression des données de votre utilisateur.

Supprimer des projets locataires

Les projets locataires doivent être supprimés avant de supprimer l'unité de location associée au client de service. La méthode removeProject supprime le projet et toutes les ressources qu'il contient :

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

avec les données suivantes :

{"tag":"tag1"}

Supprimer une unité de location

Une fois que tous les projets locataires ont été supprimés 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