Organizar recursos con etiquetas

En esta página se muestra cómo añadir y ver etiquetas en los recursos de la API Transcoder. Las etiquetas son pares clave-valor que puede usar para organizar los recursos. Puedes asignar etiquetas a recursos concretos y, después, filtrar los recursos en función de sus etiquetas. La información relacionada con las etiquetas se reenvía al sistema de facturación para que puedas desglosar los cargos de facturación por etiquetas.

Puede añadir etiquetas al crear tareas y plantillas de tareas de la API Transcoder. Si creas un trabajo a partir de una plantilla de trabajo que contiene etiquetas, el trabajo tendrá las mismas etiquetas que la plantilla de trabajo. Para anular las etiquetas de la plantilla de tarea, puedes especificar directamente las etiquetas en la tarea.

Las etiquetas están disponibles mediante las APIs REST o RPC. Las etiquetas no están disponibles en la consola de Google Cloud ni en la CLI. Google Cloud

Requisitos de las etiquetas

Las etiquetas aplicadas a un recurso deben cumplir los siguientes requisitos:

  • Cada recurso puede tener varias etiquetas, hasta un máximo de 64.
  • Cada etiqueta debe ser un par clave-valor.
  • Las claves deben tener como mínimo 1 carácter y como máximo 63 caracteres, y no pueden estar vacías. Los valores pueden estar vacíos y tener una longitud máxima de 63 caracteres.
  • Las claves y los valores solo pueden contener letras minúsculas, caracteres numéricos, guiones bajos y guiones. Todos los caracteres deben usar la codificación UTF-8 y se pueden usar caracteres internacionales.
  • La clave de una etiqueta debe ser única en un solo recurso, pero puedes usar la misma clave con varios recursos.
  • Las claves deben empezar por una letra minúscula o un carácter internacional.

Añadir una etiqueta a un trabajo

En el siguiente ejemplo se muestra cómo añadir una etiqueta al crear un trabajo. Por ejemplo, puedes usar una etiqueta para indicar que el trabajo se usará en un entorno de prueba. La clave de la etiqueta sería environment y el valor, test.

