Criar e gerenciar jobs de operação em lote

Nesta página, descrevemos como criar, visualizar, listar, cancelar e excluir jobs de operações em lote de armazenamento. Também descreve como usar os registros de auditoria do Cloud com trabalhos de operações em lote de armazenamento.

Antes de começar

Para criar e gerenciar jobs de operações em lote de armazenamento, siga as etapas nas seções a seguir.

Configurar o Storage Intelligence

Para criar e gerenciar jobs de operações em lote de armazenamento, configure o Storage Intelligence no bucket em que você quer executar o job.

Configurar a Google Cloud CLI

É necessário usar a Google Cloud CLI versão 516.0.0 ou mais recente.

Definir o projeto padrão

Defina o projeto em que você quer criar o job de operações em lote de armazenamento.

gcloud config set project PROJECT_ID

onde PROJECT_ID é o código de seu projeto.

Ativar API

Ative a API de operações em lote de armazenamento.

gcloud services enable storagebatchoperations.googleapis.com

Criar um manifesto

Para usar um manifesto para seleção de objetos, crie um manifesto.

Criar um job de operações em lote de armazenamento

Nesta seção, descrevemos como criar um job de operações em lote de armazenamento.

Linha de comando

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. No ambiente de desenvolvimento, execute o comando gcloud storage batch-operations jobs create.

    gcloud storage batch-operations jobs create JOB_NAME --bucket=BUCKET_NAME OBJECT_SELECTION_FLAG JOB_TYPE_FLAG

    Em que:

    • JOB_NAME é o nome do job de operações em lote de armazenamento.
    • BUCKET_NAME é o nome do bucket que contém um ou mais objetos que você quer processar.
    • OBJECT_SELECTION_FLAG é uma das seguintes flags:

      • --included-object-prefixes: especifique um ou mais prefixos de objeto. Exemplo:

        • Para corresponder a um único prefixo, use: --included-object-prefixes='prefix1'.
        • Para corresponder a vários prefixos, use uma lista separada por vírgulas: --included-object-prefixes='prefix1,prefix2'.
        • Para incluir todos os objetos, use um prefixo vazio: --included-object-prefixes=''.
      • --manifest-location: especifique o local do manifesto. Por exemplo, gs://bucket_name/path/object_name.csv.

    • JOB_TYPE_FLAG é uma das seguintes flags, dependendo do tipo de job.

APIs REST

API JSON

  1. Ter CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Crie um arquivo JSON com as configurações do job de operações em lote do Storage. Veja a seguir configurações comuns a serem incluídas:

    {
        "Description": "JOB_DESCRIPTION",
        "BucketList":
        {
        "Buckets":
        [
         {
           "Bucket": "BUCKET_NAME",
           "Manifest": {
              "manifest_location": "MANIFEST_LOCATION"
               }
           "PrefixList": {
              "include_object_prefixes": "OBJECT_PREFIXES"
               }
         }
        ]
        },
        "DeleteObject":
        {
        "permanent_object_deletion_enabled": OBJECT_DELETION_VALUE
         }
        "RewriteObject": {
          "kms_key":"KMS_KEY_VALUE"
          }
        "PutMetadata": {
          METADATA_KEY= METADATA_VALUE,
          ...,
          }
        "PutObjectHold": {
          "temporary_hold": TEMPORARY_HOLD_VALUE,
          "event_based_hold": EVENT_BASED_HOLD_VALUE
        }
     }
         

    Em que:

    • JOB_NAME é o nome do job de operações em lote de armazenamento.

    • JOB_DESCRIPTION é a descrição do job de operações em lote de armazenamento.

    • BUCKET_NAME é o nome do bucket que contém um ou mais objetos que você quer processar.

    • Para especificar os objetos que você quer processar, use um dos seguintes atributos no arquivo JSON:

      • MANIFEST_LOCATION é o local do manifesto. Por exemplo, gs://bucket_name/path/object_name.csv.

      • OBJECT_PREFIXES é a lista separada por vírgulas que contém um ou mais prefixos de objeto. Para corresponder a todos os objetos, use uma lista vazia.

    • Dependendo do job que você quer processar, especifique uma das seguintes opções:

      • Excluir objetos:

        "DeleteObject":
        {
        "permanent_object_deletion_enabled": OBJECT_DELETION_VALUE
        }

        Em que OBJECT_DELETION_VALUE é TRUE para excluir objetos.

      • Atualize a chave de criptografia gerenciada pelo cliente para objetos:

        "RewriteObject":
        {
        "kms_key": KMS_KEY_VALUE
        }

        Em que KMS_KEY_VALUE é o valor da chave KMS do objeto que você quer atualizar.

      • Atualize os metadados do objeto:

        "PutMetadata": {
        METADATA_KEY= METADATA_VALUE,
        ...,
        }

        Em que METADATA_VALUE é o valor da chave dos metadados do objeto. É possível especificar um ou mais pares chave-valor como uma lista.

      • Atualizar retenções de objetos:

        "PutObjectHold": {
        "temporary_hold": TEMPORARY_HOLD_VALUE,
        "event_based_hold": EVENT_BASED_HOLD_VALUE
        }

        Em que:

        • TEMPORARY_HOLD_VALUE é usado para ativar ou desativar a retenção temporária de objetos. Um valor de 1 ativa a retenção, e um valor de 2 a desativa.

        • EVENT_BASED_HOLD_VALUE é usado para ativar ou desativar a retenção de objeto baseada em eventos. Um valor de 1 ativa a retenção, e um valor de 2 a desativa.

  3. Use cURL para chamar a API JSON com uma solicitação de POST trabalho de operações em lote de armazenamento:

    curl -X POST --data-binary @JSON_FILE_NAME \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     "https://storagebatchoperations.googleapis.com/v1/project=PROJECT_ID/locations/global/jobs?job_id=JOB_ID"

    Em que:

    • JSON_FILE_NAME é o nome do arquivo JSON.
    • PROJECT_ID é o ID ou o número do projeto. Por exemplo, my-project.
    • JOB_ID é o nome do job de operações em lote de armazenamento.

