Se connecter aux ressources internes d'un réseau VPC

L'accès au VPC sans serveur vous permet de vous connecter directement à des instances de VM Compute Engine, à des instances Cloud Memorystore, à des instances Cloud SQL et à toute autre ressource possédant une adresse IP interne à partir de vos fonctions Cloud Functions. Cet accès s'avère utile dans les scénarios suivants :

  • Vous exécutez un service de backend sur un groupe d'instances géré dans Compute Engine et avez besoin de votre fonction pour communiquer avec ce service sans aucune exposition à l'Internet public.
  • Votre fonction utilise un logiciel tiers que vous exécutez sur une VM Compute Engine.
  • Vous exploitez Cloud Memorystore pour stocker des données relatives à vos fonctions Cloud Functions.
  • Votre fonction doit accéder aux données de votre base de données sur site via Cloud VPN.

Avec l'accès au VPC sans serveur, les requêtes envoyées depuis votre fonction vers des adresses IP internes (telles que définies par la RFC 1918) sont acheminées via un connecteur d'accès au VPC sans serveur à votre réseau VPC. Les requêtes envoyées à des adresses IP publiques sont acheminées via Internet. Comme les adresses IP internes ne sont accessibles que depuis les services Google Cloud Platform, leur utilisation évite d'exposer des ressources internes au réseau Internet public et améliore la latence des communications entre vos services.

L'accès au VPC sans serveur accepte la communication avec les réseaux VPC connectés via Cloud VPN et l'appairage de réseaux VPC. L'accès au VPC sans serveur n'est pas compatible avec les anciens réseaux ni avec les réseaux VPC partagés. Les connecteurs d'accès au VPC sans serveur entraînent des frais mensuels. Pour en savoir plus, consultez les tarifs de l'accès au VPC sans serveur.

Connexion au réseau VPC

Pour connecter Cloud Functions à votre réseau VPC, procédez comme suit :

  1. Créez un connecteur d'accès au VPC sans serveur.
  2. Accordez les autorisations appropriées à votre compte de service Cloud Functions.
  3. Configurez vos fonctions de sorte qu'elles utilisent le connecteur.

Un connecteur d'accès au VPC sans serveur doit se trouver dans le même projet et la même région que les fonctions qui l'utilisent, mais il peut envoyer du trafic à des ressources se trouvant dans des régions distinctes. Plusieurs fonctions peuvent exploiter le même connecteur. Pour en savoir plus sur les connecteurs, consultez la page Configurer l'accès au VPC sans serveur dans la documentation relative au VPC.

Créer un connecteur

Vous pouvez créer un connecteur depuis la console GCP ou à l'aide de l'outil de ligne de commande gcloud.

Console

  1. Accédez à la page de présentation de l'accès au VPC sans serveur :

    Accéder à l'accès au VPC sans serveur

  2. Cliquez sur Créer un connecteur.

  3. Dans le champ Nom, saisissez le nom du connecteur.

  4. Dans le champ Région, sélectionnez la région dans laquelle se trouve votre fonction.

  5. Dans le champ Réseau, sélectionnez le réseau VPC auquel vous souhaitez vous connecter.

  6. Dans le champ Plage d'adresses IP, saisissez une plage d'adresses IP CIDR /28 inutilisée. Les adresses figurant dans cette plage sont utilisées comme adresses sources pour le trafic envoyé via le connecteur. Cette plage d'adresses IP ne doit pas chevaucher les réservations d'adresses IP existantes sur votre réseau VPC.

  7. (Facultatif) Vous pouvez contrôler le débit du connecteur en définissant les valeurs des champs Débit minimal et Débit maximal.

  8. Cliquez sur Créer.

Une coche verte apparaît à côté du nom du connecteur lorsque celui-ci est prêt à être utilisé.

gcloud

  1. Activez l'API Serverless VPC Access pour votre projet à l'aide de la commande suivante :

    gcloud services enable vpcaccess.googleapis.com
    
  2. Créez un connecteur :

    gcloud beta compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Où :

    • CONNECTOR_NAME est le nom du connecteur.
    • VPC_NETWORK est le réseau VPC auquel vous souhaitez vous connecter.
    • REGION est la région dans laquelle se trouve votre fonction.
    • IP_RANGE est une plage d'adresses IP CIDR /28 inutilisée. Les adresses figurant dans cette plage sont utilisées comme adresses sources pour le trafic envoyé via le connecteur. Cette plage d'adresses IP ne doit pas chevaucher les réservations d'adresses IP existantes sur votre réseau VPC.
  3. Avant d'utiliser le connecteur, vérifiez qu'il est dans l'état READY :

    gcloud beta compute networks vpc-access connectors describe CONNECTOR_NAME --region REGION
    

    Le résultat doit contenir la ligne state: READY.

