Crear y ejecutar una tarea de ejemplo

Aprende a crear y ejecutar un trabajo de procesamiento por lotes de ejemplo que transcodifica vídeos mediante Batch para Google Cloud.


Para seguir las instrucciones paso a paso de esta tarea directamente en la Google Cloud consola, haga clic en Ayúdame:

Guíame


Antes de empezar

  1. 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.
  2. Install the Google Cloud CLI.

  3. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Create or select 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Batch, Compute Engine, Logging and Cloud Storage APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  8. Install the Google Cloud CLI.

  9. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  10. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  11. Create or select 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Batch, Compute Engine, Logging and Cloud Storage APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  14. Asegúrate de que tú y la cuenta de servicio del trabajo tengáis los permisos necesarios para completar este tutorial. En este tutorial se usa la cuenta de servicio predeterminada de una tarea, que es la cuenta de servicio predeterminada de Compute Engine.

    • Para obtener los permisos que necesitas para completar este tutorial, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

      Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

      También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

    • Para asegurarte de que la cuenta de servicio predeterminada de Compute Engine tiene los permisos necesarios para completar este tutorial, pide a tu administrador que le conceda los siguientes roles de IAM:

      • Reporter de agente de Batch (roles/batch.agentReporter) en el proyecto
      • Para permitir que los trabajos accedan a los segmentos de Cloud Storage, haz lo siguiente: Administrador de Storage (roles/storage.admin) en el proyecto
      • Para permitir que los trabajos generen registros en Logging, haz lo siguiente: Editor de registros (roles/logging.logWriter) en el proyecto

  15. Clona el repositorio de Git por lotes en el directorio actual:
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
  16. Ve al directorio transcoding:
    cd batch-samples/transcoding/
  17. Preparar las entradas de la tarea

    1. Crea un segmento de Cloud Storage:

      gcloud storage buckets create gs://BUCKET_NAME
      

      Sustituye BUCKET_NAME por un nombre único a nivel global para el segmento.

      El resultado debería ser similar al siguiente:

      Creating gs://BUCKET_NAME/...
      
    2. Copia la secuencia de comandos transcode.sh y la carpeta que contiene los archivos de vídeo en tu segmento de Cloud Storage:

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

      El resultado debería ser similar al siguiente:

      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
      

    Crear una tarea

    1. Abre el archivo de configuración job.json en el editor de texto que prefieras.

    2. Asigne al campo remotePath el nombre de su segmento de 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. Guarda los cambios y cierra el editor de texto.

    4. Crea el trabajo transcode:

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

      El resultado debería ser similar al siguiente:

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

      El trabajo ejecuta 3 tareas simultáneamente. Cada tarea ejecuta la secuencia de comandos transcode.sh, que codifica uno de los tres archivos de vídeo y lo sube al segmento de Cloud Storage.

    Monitorizar la tarea

    1. En la Google Cloud consola, ve a la página Lista de tareas.

      Ir a la lista de tareas

    2. En la columna Nombre del trabajo, haz clic en transcodificar.

      Se abrirá la página Detalles del trabajo.

    3. Haga clic en la pestaña Eventos.

      En la sección Lista de eventos, puede monitorizar el estado del transcode trabajo. El tiempo que tarda un trabajo en completar las fases de puesta en cola, programación y ejecución varía en función de varios factores. En este ejemplo, el trabajo se completará en unos 5 minutos.

    4. Opcional: Para actualizar la página, haz clic en Actualizar.

    Antes de continuar con el paso siguiente, comprueba que el estado del trabajo sea Succeeded. Si el trabajo falla, consulta la sección Solución de problemas.

    Ver los vídeos codificados

    1. En la Google Cloud consola, ve a la página Buckets.

      Ir a Contenedores

    2. En la columna Nombre, haga clic en BUCKET_NAME.

      Se abrirá la página Detalles del segmento.

    3. En la columna Nombre, haz clic en output/ y, a continuación, en uno de los archivos de vídeo codificados.

      Se abrirá la página Detalles del objeto.

    4. Para ver el vídeo codificado, haz clic en Vista previa y, a continuación, en Reproducir.

    Limpieza

    Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.

    Eliminar el proyecto

    La forma más fácil de evitar que te cobren es eliminar el proyecto que has utilizado en este tutorial.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    Eliminar recursos concretos

    Si quieres seguir usando el proyecto actual, elimina los recursos que se han utilizado en este tutorial.

    Eliminar el trabajo

    Una vez que se haya ejecutado la tarea por lotes, elimina la tarea transcode:

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

    El resultado debería ser similar al siguiente:

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

    Si eliminas un trabajo, también se eliminarán sus detalles y su historial. Los registros del trabajo se eliminan automáticamente al final del periodo de conservación de registros de Cloud Logging.

    Eliminar el segmento

    Si ya no necesitas el segmento de Cloud Storage que has usado en este tutorial ni su contenido, elimínalo:

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

    El resultado debería ser similar al siguiente:

    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
    

    Eliminar el repositorio de Git

    Si ya no necesitas el repositorio de Git de Batch que clonaste para este tutorial, puedes eliminarlo:

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

    Siguientes pasos