GitHub

Le connecteur GitHub vous permet d'effectuer des opérations d'insertion, de suppression, de mise à jour et de lecture sur les données GitHub.

Avant de commencer

Avant d'utiliser le connecteur GitHub, effectuez les tâches suivantes:

  • Dans votre projet Google Cloud :
    • Vérifiez que la connectivité réseau est configurée. Pour en savoir plus sur les modèles de réseau, consultez la section Connectivité réseau.
    • Attribuez le rôle IAM roles/connectors.admin à l'utilisateur qui configure le connecteur.
    • Attribuez les rôles IAM suivants au compte de service que vous souhaitez utiliser pour le connecteur :
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      Un compte de service est un compte Google spécial destiné à représenter un utilisateur non humain qui doit s'authentifier et obtenir les autorisations permettant d'accéder aux données des API Google. Si vous ne possédez pas de compte de service, vous devez en créer un. Pour plus d'informations, consultez la section Créer un compte de service.

    • Activez les services suivants :
      • secretmanager.googleapis.com (API Secret Manager)
      • connectors.googleapis.com (API Connectors)

      Pour savoir comment activer des services, consultez la page Activer des services.

    Si ces services ou autorisations n'ont pas encore été activés pour votre projet, vous êtes invité à les activer lors de la configuration du connecteur.

  • Dans GitHub, selon vos besoins, effectuez les tâches suivantes :

    Configurer le connecteur

    Pour configurer le connecteur, vous devez créer une connexion à votre source de données (système backend). Une connexion est spécifique à une source de données. Cela signifie que si vous disposez de nombreuses sources de données, vous devez créer une connexion distincte pour chacune d'elles. Pour créer une connexion, procédez comme suit :

    1. Dans la console Cloud, accédez à la page Integration Connectors > Connections (Connecteurs d'intégration > Connexions), puis sélectionnez ou créez un projet Google Cloud.

      Accéder à la page "Connexions"

    2. Cliquez sur + CRÉER pour ouvrir la page Créer une connexion.
    3. Dans la section Emplacement, choisissez l'emplacement de la connexion.
      1. Région : sélectionnez un emplacement dans la liste déroulante.

        Pour obtenir la liste de toutes les régions disponibles, consultez la page Emplacements.

      2. Cliquez sur NEXT (Suivant).
    4. Dans la section Détails de connexion, procédez comme suit :
      1. Connecteur: sélectionnez GitHub dans la liste déroulante des connecteurs disponibles.
      2. Version du connecteur : sélectionnez la version du connecteur dans la liste déroulante des versions disponibles.
      3. Dans le champ Nom de connexion, saisissez un nom pour l'instance de connexion.

        Les noms de connexion doivent répondre aux critères suivants :

        • Les noms de connexion peuvent contenir des lettres, des chiffres ou des traits d'union.
        • Les lettres doivent être en minuscules.
        • Les noms de connexion doivent commencer par une lettre et se terminer par une lettre ou un chiffre.
        • Les noms de connexion ne peuvent pas dépasser 49 caractères.
      4. Saisissez éventuellement une Description pour l'instance de connexion.
      5. Vous pouvez également activer Cloud Logging, puis sélectionner un niveau de journalisation. Par défaut, le niveau de journalisation est défini sur Error.
      6. Compte de service : sélectionnez un compte de service disposant des rôles requis.
      7. Vous pouvez également spécifier OwnerLogin: nom de connexion unique appartenant à un utilisateur ou à une organisation.
      8. Vous pouvez également spécifier Schema (Schéma) : utilisez le schéma pour limiter les schémas récupérés dynamiquement à un schéma de projet ou de dépôt spécifique. Pour récupérer tous les schémas, ne spécifiez aucune valeur dans ce champ. Pour en savoir plus sur les schémas compatibles, consultez la section Schémas et champs d'application.
      9. Vous pouvez également configurer les paramètres du nœud de connexion :

        • Nombre minimal de nœuds : saisissez le nombre minimal de nœuds de connexion.
        • Nombre maximal de nœuds : saisissez le nombre maximal de nœuds de connexion.

        Un nœud est une unité (ou instance répliquée) de connexion qui traite des transactions. Pour traiter plus de transactions pour une connexion, plus de nœuds sont nécessaires. À l'inverse, moins de nœuds sont nécessaires pour traiter moins de transactions. Pour comprendre comment les nœuds affectent la tarification de votre connecteur, consultez la section Tarifs des nœuds de connexion. Si vous ne saisissez aucune valeur, le nombre minimal de nœuds est défini par défaut sur 2 (pour une meilleure disponibilité) et le nombre maximal sur 50.

      10. Vous pouvez également cliquer sur + AJOUTER UN LIBELLÉ pour ajouter un libellé à la connexion sous la forme d'une paire clé/valeur.
      11. Cliquez sur NEXT (Suivant).
    5. Dans la section Destinations, saisissez les informations concernant l'hôte distant (système backend) auquel vous souhaitez vous connecter.
      1. Type de destination : sélectionnez un type de destination.
        • Sélectionnez Adresse hôte dans la liste pour spécifier le nom d'hôte ou l'adresse IP de la destination.
        • Si vous souhaitez établir une connexion privée à vos systèmes backend, sélectionnez Rattachement du point de terminaison dans la liste, puis sélectionnez le rattachement du point de terminaison requis dans la liste Rattachement du point de terminaison.

        Si vous souhaitez établir une connexion publique à vos systèmes backend avec une sécurité supplémentaire, vous pouvez envisager de configurer des adresses IP sortantes statiques pour vos connexions, puis de configurer vos règles de pare-feu pour ajouter à la liste d'autorisation uniquement les adresses IP statiques spécifiques.

        Pour saisir d'autres destinations, cliquez sur + AJOUTER UNE DESTINATION.

      2. Cliquez sur NEXT (Suivant).
    6. Dans la section Authentification, saisissez les informations d'authentification.

      Pour comprendre comment configurer ces types d'authentification, consultez la section Configurer l'authentification.

    7. Cliquez sur NEXT (Suivant).
    8. Vérifiez vos informations de connexion et d'authentification.
    9. Cliquez sur Créer.

    Configurer l'authentification

    Saisissez les détails en fonction de l'authentification que vous souhaitez utiliser.

    • ID client : ID client utilisé pour demander des jetons d'accès.
    • Champs d'application: liste des champs d'application souhaités, séparés par une virgule.
    • Code secret du client : secret Secret Manager contenant le code secret client pour l'application connectée que vous avez créée.

    Exemples de configuration de connexion

    Cette section présente des exemples de valeurs pour les différents champs que vous configurez lors de la création de la connexion.

    OAuth 2.0 : type de connexion avec code d'autorisation

    Nom du champ Détails
    Emplacement europe-west1
    Connecteur GitHub
    Version du connecteur 1
    Nom de connexion GitHub-connector
    Activer Cloud Logging Non
    Compte de service Votre_numéro_de_projet@serviceaccount
    OwnerLogin souvikg-Your_Owner_Login
    Schéma
    Nombre minimal de nœuds 2
    Nombre maximal de nœuds 50
    ID client ClientID
    Niveaux d'accès repo repo:status repo_deployment
    Code secret du client Code secret du client
    Version de secret 1

    Schémas et champs d'application GitHub

    Le connecteur GitHub est compatible avec les schémas suivants :
    • Schéma d'informations: ce schéma contient des tables contenant des informations sur les licences et des aperçus généraux des projets et des dépôts associés au compte authentifié. Il n'existe qu'un seul schéma d'informations. Pour récupérer le schéma d'informations, spécifiez ce qui suit dans le champ de schéma: Information
    • Schéma du dépôt: le connecteur prend en charge le schéma de chaque dépôt du compte de l'utilisateur ou de l'organisation authentifié. Pour spécifier un schéma de dépôt, utilisez le format suivant: Repository_.
    • Schéma de projet: le connecteur prend en charge le schéma pour chaque projet du compte de l'utilisateur ou de l'organisation authentifié. Utilisez le format suivant pour spécifier un schéma de projet: Project_

    Pour en savoir plus sur les champs d'application, consultez la section Champs d'application GitHub.

    Entités, opérations et actions

    Tous les connecteurs Integration Connectors fournissent une couche d'abstraction pour les objets de l'application connectée. Vous ne pouvez accéder aux objets d'une application que via cette abstraction. L'abstraction vous est présentée en tant qu'entités, opérations et actions.

    • Entité : une entité peut être considérée comme un objet ou un ensemble de propriétés dans l'application ou le service connecté. La définition d'une entité diffère d'un connecteur à l'autre. Par exemple, dans un connecteur de base de données, les tables sont les entités, dans un connecteur de serveur de fichiers, les dossiers sont les entités et, dans un connecteur de système de messagerie, les files d'attente sont les entités.

      Toutefois, il est possible qu'un connecteur ne soit pas compatible ou ne possède aucune entité. Dans ce cas, la liste Entities est vide.

    • Opération : une opération est l'activité que vous pouvez effectuer sur une entité. Vous pouvez effectuer l'une des opérations suivantes sur une entité :

      La sélection d'une entité dans la liste disponible génère une liste d'opérations disponibles pour l'entité. Pour obtenir une description détaillée des opérations, consultez les opérations d'entité de la tâche de connecteur. Toutefois, si un connecteur n'est pas compatible avec l'une des opérations d'entité, ces opérations non compatibles ne sont pas listées dans la liste Operations.

    • Action : une action est une fonction de première classe mise à la disposition de l'intégration via l'interface du connecteur. Une action vous permet de modifier une ou plusieurs entités, et varie d'un connecteur à l'autre. Normalement, une action comporte des paramètres d'entrée et un paramètre de sortie. Toutefois, il est possible qu'un connecteur ne prenne en charge aucune action, auquel cas la liste Actions est vide.

    Limites du système

    Le connecteur GitHub peut traiter deux transactions par seconde et par nœud, et limite les transactions au-delà de cette limite. Par défaut, les connecteurs d'intégration allouent deux nœuds (pour une meilleure disponibilité) à une connexion.

    Pour en savoir plus sur les limites applicables à Integration Connectors, consultez la section Limites.

    Action

    Cette section liste l'action prise en charge par le connecteur GitHub. Pour savoir comment configurer l'action, consultez la section Exemples d'actions.

    Action UpdatePullRequestBranch

    Cette action met à jour la branche de la demande d'extraction.

    Paramètres d'entrée de l'action UpdatePullRequestBranch

    Nom Type Description
    PullRequestId chaîne ID de nœud de la demande d'extraction.
    ExpectedHeadOid chaîne OID de la référence de tête pour la branche en amont.
    UpdateMethod chaîne Méthode de mise à jour de la branche à utiliser. La valeur par défaut est "MERGE". Les valeurs autorisées sont MERGE et REBASE.

    Paramètres de sortie de l'action AppsDeployStatus

    Cette action renvoie l'état 200 (OK) et met à jour la branche de la demande de tirage.

    Pour obtenir des exemples de configuration de l'action UpdatePullRequestBranch, consultez la section Exemples.

    Action MergePullRequest

    Cette action fusionne la demande d'extraction.

    Paramètres d'entrée de l'action MergePullRequest

    Nom Type Description
    PullRequestId chaîne ID du nœud de la demande d'extraction à fusionner.
    ExpectedHeadOid chaîne OID que la référence de tête de la demande de tirage doit correspondre pour permettre la fusion. Si cette option est omise, aucune vérification n'est effectuée.
    CommitHeadline chaîne Titre du commit à utiliser pour le commit de fusion. Si cet élément est omis, un message par défaut est utilisé.
    CommitBody chaîne Corps du commit à utiliser pour le commit de fusion. Si cet élément est omis, un message par défaut est utilisé.
    MergeMethod chaîne Méthode de fusion à utiliser. La valeur par défaut est "MERGE". Les valeurs autorisées sont MERGE, SQUASH et REBASE.
    AuthorEmail chaîne Adresse e-mail à associer à cette fusion.

    Paramètres de sortie de l'action MergePullRequest

    Cette action renvoie l'état 200 (OK) et fusionne la demande de tirage.

    Pour obtenir des exemples de configuration de l'action MergePullRequest, consultez la section Exemples.

    Exemples d'actions

    Cette section explique comment effectuer certaines actions dans ce connecteur.

    Exemple : UpdatePullRequestBranch

    Cet exemple récupère les états de déploiement de l'application.

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Action.
    2. Sélectionnez l'action UpdatePullRequestBranch, puis cliquez sur OK.
    3. Dans la section Task Input (Entrée de la tâche) de la tâche Connectors (Connecteurs), cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
            {
          "PullRequestId": "PR_kwDOLywhW8537gcA"
            } 
        
    4. Si l'action réussit, le paramètre de réponse connectorOutputPayload de la tâche UpdatePullRequestBranch aura une valeur semblable à celle-ci:

             {
          "pullrequestid": "PR_kwDOLywhW8537gcA"
             } 
        

    Exemple : MergePullRequest

    Cet exemple fusionne une demande de tirage.

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Action.
    2. Sélectionnez l'action MergePullRequest, puis cliquez sur OK.
    3. Dans la section Task Input (Entrée de la tâche) de la tâche Connectors (Connecteurs), cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
            {
          "PullRequestId": "PR_kwDOLywhW8537gcA",
          "CommitHeadline": "Google MERGE",
          "CommitBody": "This is Google Merge"
            }
        
    4. Si l'action réussit, le paramètre de réponse connectorOutputPayload de la tâche MergePullRequest aura une valeur semblable à celle-ci:

              {
          "pullrequestid": "PR_kwDOLywhW8537gcA"
              } 
        

    Exemples d'opérations d'entité

    Cette section explique comment effectuer certaines opérations d'entité dans ce connecteur.

    Exemple : Lister toutes les branches

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Branches dans la liste Entity.
    3. Sélectionnez l'opération List, puis cliquez sur OK.
    4. Dans la section Task Input (Entrée de la tâche) de la tâche Connectors (Connecteurs), vous pouvez définir la filterClause selon vos besoins.

    Exemple : Lister tous les commits

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Commits dans la liste Entity.
    3. Sélectionnez l'opération List, puis cliquez sur OK.
    4. Dans la section Task Input (Entrée de la tâche) de la tâche Connectors (Connecteurs), vous pouvez définir la filterClause selon vos besoins.

    Remarques

    • "Commits" est le nom de l'entité. Vous devez transmettre la valeur de la clause de filtre à l'aide de guillemets simples ('), par exemple City='Redwood City'. "Ville" est le nom de la colonne et "Redwood city" est la valeur.
    • Vous pouvez utiliser la clause de filtre pour filtrer les enregistrements en fonction des colonnes. Par exemple, s'il existe 20 enregistrements avec name = demo16975280986860, nous pouvons filtrer les enregistrements dont la colonne "Address" (Adresse) est "Redwood City" (Redwood City) et la région "us-east1".

    Vous pouvez effectuer l'opération "List" sur les entités suivantes:

    CommitComments, Forks, IssueComments, Issue, IssueAssignees, AssignableUser,Labels, Milestones, PullRequestReviews, PullRequests, PullRequestComments, ReleaseAssets, Releases, Watcher, Users, Repositories, Collaborators, OrganizationTeams, OrganizationsMannequins, OrganizationMember, Organization, Licenses, LicensePermission, LicenseLimitation, LicenseConditions, Projects, et PullRequestReviewRequests

    Exemple : Obtenir un enregistrement "Branches"

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Branches dans la liste Entity.
    3. Sélectionnez l'opération Get, puis cliquez sur OK.
    4. Ici, l'ID de l'entité est défini sur 4. Pour définir l'ID d'entité, dans la section Task Input (Entrée de la tâche) de la tâche Connectors (Connecteurs), cliquez sur EntityId, puis saisissez 4 dans le champ Default Value (Valeur par défaut).

    Exemple : Obtenir un enregistrement "Repositories"

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Repositories dans la liste Entity.
    3. Sélectionnez l'opération Get, puis cliquez sur OK.
    4. Définissez l'ID de l'entité sur 4, qui correspond à la clé à transmettre. Pour définir l'ID d'entité, dans la section Task Input (Entrée de la tâche) de la tâche Connectors (Connecteurs), cliquez sur EntityId, puis saisissez 4 dans le champ Default Value (Valeur par défaut).
    5. Dans certains cas, transmettre un seul ID d'entité peut entraîner une erreur en raison de deux clés composites. Dans ce cas, utilisez la clause de filtre avec les colonnes nécessaires.

      Pour les vues, l'opération Get ne fonctionne pas, car les vues n'ont pas de clés primaires. Vous pouvez plutôt utiliser l'opération List avec des filtres sur les vues, qui fonctionne de manière similaire à l'opération Get.

    Vous pouvez effectuer l'opération Get sur les entités suivantes:

    CommitComments, Commits, IssueAssignees, Labels, Milestones, PullRequestReviews, PullRequests, PullRequestComments, ReleaseAssets, Release, Topics, Users, Collaborators, Organizations et Licenses

    Exemple : Créer un enregistrement "Problèmes"

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Issues dans la liste Entity.
    3. Sélectionnez l'opération Create, puis cliquez sur OK.
    4. Dans la section Entrée de la tâche de la tâche Connecteurs, cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
           {
        "Title": "Google_Cloud_GitHub_Issues_Create",
        "Body": "Please check hence raising the Feature Request for the same."
           }
      

      L'exécution de cet exemple renvoie une réponse semblable à la suivante dans la variable de sortie connectorOutputPayload de la tâche de connecteur:

           {
        "Id": "I_kwDOLywhW86Sd-xF"
           } 
      

    Exemple : Créer un enregistrement PullRequests

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez PullRequests dans la liste Entity.
    3. Sélectionnez l'opération Create, puis cliquez sur OK.
    4. Dans la section Entrée de la tâche de la tâche Connecteurs, cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
           {
        "BaseRefName": "main",
        "HeadRefName": "New_Branch",
        "Title": "DEMO_Google_Cloud_PULLRequest",
        "Body": "This is demo Google_Cloud pull"
           }
      

      L'exécution de cet exemple renvoie une réponse semblable à la suivante dans la variable de sortie connectorOutputPayload de la tâche de connecteur:

            {
        "Id": "PR_kwDOLywhW8537gcA"
            }
      

    Exemple : Créer un enregistrement "Repositories"

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Repositories dans la liste Entity.
    3. Sélectionnez l'opération Create, puis cliquez sur OK.
    4. Dans la section Entrée de la tâche de la tâche Connecteurs, cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
           {
        "Name": "Google_Cloud_DEMO_REPO",
        "OwnerId": "O_kgDOCaxLsg",
        "Visibility": "PUBLIC"
           }
      

      L'exécution de cet exemple renvoie une réponse semblable à la suivante dans la variable de sortie connectorOutputPayload de la tâche de connecteur:

            {
        "Id": "R_kgDOMhWBEQ"
            } 
      

    Exemple : Mettre à jour un enregistrement "Problèmes"

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Issues dans la liste Entity.
    3. Sélectionnez l'opération Update, puis cliquez sur OK.
    4. Dans la section Entrée de la tâche de la tâche Connecteurs, cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
           {
        "Title": "New_Updated_Google_Cloud_Issue",
        "Body": "Newly Updated from Google_Cloud"
           }
      
    5. Définissez la valeur de entityId sur I_kwDOLywhW86Sd-xF. Pour définir la valeur de filterClause, cliquez sur entityId, puis saisissez I_kwDOLywhW86Sd-xF dans le champ Default Value (Valeur par défaut).

      L'exécution de cet exemple renvoie une réponse semblable à la suivante dans la variable de sortie connectorOutputPayload de la tâche de connecteur:

           {
        "Id": "I_kwDOLywhW86Sd-xF"
           }
      

    Exemple : Mettre à jour un enregistrement PullRequests

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez PullRequests dans la liste Entity.
    3. Sélectionnez l'opération Update, puis cliquez sur OK.
    4. Dans la section Entrée de la tâche de la tâche Connecteurs, cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
            {
        "Title": "Updated_Google_Cloud_PULL",
        "Body": "Update New pull Body"
            }
      
    5. Définissez la valeur de entityId sur PR_kwDOLywhW8537gcA. Pour définir la valeur de filterClause, cliquez sur entityId, puis saisissez PR_kwDOLywhW8537gcA dans le champ Default Value (Valeur par défaut).

      L'exécution de cet exemple renvoie une réponse semblable à la suivante dans la variable de sortie connectorOutputPayload de la tâche de connecteur:

            {
        "Id": "PR_kwDOLywhW8537gcA"
            } 
      

    Exemple : Mettre à jour un enregistrement "Dépôts"

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez Repositories dans la liste Entity.
    3. Sélectionnez l'opération Update, puis cliquez sur OK.
    4. Dans la section Entrée de la tâche de la tâche Connecteurs, cliquez sur connectorInputPayload, puis saisissez une valeur semblable à la suivante dans le champ Default Value:
            {
        "Name": "Updated_New_Google_Cloud_Repo"
            }
      
    5. Définissez la valeur de entityId sur R_kgDOMhWBEQ. Pour définir la valeur de filterClause, cliquez sur entityId, puis saisissez R_kgDOMhWBEQ dans le champ Default Value (Valeur par défaut).

      L'exécution de cet exemple renvoie une réponse semblable à la suivante dans la variable de sortie connectorOutputPayload de la tâche de connecteur:

            {
        "Id": "R_kgDOMhWBEQ"
            }
      

    Exemple : Supprimer un enregistrement PullRequestReviewRequests

    1. Dans la boîte de dialogue Configure connector task, cliquez sur Entities.
    2. Sélectionnez PullRequestReviewRequests dans la liste Entity.
    3. Sélectionnez l'opération Delete, puis cliquez sur OK.
    4. Définissez la valeur pour filterClause, cliquez sur filterClause, puis saisissez PullRequestId= 'PR_kwDOLywhW85yNWPa' and RequestedReviewerUserId= 'U_kgDOCebPLA' dans le champ Default Value (Valeur par défaut).
    5. Dans cet exemple, "PullRequestReviewRequests" est le nom du tableau, et la valeur de "filterClause" doit être transmise directement.
      Par exemple, PullRequestId= 'PR_kwDOLywhW85yNWPa' et RequestedReviewerUserId= 'U_kgDOCebPLA'.
      Ici, PullRequestId= 'PR_kwDOLywhW85yNWPa' et RequestedReviewerUserId= 'U_kgDOCebPLA' sont les valeurs de clé primaire uniques qui doivent être transmises.

    Utiliser la connexion GitHub dans une intégration

    Une fois la connexion créée, elle devient disponible à la fois dans Apigee Integration et Application Integration. Vous pouvez utiliser la connexion dans une intégration via la tâche Connecteurs.

    • Pour savoir comment créer et utiliser la tâche Connecteurs dans Apigee Integration, consultez la section Tâche Connecteurs.
    • Pour savoir comment créer et utiliser la tâche Connecteurs dans Application Integration, consultez la section Tâche Connecteurs.

    Obtenir de l'aide auprès de la communauté Google Cloud

    Vous pouvez publier vos questions et discuter de ce connecteur sur les forums Cloud de la communauté Google Cloud.

    Étape suivante