Concevoir et créer une tâche Python dans Cloud Run
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
Install the Google Cloud CLI.
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
Install the Google Cloud CLI.
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
Activez l'API Cloud Run Admin et l'API Cloud Build :
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Une fois l'API Cloud Run Admin activée, le compte de service Compute Engine par défaut est créé automatiquement.
-
Assurez-vous que le rôle Utilisateur du compte de service vous a été attribué pour l'identité de service. Par défaut, l'identité de service est le compte de service Compute Engine par défaut.
Attribuer les rôles
Pour accorder l'accès à la ressource d'identité de service, utilisez la commande
gcloud iam service-accounts add-iam-policy-binding
en remplaçant les variables en surbrillance par les valeurs appropriées :gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Remplacez les éléments suivants :
- SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service que vous utilisez comme identité de service, par exemple :
- Compte de service Compute Engine par défaut :
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Un compte de service que vous avez créé :
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- Compte de service Compute Engine par défaut :
- PRINCIPAL : identifiant de l'utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service que vous utilisez comme identité de service, par exemple :
- Attribuez 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 CloudetPROJECT_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.
- Consultez les tarifs de Cloud Run ou estimez les coûts à l'aide du simulateur de coût.
Créez un répertoire nommé
jobs
et modifiez les sous-répertoires comme suit :mkdir jobs cd jobs
Créez un fichier
main.py
pour le code de tâche réel. Copiez les exemples de lignes suivants :Les jobs Cloud Run permettent aux utilisateurs de spécifier le nombre de tâches que le job doit exécuter. Cet exemple de code montre comment utiliser la variable d'environnement
CLOUD_RUN_TASK_INDEX
intégrée. Chaque tâche correspond à une copie en cours d'exécution du conteneur. Notez que les tâches sont généralement exécutées en parallèle. L'utilisation de plusieurs tâches est pertinente si chacune d'elles peut traiter indépendamment un sous-ensemble de vos données.Chaque tâche connaît son index, stocké dans la variable d'environnement
CLOUD_RUN_TASK_INDEX
. La variable d'environnementCLOUD_RUN_TASK_COUNT
intégrée contient le nombre de tâches fournies au moment de l'exécution du job via le paramètre--tasks
.Le code présenté montre également comment relancer des tâches à l'aide de la variable d'environnement intégrée
CLOUD_RUN_TASK_ATTEMPT
, qui contient le nombre de tentatives d'exécution de cette tâche, commençant à 0 pour la première tentative et incrémentée de 1 pour chaque nouvelle tentative, jusqu'à--max-retries
.Le code vous permet également de générer des échecs afin de tester la répétition des tentatives et de générer des journaux d'erreurs afin que vous puissiez voir à quoi ils ressemblent.
Créez un fichier texte nommé
Procfile
sans extension de fichier et contenant les éléments suivants :Dans la console Google Cloud , accédez à Cloud Run :
Recherchez le job que vous souhaitez supprimer dans la liste des jobs, puis cliquez sur la case à cocher correspondante pour le sélectionner.
Cliquez sur Supprimer. Toutes les exécutions de jobs en cours et toutes les instances de conteneur en cours d'exécution sont alors arrêtées.
- 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.
Écrire l'exemple de tâche
Pour écrire une tâche en Python :
Votre code est terminé et prêt à être empaqueté dans un conteneur.
Créer un conteneur de jobs, l'envoyer à Artifact Registry et le déployer dans Cloud Run
Important : Dans ce guide de démarrage rapide, nous partons du principe que vous disposez de rôles de propriétaire ou d'éditeur dans le projet que vous utilisez pour les besoins du guide de démarrage rapide. Sinon, reportez-vous au rôle Développeur source Cloud Run afin de connaître les autorisations requises pour déployer une ressource Cloud Run depuis la source.
Ce guide de démarrage rapide utilise un déploiement à partir d'une source pour créer le conteneur, l'importer dans Artifact Registry et déployer le job dans Cloud Run :
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
où PROJECT_ID correspond à votre ID de projet et REGION à votre région, par exemple europe-west1
. Notez que vous pouvez remplacer les différents paramètres par les valeurs que vous souhaitez utiliser à des fins de test. SLEEP_MS
simule le travail et FAIL_RATE
entraîne l'échec de X
% des tâches afin que vous puissiez tester le parallélisme et réessayer les tâches ayant échoué.
Exécuter une tâche dans Cloud Run
Pour exécuter le job que vous venez de créer, procédez comme suit :
gcloud run jobs execute job-quickstart --region REGION
Remplacez REGION par la région que vous avez utilisée lors de la création et du déploiement du job (par exemple, europe-west1
).
Effectuer un nettoyage
Pour éviter que des frais supplémentaires ne soient facturés sur votre compte Google Cloud , supprimez toutes les ressources que vous avez déployées avec ce guide de démarrage rapide.
Supprimer votre dépôt
Cloud Run ne facture que la durée d'exécution de votre job. Toutefois, il se peut que des frais vous soient facturés pour le stockage de l'image de conteneur dans Artifact Registry. Pour supprimer des dépôts Artifact Registry, suivez les étapes décrites dans Supprimer des dépôts de la documentation Artifact Registry.
Supprimer votre job
Les jobs Cloud Run n'entraînent des coûts que lorsqu'une tâche de job est en cours d'exécution. Pour supprimer votre job Cloud Run, procédez comme suit :
Console
Pour supprimer une tâche, procédez comme suit :
gcloud
Pour supprimer un job, exécutez la commande suivante :
gcloud run jobs delete JOB_NAME
Remplacez JOB_NAME
par le nom de la tâche.
Supprimer votre projet de test
La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources de ce projet. Pour libérer toutes les ressources Google Cloud de votre projet, procédez comme suit :
Étapes suivantes
Pour savoir comment créer un conteneur à partir d'une source de code et le transférer vers un dépôt, consultez la section suivante :