Receber detalhes do job de operações em lote de armazenamento

Esta seção descreve como acessar os detalhes do job de operações em lote de armazenamento.

Linha de comando

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. No ambiente de desenvolvimento, execute o comando gcloud storage batch-operations jobs describe.

    gcloud storage batch-operations jobs describe JOB_ID

    Em que:

    JOB_ID é o nome do job de operações em lote de armazenamento.

APIs REST

API JSON

  1. Ter CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API JSON com uma solicitação de GET trabalho de operações em lote de armazenamento:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs?JOB_ID"

    Em que:

    • PROJECT_ID é o ID ou o número do projeto. Por exemplo, my-project.
    • JOB_ID é o nome do job de operações em lote de armazenamento.

Listar jobs de operações em lote do Storage

Nesta seção, descrevemos como listar os jobs de operações em lote de armazenamento em um projeto.

Linha de comando

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. No ambiente de desenvolvimento, execute o comando gcloud storage batch-operations jobs list.

    gcloud storage batch-operations jobs list

APIs REST

API JSON

  1. Ter CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API JSON com uma solicitação de LIST trabalhos de operações em lote do Storage:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs"

    Em que:

    PROJECT_ID é o ID ou o número do projeto. Por exemplo, my-project.

Cancelar um job de operações em lote de armazenamento

Nesta seção, descrevemos como cancelar um job de operações em lote de armazenamento em um projeto.

Linha de comando

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. No ambiente de desenvolvimento, execute o comando gcloud storage batch-operations jobs cancel.

    gcloud storage batch-operations jobs cancel JOB_ID

    Em que:

    JOB_ID é o nome do job de operações em lote de armazenamento.

APIs REST

API JSON

  1. Ter CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API JSON com uma solicitação de CANCEL um trabalho de operações em lote de armazenamento:

    curl -X CANCEL \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs/JOB_ID"

    Em que:

    • PROJECT_ID é o ID ou o número do projeto. Por exemplo, my-project.

    • JOB_ID é o nome do job de operações em lote de armazenamento.

Excluir um job de operações em lote do Storage

Nesta seção, descrevemos como excluir um job de operações em lote de armazenamento.

Linha de comando

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. No ambiente de desenvolvimento, execute o comando gcloud storage batch-operations jobs delete.

    gcloud storage batch-operations jobs delete JOB_ID

    Em que:

    JOB_ID é o nome do job de operações em lote de armazenamento.

APIs REST

API JSON

  1. Ter CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API JSON com uma solicitação de DELETE um trabalho de operações em lote de armazenamento:

    curl -X DELETE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs/JOB_ID"

    Em que:

    • PROJECT_ID é o ID ou o número do projeto. Por exemplo, my-project.

    • JOB_ID é o nome do job de operações em lote de armazenamento.

Criar um job de operações em lote de armazenamento usando conjuntos de dados do Storage Insights

