Créer et exécuter un exemple de job

Découvrez comment créer et exécuter un exemple de job de traitement par lot qui transcode des vidéos à l'aide de Batch pour Google Cloud.


Pour obtenir des instructions détaillées sur cette tâche directement dans la Google Cloud console, cliquez sur Visite guidée:

Visite guidée


Avant de commencer

  1. Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. Installez la Google Cloud CLI.

  3. 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.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Créez ou sélectionnez un Google Cloud projet.

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous avez besoin du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un Google Cloud projet :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du Google Cloud projet que vous créez.

    • Sélectionnez le Google Cloud projet que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre Google Cloud projet.

  6. Vérifiez que la facturation est activée pour votre Google Cloud projet.

  7. Activez les API Batch, Compute Engine, Logging et Cloud Storage :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur de Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l' serviceusage.services.enable autorisation. Découvrez comment attribuer des rôles.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  8. Installez la Google Cloud CLI.

  9. 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.

  10. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  11. Créez ou sélectionnez un Google Cloud projet.

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous avez besoin du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un Google Cloud projet :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du Google Cloud projet que vous créez.

    • Sélectionnez le Google Cloud projet que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre Google Cloud projet.

  12. Vérifiez que la facturation est activée pour votre Google Cloud projet.

  13. Activez les API Batch, Compute Engine, Logging et Cloud Storage :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur de Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l' serviceusage.services.enable autorisation. Découvrez comment attribuer des rôles.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  14. Assurez-vous que vous et le compte de service du job disposez des autorisations requises pour suivre ce tutoriel. Ce tutoriel utilise le compte de service par défaut pour un job, qui est le compte de service Compute Engine par défaut.

    • Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants :

      Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

      Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

    • Pour vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur d'attribuer les rôles IAM suivants au compte de service Compute Engine par défaut :

  15. Clonez le dépôt Git de Batch dans le répertoire actuel :
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
  16. Accédez au répertoire transcoding :
    cd batch-samples/transcoding/

Préparer les entrées du job

  1. Créez un bucket Cloud Storage :

    gcloud storage buckets create gs://BUCKET_NAME
    

    Remplacez BUCKET_NAME par un nom de bucket unique.

    Le résultat ressemble à ce qui suit :

    Creating gs://BUCKET_NAME/...
    
  2. Copiez le script transcode.sh et le dossier contenant les fichiers vidéo dans votre bucket Cloud Storage :

    gcloud storage cp -R transcode.sh input gs://BUCKET_NAME
    

    Le résultat ressemble à ce qui suit :

    Copying file://transcode.sh to gs://BUCKET_NAME/transcode.sh
    Copying file://input/video-2.mp4 to gs://BUCKET_NAME/input/video-2.mp4
    Copying file://input/video-1.mp4 to gs://BUCKET_NAME/input/video-1.mp4
    Copying file://input/video-0.mp4 to gs://BUCKET_NAME/input/video-0.mp4
      Completed files 4/4 | 37.5MiB/37.5MiB
    
    Average throughput: 48.4MiB/s
    

Créer un job

  1. Dans l'éditeur de texte de votre choix, ouvrez le fichier de configuration job.json.

  2. Définissez la valeur du champ remotePath sur le nom de votre bucket Cloud Storage :

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "bash /mnt/share/transcode.sh"
                }
              }
            ],
            "computeResource": {
              "cpuMilli": 2000,
              "memoryMib": 2048
            },
            "volumes": [
              {
                "gcs": {
                  "remotePath": "BUCKET_NAME"
                },
                "mountPath": "/mnt/share"
              }
            ],
            "maxRetryCount": 2,
            "maxRunDuration": "600s"
          },
          "taskCount": 3,
          "parallelism": 3
        }
      ],
      "allocationPolicy": {
        "instances": [
          {
            "policy": {
              "machineType": "n2d-standard-4",
              "provisioningModel": "SPOT"
            }
          }
        ]
      },
      "labels": {
        "department": "creative",
        "env": "testing"
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  3. Enregistrez les modifications et fermez l'éditeur de texte.

  4. Créez le job transcode :

    gcloud batch jobs submit transcode \
        --config=job.json \
        --location=us-central1
    

    Le résultat ressemble à ce qui suit :

    Job transcode-7a1654ca-211c-40e8-b0fb-8a00 was successfully submitted.
    ...
    

    Le job exécute trois tâches simultanément. Chaque tâche exécute le script transcode.sh, qui encode l'un des trois fichiers vidéo et l'importe dans le bucket Cloud Storage.

Surveiller le job

  1. Dans la Google Cloud console, accédez à la page Job list (Liste des jobs).

    Accéder à la liste des jobs

  2. Dans la colonne Job name (Nom du job), cliquez sur transcode.

    La page Job details (Détails du job) s'ouvre alors.

  3. Cliquez sur l'onglet Events (Événements).

    Dans la section Events list (Liste des événements), vous pouvez surveiller l'état du job transcode. Le temps nécessaire à la mise en file d'attente, à la planification et à l'exécution d'un job varie en fonction de plusieurs facteurs. Dans cet exemple, vous pouvez vous attendre à ce que le job soit terminé en environ cinq minutes.

  4. Facultatif : Pour mettre à jour la page, cliquez sur Actualiser.

Avant de passer à l'étape suivante, assurez-vous que l'état du job soit défini sur Réussi. Si votre job échoue, consultez plutôt la section Dépannage.

Afficher les vidéos encodées

  1. Dans la Google Cloud console, accédez à la page Buckets.

    Accéder à la page "Buckets"

  2. Dans la colonne Name (Nom), cliquez sur BUCKET_NAME.

    La page Bucket details (Détails du bucket) s'ouvre alors.

  3. Dans la colonne Name (Nom), cliquez output/, puis sur l'un des fichiers vidéo encodés.

    La page Object details (Détails de l'objet) s'affiche.

  4. Pour afficher la vidéo encodée, cliquez sur Aperçu, puis sur Lire.

Libérer de l'espace

Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre Google Cloud compte pour les ressources utilisées sur cette page, supprimez le Google Cloud projet qui les contient.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez utilisé dans ce tutoriel.

Supprimez un Google Cloud projet :

gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

Si vous souhaitez continuer à utiliser le projet actuel, supprimez les ressources individuelles utilisées dans ce tutoriel.

Supprimer le job

Une fois le job par lot terminé, supprimez le job transcode :

gcloud batch jobs delete transcode \
    --location=us-central1

Le résultat ressemble à ce qui suit :

Job projects/example-project/locations/us-central1/jobs/transcode deletion is in progress

La suppression d'un job entraîne également la suppression de ses détails et de son historique. Les journaux du job sont automatiquement supprimés à la fin de la période de conservation des journaux Cloud Logging.

Supprimer le bucket

Si vous n'avez plus besoin du bucket Cloud Storage que vous avez utilisé dans ce tutoriel ni de son contenu, supprimez-le :

gcloud storage rm gs://BUCKET_NAME \
    --recursive

Le résultat ressemble à ce qui suit :

Removing objects:
Removing gs://BUCKET_NAME/input/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/input/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/input/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/output/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/output/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/output/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/transcode.sh#1694788495039427...
  Completed 4/4
Removing Buckets:
Removing gs://BUCKET_NAME/...
  Completed 1/1

Supprimer le dépôt Git

Si vous n'avez plus besoin du dépôt Git de Batch que vous avez cloné pour ce tutoriel, vous pouvez le supprimer :

cd ../../ && rm -rf batch-samples

Étape suivante