Para crear el trabajo, usa el método projects.locations.jobs.create.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: ID de tu proyecto Google Cloud que aparece en la sección Configuración de IAM.
  • LOCATION: la ubicación en la que se ejecutará el trabajo. Utiliza una de las regiones admitidas.
    Mostrar ubicaciones
    • us-central1
    • us-west1
    • us-west2
    • us-east1
    • us-east4
    • southamerica-east1
    • northamerica-northeast1
    • asia-east1
    • asia-northeast1
    • asia-northeast3
    • asia-south1
    • asia-southeast1
    • australia-southeast1
    • europe-west1
    • europe-west2
    • europe-west4
    • me-west1
    • me-central1
    • me-central2
  • STORAGE_BUCKET_NAME: nombre del segmento de Cloud Storage que has creado.
  • STORAGE_INPUT_VIDEO: el nombre del vídeo de tu cubo de Cloud Storage que quieres transcodificar, como my-vid.mp4. En este campo se deben tener en cuenta las carpetas que hayas creado en el contenedor (por ejemplo, input/my-vid.mp4).
  • STORAGE_OUTPUT_FOLDER: nombre de la carpeta de Cloud Storage en la que quieres guardar las salidas de vídeo codificadas.

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
  "config": {
    "inputs": [
      {
        "key": "input0",
        "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
      }
    ],
    "editList": [
      {
        "key": "atom0",
        "inputs": [
          "input0"
        ],
        "startTimeOffset": "0s"
      }
    ],
    "elementaryStreams": [
      {
        "videoStream": {
          "h264": {
            "widthPixels": 640,
            "heightPixels": 360,
            "frameRate": 30,
            "bitrateBps": 550000,
            "pixelFormat": "yuv420p",
            "rateControlMode": "vbr",
            "crfLevel": 21,
            "gopDuration": "3s",
            "vbvSizeBits": 550000,
            "vbvFullnessBits": 495000,
            "entropyCoder": "cabac",
            "bFrameCount": 3,
            "aqStrength": 1,
            "profile": "high",
            "preset": "veryfast"
          }
        },
        "key": "video-stream0"
      },
      {
        "videoStream": {
          "h264": {
            "widthPixels": 1280,
            "heightPixels": 720,
            "frameRate": 30,
            "bitrateBps": 2500000,
            "pixelFormat": "yuv420p",
            "rateControlMode": "vbr",
            "crfLevel": 21,
            "gopDuration": "3s",
            "vbvSizeBits": 2500000,
            "vbvFullnessBits": 2250000,
            "entropyCoder": "cabac",
            "bFrameCount": 3,
            "aqStrength": 1,
            "profile": "high",
            "preset": "veryfast"
          }
        },
        "key": "video-stream1"
      },
      {
        "audioStream": {
          "codec": "aac",
          "bitrateBps": 64000,
          "channelCount": 2,
          "channelLayout": [
            "fl",
            "fr"
          ],
          "sampleRateHertz": 48000
        },
        "key": "audio-stream0"
      }
    ],
    "muxStreams": [
      {
        "key": "sd",
        "fileName": "sd.mp4",
        "container": "mp4",
        "elementaryStreams": [
          "video-stream0",
          "audio-stream0"
        ]
      },
      {
        "key": "hd",
        "fileName": "hd.mp4",
        "container": "mp4",
        "elementaryStreams": [
          "video-stream1",
          "audio-stream0"
        ]
      },
      {
        "key": "media-sd",
        "fileName": "media-sd.ts",
        "container": "ts",
        "elementaryStreams": [
          "video-stream0",
          "audio-stream0"
        ]
      },
      {
        "key": "media-hd",
        "fileName": "media-hd.ts",
        "container": "ts",
        "elementaryStreams": [
          "video-stream1",
          "audio-stream0"
        ]
      },
      {
        "key": "video-only-sd",
        "fileName": "video-only-sd.m4s",
        "container": "fmp4",
        "elementaryStreams": [
          "video-stream0"
        ]
      },
      {
        "key": "video-only-hd",
        "fileName": "video-only-hd.m4s",
        "container": "fmp4",
        "elementaryStreams": [
          "video-stream1"
        ]
      },
      {
        "key": "audio-only",
        "fileName": "audio-only.m4s",
        "container": "fmp4",
        "elementaryStreams": [
          "audio-stream0"
        ]
      }
    ],
    "manifests": [
      {
        "fileName": "manifest.m3u8",
        "type": "HLS",
        "muxStreams": [
          "media-sd",
          "media-hd"
        ]
      },
      {
        "fileName": "manifest.mpd",
        "type": "DASH",
        "muxStreams": [
          "video-only-sd",
          "video-only-hd",
          "audio-only"
        ]
      }
    ],
    "output": {
      "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
    }
  },
  "state": "PENDING",
  "createTime": CREATE_TIME,
  "ttlAfterCompletionDays": 30,
  "labels": {
    "environment": "test"
  }
}

Para añadir varias etiquetas, sepáralas con comas.

Listar y filtrar por etiquetas

Puedes enumerar los recursos y filtrarlos por sus etiquetas. Por ejemplo, después de añadir una etiqueta a un trabajo, puedes enumerar los trabajos de una ubicación determinada y filtrar por las etiquetas que hayas añadido. En el siguiente ejemplo se muestran los trabajos y se excluyen los que no contienen la etiqueta "environment": "test".

Para enumerar los trabajos, usa el método projects.locations.jobs.list. El siguiente filtro se añade a la URL: ?filter=labels.environment:test.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto Google Cloud .
  • LOCATION: la ubicación de tus empleos. Utiliza una de las regiones admitidas.
    Mostrar ubicaciones
    • us-central1
    • us-west1
    • us-west2
    • us-east1
    • us-east4
    • southamerica-east1
    • northamerica-northeast1
    • asia-east1
    • asia-northeast1
    • asia-northeast3
    • asia-south1
    • asia-southeast1
    • australia-southeast1
    • europe-west1
    • europe-west2
    • europe-west4
    • me-west1
    • me-central1
    • me-central2
  • Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "jobs": [
        {
          "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/MY_JOB",
          "config": {
            ....
           },
          "state": "PENDING",
          "createTime": CREATE_TIME,
          "ttlAfterCompletionDays": 30,
          "labels": {
            "environment": "test"
          }
        },
        {
          "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/MY_OTHER_JOB",
          "config": {
            ....
           },
          "state": "SUCCEEDED",
          "createTime": CREATE_TIME,
          "startTime": START_TIME,
          "endTime": END_TIME,
          "ttlAfterCompletionDays": 30,
          "labels": {
            "environment": "test"
          }
        }
      ]
    }