Para criar um job de operações em lote de armazenamento usando conjuntos de dados do Storage Insights, siga as etapas nas seções abaixo.

Criar um manifesto usando conjuntos de dados do Storage Insights

Para criar o manifesto do job de operações em lote de armazenamento, extraia dados do BigQuery. Para isso, consulte o conjunto de dados vinculado, exporte os dados resultantes como um arquivo CSV e salve-os em um bucket do Cloud Storage. O job de operações em lote de armazenamento pode usar esse arquivo CSV como manifesto.

Executar a seguinte consulta SQL no BigQuery em uma visualização de conjunto de dados do Storage Insights recupera objetos maiores que 1 KiB chamados Temp_Training:

  EXPORT DATA OPTIONS(
   uri=`URI`,
   format=`CSV`,
   overwrite=OVERWRITE_VALUE,
   field_delimiter=',') AS
  SELECT bucket, name, generation
  FROM DATASET_VIEW_NAME
  WHERE bucket = BUCKET_NAME
  AND name LIKE (`Temp_Training%`)
  AND size > 1024 * 1024
  AND snapshotTime = SNAPSHOT_TIME
  

Em que:

  • URI é o URI do bucket que contém o manifesto. Por exemplo, gs://bucket_name/path_to_csv_file/*.csv. Quando você usa o caractere curinga *.csv, o BigQuery exporta o resultado para vários arquivos CSV.
  • OVERWRITE_VALUE é um valor booleano. Se definido como true, a operação de exportação vai substituir os arquivos existentes no local especificado.
  • DATASET_VIEW_NAME é o nome totalmente qualificado da visualização do conjunto de dados do Storage Insights no formato PROJECT_ID.DATASET_ID.VIEW_NAME. Para encontrar o nome do seu conjunto de dados, confira o conjunto de dados vinculado.

    Em que:

    • PROJECT_ID é o ID ou o número do projeto. Por exemplo, my-project.
    • DATASET_ID é o nome do conjunto de dados. Por exemplo, objects-deletion-dataset.
    • VIEW_NAME é o nome da visualização do conjunto de dados. Por exemplo, bucket_attributes_view.
  • BUCKET_NAME é o nome do bucket. Por exemplo, my-bucket.

  • SNAPSHOT_TIME é o horário do snapshot da visualização do conjunto de dados do Storage Insights. Por exemplo, 2024-09-10T00:00:00Z.

Criar um job de operações em lote de armazenamento

Para criar um job de operações em lote de armazenamento e processar os objetos contidos no manifesto, siga estas etapas:

Linha de comando

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. No ambiente para desenvolvedores, execute o comando gcloud storage batch-operations jobs create:

    gcloud storage batch-operations jobs create \
    JOB_ID \
    --bucket=SOURCE_BUCKET_NAME \
    --manifest-location=URI \
    --JOB_TYPE_FLAG

    Em que:

    • JOB_ID é o nome do job de operações em lote de armazenamento.

    • SOURCE_BUCKET_NAME é o bucket que contém um ou mais objetos que você quer processar. Por exemplo, my-bucket.

    • URI é o URI do bucket que contém o manifesto. Por exemplo, gs://bucket_name/path_to_csv_file/*.csv. Quando você usa o caractere curinga *.csv, o BigQuery exporta o resultado para vários arquivos CSV.

    • JOB_TYPE_FLAG é uma das seguintes flags, dependendo do tipo de job.

Integração com o VPC Service Controls

É possível fornecer uma camada extra de segurança aos recursos de operações em lote de armazenamento usando o VPC Service Controls. Ao usar o VPC Service Controls, você adiciona projetos a perímetros de serviço que protegem recursos e serviços contra solicitações originadas de fora do perímetro. Para saber mais sobre os detalhes do perímetro de serviço do VPC Service Controls para operações em lote de armazenamento, consulte Produtos e limitações compatíveis.

Usar os Registros de auditoria do Cloud para jobs de operações em lote de armazenamento

Os jobs de operações em lote de armazenamento registram transformações em objetos do Cloud Storage nos registros de auditoria do Cloud. Use os registros de auditoria do Cloud com o Cloud Storage para rastrear as transformações de objetos realizadas pelos jobs de operações em lote de armazenamento. Para informações sobre como ativar registros de auditoria, consulte Como ativar registros de auditoria. Na entrada de registro de auditoria, o campo de metadados callUserAgent com o valor StorageBatchOperations indica uma transformação de operações em lote do Storage.

Próximas etapas