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.
  • Pour créer et supprimer des unités de location, suivez les instructions de configuration initiale fournies à la page Premiers pas avec l'API Service Consumer Management.
  • 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

Select the tabs for how you plan to access the API:

gcloud

    After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    Bibliothèques clientes

    Pour utiliser des bibliothèques clientes dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application avec vos identifiants utilisateur.

    1. Install the Google Cloud CLI.

    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .

    REST

    Pour utiliser l'API REST dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

    Pour en savoir plus sur la configuration de l'authentification dans un environnement de production, consultez Set up Application Default Credentials for code running on Google Cloud dans la documentation sur l'authentification Google Cloud .

    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, utilisez la méthode services.tenancyUnits.create :

    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, utilisez la méthode services.tenancyUnits.addProject :

    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 services.tenancyUnits.list 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.search pour rechercher les 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 à l'aide de la méthode services.tenancyUnits.delete :

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