Si la création d'un connecteur entraîne une erreur, suivez la procédure suivante et recréez votre connecteur :

  • Spécifiez une plage d'adresses IP qui ne chevauche pas les réservations d'adresses IP existantes sur le réseau VPC.
  • Accordez à votre projet l'autorisation d'utiliser les images de VM Compute Engine du projet avec l'ID serverless-vpc-access-images. Consultez la page Définir des contraintes d'accès aux images pour savoir comment mettre à jour votre règle d'administration en conséquence.

Configurer des autorisations

Pour que votre fonction puisse utiliser un connecteur d'accès au VPC sans serveur, le compte de service Cloud Functions de votre projet doit disposer des autorisations appropriées. Vous n'avez besoin d'accorder ces autorisations qu'une fois par projet. Pour ce faire, procédez comme suit :

Console

  1. Accédez à la page IAM dans la console Google Cloud Platform :

    Accéder à IAM

  2. Recherchez l'entrée Agent de service Cloud Functions.

  3. Cliquez sur l'icône en forme de crayon pour modifier les autorisations.

  4. Cliquez sur Ajouter un autre rôle.

  5. Sélectionnez Projet > Lecteur.

  6. Cliquez sur Ajouter un autre rôle.

  7. Sélectionnez Compute Engine > Utilisateur de réseau Compute.

  8. Cliquez sur Enregistrer.

gcloud

  1. Exécutez la commande suivante pour rechercher votre numéro de projet, en remplaçant PROJECT_ID par votre ID de projet GCP :

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Attribuez le rôle viewer à l'agent de service Cloud Functions (service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com) :

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/viewer
    

    PROJECT_NUM est le numéro de projet obtenu à l'étape 1.

  3. Attribuez le rôle compute.networkUser à l'agent de service Cloud Functions :

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/compute.networkUser
    

Configurer une fonction de sorte qu'elle utilise un connecteur

Une fois que vous avez créé un connecteur d'accès au VPC sans serveur et défini les autorisations appropriées, vous pouvez configurer vos fonctions de sorte qu'elles utilisent le connecteur. Plusieurs fonctions peuvent exploiter le même connecteur pour atteindre un même réseau VPC, tant qu'elles se trouvent dans la même région.

Pour connecter votre fonction à un connecteur, spécifiez le nom du connecteur lorsque vous déployez la fonction :

Console

  1. Accédez à la page de présentation de Cloud Functions dans la console GCP :

    Accéder à Cloud Functions

  2. Cliquez sur Create function.

  3. Renseignez les champs obligatoires de votre fonction.

  4. Développez les paramètres avancés en cliquant sur Plus.

  5. Dans le champ Connecteur VPC, saisissez le nom complet de votre connecteur au format suivant :

    projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    où :

    • PROJECT_ID est l'ID de votre projet GCP.
    • REGION est la région que vous avez choisie pour le connecteur. Notez que votre connecteur et votre fonction doivent se trouver dans la même région.
    • CONNECTOR_NAME est le nom du connecteur.
  6. Cliquez sur Créer.

gcloud

Exécutez la commande gcloud beta functions deploy pour déployer la fonction et spécifiez l'indicateur --vpc-connector :

gcloud beta functions deploy FUNCTION_NAME \
--vpc-connector projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \
FLAGS...

où :

  • FUNCTION_NAME est le nom de la fonction.
  • PROJECT_ID correspond à votre ID de projet GCP.
  • REGION est la région que vous avez choisie pour le connecteur. Notez que votre connecteur et votre fonction doivent se trouver dans la même région.
  • CONNECTOR_NAME est le nom du connecteur.
  • FLAGS... fait référence aux autres indicateurs que vous transmettez lors du déploiement de la fonction.

Une fois votre fonction déployée, celle-ci peut envoyer des requêtes aux adresses IP internes afin d'accéder aux ressources de votre réseau VPC.

Déconnecter une fonction d'un connecteur

Si votre fonction n'a plus besoin de se connecter à votre réseau VPC, vous pouvez déconnecter le connecteur d'accès au VPC sans serveur.

Pour déconnecter votre fonction d'un connecteur, supprimez ce dernier de la configuration de la fonction :

Console

  1. Accédez à la page de présentation de Cloud Functions dans la console GCP :

    Accéder à Cloud Functions

  2. Cliquez sur le nom d'une fonction existante pour accéder à ses détails.

  3. Cliquez sur Edit (Modifier).

  4. Développez les paramètres avancés en cliquant sur Plus.

  5. Effacez le champ Connecteur VPC.

  6. Cliquez sur Déployer.

gcloud

Exécutez la commande gcloud beta functions deploy pour mettre à jour votre fonction et spécifiez l'indicateur --clear-vpc-connector :

gcloud beta functions deploy FUNCTION_NAME --clear-vpc-connector

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Cloud Functions Documentation