Ce tutoriel vous explique comment écrire une fonction Cloud Run HTTP qui envoie une requête à BigQuery.
Objectifs
Au cours de ce tutoriel, vous allez :
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Configurez votre environnement de développement Cloud Run dans votre projet Google Cloud .
Si vous êtes soumis à une règle d'administration de restriction de domaine limitant les appels non authentifiés pour votre projet, vous devez accéder au service déployé comme décrit dans la section Tester les services privés.
-
Développeur de source Cloud Run (
roles/run.sourceDeveloper
) sur votre projet -
Consommateur d'utilisation du service (
roles/serviceusage.serviceUsageConsumer
) sur le service Cloud Run -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité du service -
Utilisateur de job BigQuery (
roles/bigquery.jobUser
) sur l'identité de service
Rôles requis
Pour obtenir les autorisations nécessaires pour déployer des services Cloud Run à partir de la source, demandez à votre administrateur de vous accorder les rôles IAM suivants :
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Rôles pour le compte de service Cloud Build
Vous ou votre administrateur devez attribuer le rôle IAM suivant au compte de service Cloud Build.
Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build
Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Créateur Cloud Run (roles/run.builder
) au compte de service Compute Engine par défaut sur votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Remplacez PROJECT_NUMBER
par le numéro de votre projet Google Cloudet PROJECT_ID
par l'ID de votre projet Google Cloud. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez la section Créer et gérer des projets.
L'attribution du rôle "Compilateur Cloud Run" au compte de service Compute Engine par défaut prend quelques minutes à se propager.
Préparer l'application
Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.
Accédez au répertoire qui contient l'exemple de code :
cd nodejs-docs-samples/functions/v2/helloBigQuery
Consultez l'exemple de code. L'exemple envoie une requête pour les mots qui se produisent au moins 400 fois dans l'ensemble de données spécifié, puis renvoie le résultat.
Déployer la fonction
Pour déployer la fonction avec un déclencheur HTTP :
Exécutez la commande suivante dans le répertoire contenant l'exemple de code :
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Remplacez :
FUNCTION par le nom de la fonction que vous déployez, par exemple
my-bigquery-function
. Vous pouvez omettre ce paramètre, mais dans ce cas le nom vous sera demandé.FUNCTION_ENTRYPOINT par le point d'entrée de votre fonction dans votre code source. Il s'agit du code que Cloud Run exécute lorsque votre fonction s'exécute. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source. Le point d'entrée que vous devez spécifier pour la fonction d'exemple est
helloBigQuery
.BASE_IMAGE par l'environnement d'image de base de votre fonction, par exemple
nodejs22
. Pour en savoir plus sur les images de base et les packages inclus dans chaque image, consultez Images de base des environnements d'exécution.REGION par la région dans laquelle vous souhaitez déployer votre fonction. Google CloudPar exemple,
europe-west1
.
Facultatif :
- Si vous créez une fonction HTTP publique, par exemple un webhook, spécifiez l'option
--allow-unauthenticated
. Cette option attribue le rôle Demandeur IAM Cloud Run à l'identifiant spécialallUser
. Vous pouvez utiliser IAM pour modifier ce paramètre ultérieurement après avoir créé le service.
Tester la fonction
Une fois le déploiement de la fonction terminé, copiez la propriété
uri
.Accédez à cet URI dans votre navigateur.
Une liste des mots correspondant aux critères de requête et le nombre d'occurrences de chaque mot dans l'ensemble de données cible doit s'afficher.
Effectuer un nettoyage
Pour éviter des frais supplémentaires sur votre compte Google Cloud , supprimez toutes les ressources que vous avez déployées avec ce tutoriel.
Supprimer le projet
Si vous avez créé un projet pour ce tutoriel, supprimez-le. Si vous avez utilisé un projet existant et que vous devez le conserver sans les modifications que vous avez ajoutées dans ce tutoriel, supprimez les ressources que vous avez créées pour ce tutoriel.
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer les ressources du tutoriel
Supprimez le service Cloud Run que vous avez déployé dans ce tutoriel. Les services Cloud Run n'entraînent pas de frais tant qu'ils ne reçoivent pas de requêtes.
Pour supprimer votre service Cloud Run, exécutez la commande suivante :
gcloud run services delete SERVICE-NAME
Remplacez SERVICE-NAME par le nom du service.
Vous pouvez également supprimer des services Cloud Run à partir de la consoleGoogle Cloud .
Supprimez la configuration régionale par défaut
gcloud
que vous avez ajoutée lors de la configuration du tutoriel :gcloud config unset run/region
Supprimez la configuration du projet :
gcloud config unset project