Organizar recursos com rótulos

Esta página mostra como adicionar e visualizar rótulos nos recursos da API Transcoder. Os rótulos são pares de chave-valor que você pode usar para organizar recursos. Você pode anexar um rótulo a recursos individuais e filtrar os recursos com base nos rótulos deles. As informações sobre os rótulos são encaminhadas ao sistema de faturamento para que você possa classificar as cobranças de faturamento por rótulo.

É possível adicionar rótulos ao criar jobs e modelos de job da API Transcoder. Se você criar um job com base em um modelo que contém identificadores, o job vai ter os mesmos identificadores do modelo. Para substituir os rótulos do modelo de job, especifique-os diretamente no job.

Os rótulos estão disponíveis por meio das APIs REST ou RPC. Os rótulos não estão disponíveis na CLI do Google Cloud ou no console Google Cloud .

Requisitos de rótulo

Os rótulos aplicados a um recurso precisam atender aos seguintes requisitos:

  • Cada recurso pode ter vários rótulos, até um máximo de 64.
  • Cada rótulo precisa ser um par de chave-valor.
  • As chaves têm comprimento mínimo de 1 e máximo de 63 caracteres. Além disso, elas não podem estar vazias. Os valores podem estar vazios e ter um comprimento máximo de 63 caracteres.
  • As chaves e valores contêm apenas letras minúsculas, caracteres numéricos, sublinhados e traços. Todos os caracteres precisam usar a codificação UTF-8, e os caracteres internacionais são permitidos.
  • A chave de um rótulo precisa ser exclusiva em um único recurso, mas você pode usar a mesma chave com vários recursos.
  • As chaves precisam começar com uma letra minúscula ou um caractere internacional.

Como adicionar um rótulo a um job

O exemplo a seguir mostra como adicionar um rótulo ao criar uma nova tarefa. Por exemplo, você pode usar um rótulo para indicar que o job será usado em um ambiente de teste. A chave do rótulo será environment e o valor será test.

Para criar o job, use o método projects.locations.jobs.create.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto Google Cloud listado nas Configurações do IAM.
  • LOCATION: o local onde seu job será executado. Use uma das regiões com suporte.
    Mostrar locais
    • 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: o nome do bucket do Cloud Storage criado.
  • STORAGE_INPUT_VIDEO: o nome do vídeo no bucket do Cloud Storage que você está transcodificando, como my-vid.mp4. Este campo precisa considerar todas as pastas que você criou no bucket (por exemplo, input/my-vid.mp4).
  • STORAGE_OUTPUT_FOLDER: nome da pasta do Cloud Storage em que você quer salvar as saídas de vídeo codificadas.

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

 {   "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 adicionar vários rótulos, separe-os com uma vírgula.

Como listar e filtrar por rótulos

É possível listar recursos e filtrá-los por rótulos. Por exemplo, depois de adicionar um rótulo a um job, você pode listar os jobs em um determinado local e filtrar pelos rótulos adicionados. O exemplo a seguir lista os jobs e filtra aqueles que não contêm o rótulo "environment": "test".

Para listar os jobs, use o método projects.locations.jobs.list. O filtro a seguir é anexado ao URL: ?filter=labels.environment:test.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud .
  • LOCATION: o local dos jobs. Use uma das regiões com suporte.
    Mostrar locais
    • 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 a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

     {   "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"       }     }   ] }