Trasferimento tra bucket Cloud Storage

Storage Transfer Service può essere utilizzato per trasferire grandi quantità di dati tra bucket Cloud Storage, all'interno dello stesso progetto Google Cloud o tra progetti diversi.

Le migrazioni dei bucket sono utili in diversi scenari. Possono essere utilizzate per consolidare i dati di progetti separati, per spostare i dati in una posizione di backup o per modificare la località dei dati.

Quando utilizzare Storage Transfer Service

Google Cloud offre varie opzioni per il trasferimento dei dati tra bucket Cloud Storage. Consigliamo le seguenti linee guida:

  • Trasferimento di meno di 1 TB: usa gsutil o gcloud. Per le istruzioni, consulta Spostare e rinominare i bucket.

  • Trasferimento di più di 1 TB: utilizza Storage Transfer Service. Storage Transfer Service è un'opzione di trasferimento gestito che offre sicurezza, affidabilità e prestazioni pronte all'uso. Elimina la necessità di ottimizzare e gestire gli script e di gestire i nuovi tentativi.

Questa guida illustra le best practice per il trasferimento di dati tra bucket Cloud Storage utilizzando Storage Transfer Service.

Definire una strategia di trasferimento

L'aspetto della tua strategia di trasferimento dipende dalla complessità della situazione. Assicurati di includere le seguenti considerazioni nel piano.

Scegli un nome per il bucket

Per spostare i dati in un bucket di archiviazione con una località diversa, scegli uno dei seguenti approcci:

  • Nuovo nome del bucket. Aggiornate le applicazioni in modo che puntino a un bucket di archiviazione con un nome diverso.
  • Mantieni il nome del bucket. Sostituisci il bucket di archiviazione per mantenere il nome attuale, quindi non devi aggiornare le applicazioni.

In entrambi i casi, è consigliabile pianificare il tempo di riposo e informare gli utenti che il tempo di inattività sta per arrivare. Leggi le seguenti spiegazioni per capire qual è la scelta più adatta alle tue esigenze.

Nuovo nome bucket

Con un nuovo nome del bucket, devi aggiornare tutto il codice e i servizi che utilizzano il bucket attuale. Le modalità di creazione dipendono da come sono state create e distribuite le applicazioni.

Per alcune configurazioni questo approccio potrebbe comportare un tempo di inattività inferiore, ma richiede più lavoro per garantire una transizione senza problemi. L'operazione prevede i seguenti passaggi:

  1. Copia dei tuoi dati in un nuovo bucket di archiviazione in corso...
  2. Avvio del tempo di riposo.
  3. Aggiornamento delle applicazioni in modo che puntino al nuovo bucket.
  4. Verifica che tutto funzioni come previsto e che tutti i sistemi e gli account pertinenti abbiano accesso al bucket.
  5. Eliminazione del bucket originale in corso...
  6. Fine del tempo di riposo.

Mantieni nome bucket

Utilizza questo approccio se preferisci non modificare il codice in modo che punti al nome di un nuovo bucket. L'operazione prevede i seguenti passaggi:

  1. Copia dei tuoi dati in un bucket di archiviazione temporaneo.
  2. Avvio del tempo di riposo.
  3. Eliminazione del bucket originale in corso...
  4. Creazione di un nuovo bucket con lo stesso nome del bucket originale.
  5. Copia dei dati nel nuovo bucket dal bucket temporaneo.
  6. Eliminazione del bucket temporaneo in corso.
  7. Verifica che tutto funzioni come previsto e che tutti i sistemi e gli account pertinenti abbiano accesso al bucket.
  8. Fine del tempo di riposo.

Ridurre al minimo i tempi di inattività

Storage Transfer Service non blocca le letture o le scritture sui bucket di origine o di destinazione durante un trasferimento.

Se scegli di bloccare manualmente le operazioni di lettura/scrittura sul bucket, puoi ridurre al minimo i tempi di inattività trasferendo i dati in due passaggi: seed e sincronizzazione.

  1. Trasferimento di origine: esegui un trasferimento collettivo senza bloccare la lettura/scrittura nell'origine.

  2. Trasferimento sincronizzazione: dopo il completamento della prima esecuzione, blocca la lettura/scrittura sul bucket di origine ed esegui un altro trasferimento. I trasferimenti di Storage Transfer Service sono incrementali per impostazione predefinita, quindi questo secondo trasferimento trasferisce solo i dati modificati durante il trasferimento di origine.

Ottimizza la velocità di trasferimento

Quando stimi la durata di un job di trasferimento, considera i possibili colli di bottiglia. Ad esempio, se l'origine ha miliardi di file di piccole dimensioni, la velocità di trasferimento sarà vincolata al valore QPS. Se gli oggetti sono di grandi dimensioni, la larghezza di banda potrebbe essere il collo di bottiglia.

I limiti della larghezza di banda sono impostati a livello di regione e sono equamente allocati tra tutti i progetti. Se è disponibile una larghezza di banda sufficiente, Storage Transfer Service può completare circa 1000 attività per job di trasferimento al secondo. In questo caso, puoi accelerare un trasferimento dividendo il job in più job di trasferimento di piccole dimensioni, ad esempio utilizzando i prefissi di inclusione ed esclusione per trasferire determinati file.

Nei casi in cui località, classe di archiviazione e chiave di crittografia coincidono, Storage Transfer Service non crea una nuova copia dei byte, ma crea una nuova voce di metadati che punta al BLOB di origine. Di conseguenza, le stesse copie di località e classi di un corpus di grandi dimensioni vengono completate molto rapidamente e sono vincolate solo a QPS.

Anche le eliminazioni riguardano solo i metadati. Per questi trasferimenti, il caricamento in contemporanea del trasferimento suddividendolo in più piccoli job può aumentare la velocità.

Conserva metadati

I seguenti metadati degli oggetti vengono conservati durante il trasferimento dei dati tra bucket Cloud Storage con Storage Transfer Service:

  • Metadati personalizzati creati dall'utente.
  • Campi di metadati a chiave fissa di Cloud Storage, come Cache-Control, Content-Disposition, Content-Type e Custom-Time.
  • Dimensioni dell'oggetto.
  • Il numero di generazione viene conservato come campo di metadati personalizzato con la chiave x-goog-reserved-source-generation, che puoi modificare in un secondo momento o rimuoverla.

I seguenti campi di metadati possono essere conservati facoltativamente durante il trasferimento tramite l'API:

  • ACL (acl)
  • Classe di archiviazione (storageClass)
  • CMEK (kmsKey)
  • Trattenuta temporanea (temporaryHold)
  • Ora di creazione dell'oggetto (customTime)

Per ulteriori dettagli, consulta la documentazione di riferimento dell'API TransferSpec.

I seguenti campi di metadati non vengono conservati:

  • Ultimo aggiornamento (updated)
  • etag
  • componentCount

Se conservata, la data e l'ora di creazione dell'oggetto viene archiviata come campo personalizzato, customTime. Il tempo updated dell'oggetto viene reimpostato al momento del trasferimento, quindi viene reimpostato anche il tempo trascorso dell'oggetto nella relativa classe di archiviazione. Ciò significa che, dopo il trasferimento, un oggetto in Coldline Storage deve esistere di nuovo per 90 giorni nella destinazione per evitare costi di eliminazione anticipata.

Puoi applicare i criteri del ciclo di vita basati su createTime utilizzando customTime. I valori customTime esistenti vengono sovrascritti.

Per maggiori dettagli su cosa viene e cosa viene conservato, consulta la sezione Conservazione dei metadati.

Gestire gli oggetti sottoposti al controllo delle versioni

Se vuoi trasferire tutte le versioni degli oggetti di archiviazione e non solo quella più recente, devi utilizzare l'interfaccia a riga di comando gcloud o l'API REST per trasferire i dati, in combinazione con la funzionalità manifest di Storage Transfer Service.

Per trasferire tutte le versioni degli oggetti:

  1. Elenca gli oggetti del bucket e copiali in un file JSON:

    gcloud storage ls --all-versions --recursive --json [SOURCE_BUCKET] > object-listing.json
    

    Questo comando elenca generalmente circa 1000 oggetti al secondo.

  2. Suddividi il file JSON in due file CSV, uno con le versioni non correnti e un altro con le versioni attive:

    jq -r '.[] | select( .type=="cloud_object" and (.metadata | has("timeDeleted") | not)) | [.metadata.name, .metadata.generation] | @csv' object-listing.json > live-object-manifest.csv
    jq -r '.[] | select( .type=="cloud_object" and (.metadata | has("timeDeleted"))) | [.metadata.name, .metadata.generation] | @csv' object-listing.json > non-current-object-manifest.csv
    
  3. Abilita il controllo delle versioni degli oggetti sul bucket di destinazione.

  4. Trasferisci prima le versioni non correnti passando il file manifest non-current-object-manifest.csv come valore del campo transferManifest.

  5. Quindi, trasferisci le versioni live allo stesso modo, specificando live-object-manifest.csv come file manifest.

Configura le opzioni di trasferimento

Di seguito sono riportate alcune delle opzioni disponibili durante la configurazione del trasferimento:

  • Logging: Cloud Logging fornisce log dettagliati dei singoli oggetti, consentendo di verificare lo stato del trasferimento ed eseguire controlli aggiuntivi di integrità dei dati.

  • Filtro: puoi utilizzare i prefissi di inclusione ed esclusione per limitare gli oggetti su cui opera Storage Transfer Service. Questa opzione può essere usata per suddividere un trasferimento in più job di trasferimento in modo che possano essere eseguiti in parallelo. Per saperne di più, consulta Ottimizzare la velocità di trasferimento.

  • Opzioni di trasferimento: puoi configurare il trasferimento in modo da sovrascrivere gli elementi esistenti nel bucket di destinazione, eliminare gli oggetti nella destinazione che non esistono nel set di trasferimento o eliminare gli oggetti trasferiti dall'origine.

Trasferire i dati

Dopo aver definito la strategia di trasferimento, puoi eseguire il trasferimento stesso.

Creazione di un nuovo bucket

Prima di iniziare il trasferimento, crea un bucket di archiviazione. Consulta location_considerations per farti aiutare a scegliere una località appropriata per il bucket.

Potrebbe essere opportuno copiare alcuni metadati dei bucket quando crei il nuovo bucket. Consulta Ottenere i metadati del bucket per scoprire come visualizzare i metadati del bucket di origine in modo da poter applicare le stesse impostazioni al nuovo bucket.

Copia oggetti nel nuovo bucket

Puoi copiare oggetti dal bucket di origine in un nuovo bucket utilizzando la console Google Cloud, l'interfaccia a riga di comando gcloud, l'API REST o le librerie client. L'approccio scelto dipende dalla strategia di trasferimento.

Le seguenti istruzioni sono per il caso d'uso di base del trasferimento di oggetti da un bucket a un altro e devono essere modificate in base alle tue esigenze.

Non includere informazioni sensibili come informazioni che consentono l'identificazione personale o dati di sicurezza nel nome del job di trasferimento. I nomi delle risorse possono essere propagati ai nomi di altre risorse Google Cloud ed essere esposti ai sistemi interni di Google al di fuori del tuo progetto.

Console Google Cloud

Utilizza Cloud Storage Transfer Service dalla console Google Cloud:

  1. Apri la pagina Trasferisci nella console Google Cloud.

    Apri la pagina Trasferisci

  2. Fai clic su Crea job di trasferimento.
  3. Segui la procedura dettagliata passo passo, facendo clic su Passaggio successivo mentre completi ogni passaggio:

    • Per iniziare: utilizza Google Cloud Storage come Tipo di origine e Tipo di destinazione.

    • Scegli un'origine: inserisci direttamente il nome del bucket che ti interessa oppure fai clic su Sfoglia per trovare e selezionare il bucket che ti interessa.

    • Scegli una destinazione: inserisci direttamente il nome del bucket che ti interessa oppure fai clic su Sfoglia per trovare e selezionare il bucket che ti interessa.

    • Scegli le impostazioni: seleziona l'opzione Elimina i file dall'origine dopo averli trasferiti.

    • Opzioni di pianificazione: puoi ignorare questa sezione.

  4. Dopo aver completato la procedura dettagliata, fai clic su Crea.

    Questa operazione avvia il processo di copia degli oggetti dal bucket precedente a quello nuovo. Questo processo potrebbe richiedere del tempo; tuttavia, dopo aver fatto clic su Crea, puoi uscire dalla console Google Cloud.

    Per visualizzare lo stato di avanzamento del trasferimento:

    Apri la pagina Trasferisci nella console Google Cloud.

    Apri la pagina Trasferisci

    Per scoprire come ottenere informazioni dettagliate sugli errori relativi alle operazioni di Storage Transfer Service non riuscite nella console Google Cloud, consulta Risoluzione dei problemi.

  5. Al termine del trasferimento, non dovrai fare nulla per eliminare gli oggetti dal vecchio bucket se hai selezionato la casella di controllo Elimina gli oggetti di origine al termine del trasferimento durante la configurazione. Tuttavia, puoi anche eliminare il vecchio bucket, operazione che devi eseguire separatamente.

Interfaccia a riga di comando gcloud

Installa gcloud CLI

Se non lo hai già fatto, installa lo strumento a riga di comando gcloud.

Quindi chiama gcloud init per inizializzare lo strumento e specificare il tuo ID progetto e il tuo account utente. Per ulteriori dettagli, consulta Inizializzazione di Cloud SDK.

gcloud init

Aggiungi l'account di servizio alla cartella di destinazione

Prima di creare un trasferimento, devi aggiungere l'account di servizio Storage Transfer Service al tuo bucket di destinazione. A questo scopo, utilizza gsutil iam ch:

gsutil iam ch serviceAccount:project-12345678@storage-transfer-service.iam.gserviceaccount.com:roles/storage.admin gs://bucket_name

Per istruzioni sull'utilizzo dell'API o della console Google Cloud, consulta Utilizzare le autorizzazioni IAM nella documentazione di Cloud Storage.

Crea il job di trasferimento

Per creare un nuovo job di trasferimento, utilizza il comando gcloud transfer jobs create. La creazione di un nuovo job avvia il trasferimento specificato, a meno che non venga specificata una pianificazione o --do-not-run.

gcloud transfer jobs create SOURCE DESTINATION

Dove:

  • SOURCE è l'origine dati per questo trasferimento, nel formato gs://BUCKET_NAME.

  • DESTINATION è il nuovo bucket nel formato gs://BUCKET_NAME.

Ecco alcune opzioni aggiuntive:

  • Informazioni sul job: puoi specificare --name e --description.

  • Pianificazione: specifica --schedule-starts, --schedule-repeats-every e --schedule-repeats-until o --do-not-run.

  • Condizioni degli oggetti: utilizza le condizioni per determinare quali oggetti vengono trasferiti. Questi includono --include-prefixes e --exclude-prefixes e le condizioni basate sul tempo in --include-modified-[before | after]-[absolute | relative].

  • Opzioni di trasferimento: specifica se sovrascrivere i file di destinazione (--overwrite-when=different o always) e se eliminare determinati file durante o dopo il trasferimento (--delete-from=destination-if-unique o source-after-transfer); specifica quali [valori dei metadati da conservare]metadati e facoltativamente imposta una classe di archiviazione sugli oggetti trasferiti (--custom-storage-class).

  • Notifiche: configura le notifiche Pub/Sub per i trasferimenti con --notification-pubsub-topic, --notification-event-types e --notification-payload-format.

Per visualizzare tutte le opzioni, esegui gcloud transfer jobs create --help.

Ad esempio, per trasferire tutti gli oggetti con il prefisso folder1:

gcloud transfer jobs create gs://old-bucket gs://new-bucket \
  --include-prefixes="folder1/"

REST

In questo esempio, imparerai a spostare file da un bucket Cloud Storage a un altro. Ad esempio, puoi spostare i dati in un bucket in un'altra località.

Richiedi utilizzando transferJobs create:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 1,
          "month": 1,
          "year": 2025
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      },
      "scheduleEndDate": {
          "day": 1,
          "month": 1,
          "year": 2025
      }
  },
  "transferSpec": {
      "gcsDataSource": {
          "bucketName": "GCS_SOURCE_NAME"
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME"
      },
      "transferOptions": {
          "deleteObjectsFromSourceAfterTransfer": true
      }
  }
}

Risposta:

200 OK
{
  "transferJob": [
      {
          "creationTime": "2015-01-01T01:01:00.000000000Z",
          "description": "YOUR DESCRIPTION",
          "name": "transferJobs/JOB_ID",
          "status": "ENABLED",
          "lastModificationTime": "2015-01-01T01:01:00.000000000Z",
          "projectId": "PROJECT_ID",
          "schedule": {
              "scheduleStartDate": {
                  "day": 1,
                  "month": 1,
                  "year": 2015
              },
              "startTimeOfDay": {
                  "hours": 1,
                  "minutes": 1
              }
          },
          "transferSpec": {
              "gcsDataSource": {
                  "bucketName": "GCS_SOURCE_NAME",
              },
              "gcsDataSink": {
                  "bucketName": "GCS_NEARLINE_SINK_NAME"
              },
              "objectConditions": {
                  "minTimeElapsedSinceLastModification": "2592000.000s"
              },
              "transferOptions": {
                  "deleteObjectsFromSourceAfterTransfer": true
              }
          }
      }
  ]
}

Librerie client

In questo esempio, imparerai a spostare file da un bucket Cloud Storage a un altro. Ad esempio, puoi replicare i dati in un bucket in un'altra località.

Per ulteriori informazioni sulle librerie client di Storage Transfer Service, consulta la guida introduttiva alle librerie client di Storage Transfer Service.

Java

Stai cercando anteprime meno recenti? Consulta la guida alla migrazione di Storage Transfer Service.

import com.google.protobuf.Duration;
import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto.CreateTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.GcsData;
import com.google.storagetransfer.v1.proto.TransferTypes.ObjectConditions;
import com.google.storagetransfer.v1.proto.TransferTypes.Schedule;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob.Status;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferOptions;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferSpec;
import com.google.type.Date;
import com.google.type.TimeOfDay;
import java.io.IOException;
import java.util.Calendar;

public class TransferToNearline {
  /**
   * Creates a one-off transfer job that transfers objects in a standard GCS bucket that are more
   * than 30 days old to a Nearline GCS bucket.
   */
  public static void transferToNearline(
      String projectId,
      String jobDescription,
      String gcsSourceBucket,
      String gcsNearlineSinkBucket,
      long startDateTime)
      throws IOException {

    // Your Google Cloud Project ID
    // String projectId = "your-project-id";

    // A short description of this job
    // String jobDescription = "Sample transfer job of old objects to a Nearline GCS bucket.";

    // The name of the source GCS bucket to transfer data from
    // String gcsSourceBucket = "your-gcs-source-bucket";

    // The name of the Nearline GCS bucket to transfer old objects to
    // String gcsSinkBucket = "your-nearline-gcs-bucket";

    // What day and time in UTC to start the transfer, expressed as an epoch date timestamp.
    // If this is in the past relative to when the job is created, it will run the next day.
    // long startDateTime =
    //     new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2000-01-01 00:00:00").getTime();

    // Parse epoch timestamp into the model classes
    Calendar startCalendar = Calendar.getInstance();
    startCalendar.setTimeInMillis(startDateTime);
    // Note that this is a Date from the model class package, not a java.util.Date
    Date date =
        Date.newBuilder()
            .setYear(startCalendar.get(Calendar.YEAR))
            .setMonth(startCalendar.get(Calendar.MONTH) + 1)
            .setDay(startCalendar.get(Calendar.DAY_OF_MONTH))
            .build();
    TimeOfDay time =
        TimeOfDay.newBuilder()
            .setHours(startCalendar.get(Calendar.HOUR_OF_DAY))
            .setMinutes(startCalendar.get(Calendar.MINUTE))
            .setSeconds(startCalendar.get(Calendar.SECOND))
            .build();

    TransferJob transferJob =
        TransferJob.newBuilder()
            .setDescription(jobDescription)
            .setProjectId(projectId)
            .setTransferSpec(
                TransferSpec.newBuilder()
                    .setGcsDataSource(GcsData.newBuilder().setBucketName(gcsSourceBucket))
                    .setGcsDataSink(GcsData.newBuilder().setBucketName(gcsNearlineSinkBucket))
                    .setObjectConditions(
                        ObjectConditions.newBuilder()
                            .setMinTimeElapsedSinceLastModification(
                                Duration.newBuilder().setSeconds(2592000 /* 30 days */)))
                    .setTransferOptions(
                        TransferOptions.newBuilder().setDeleteObjectsFromSourceAfterTransfer(true)))
            .setSchedule(Schedule.newBuilder().setScheduleStartDate(date).setStartTimeOfDay(time))
            .setStatus(Status.ENABLED)
            .build();

    // Create a Transfer Service client
    StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();

    // Create the transfer job
    TransferJob response =
        storageTransfer.createTransferJob(
            CreateTransferJobRequest.newBuilder().setTransferJob(transferJob).build());

    System.out.println("Created transfer job from standard bucket to Nearline bucket:");
    System.out.println(response.toString());
  }
}

Python

Stai cercando anteprime meno recenti? Consulta la guida alla migrazione di Storage Transfer Service.

from datetime import datetime

from google.cloud import storage_transfer
from google.protobuf.duration_pb2 import Duration

def create_daily_nearline_30_day_migration(
    project_id: str,
    description: str,
    source_bucket: str,
    sink_bucket: str,
    start_date: datetime,
):
    """Create a daily migration from a GCS bucket to a Nearline GCS bucket
    for objects untouched for 30 days."""

    client = storage_transfer.StorageTransferServiceClient()

    # The ID of the Google Cloud Platform Project that owns the job
    # project_id = 'my-project-id'

    # A useful description for your transfer job
    # description = 'My transfer job'

    # Google Cloud Storage source bucket name
    # source_bucket = 'my-gcs-source-bucket'

    # Google Cloud Storage destination bucket name
    # sink_bucket = 'my-gcs-destination-bucket'

    transfer_job_request = storage_transfer.CreateTransferJobRequest(
        {
            "transfer_job": {
                "project_id": project_id,
                "description": description,
                "status": storage_transfer.TransferJob.Status.ENABLED,
                "schedule": {
                    "schedule_start_date": {
                        "day": start_date.day,
                        "month": start_date.month,
                        "year": start_date.year,
                    }
                },
                "transfer_spec": {
                    "gcs_data_source": {
                        "bucket_name": source_bucket,
                    },
                    "gcs_data_sink": {
                        "bucket_name": sink_bucket,
                    },
                    "object_conditions": {
                        "min_time_elapsed_since_last_modification": Duration(
                            seconds=2592000  # 30 days
                        )
                    },
                    "transfer_options": {
                        "delete_objects_from_source_after_transfer": True
                    },
                },
            }
        }
    )

    result = client.create_transfer_job(transfer_job_request)
    print(f"Created transferJob: {result.name}")

Verifica gli oggetti copiati

Una volta completato il trasferimento, ti consigliamo di eseguire ulteriori controlli dell'integrità dei dati.

  • Convalida che gli oggetti siano stati copiati correttamente verificando i metadati sugli oggetti, come checksum e dimensioni.

  • Verifica che sia stata copiata la versione corretta degli oggetti. Storage Transfer Service offre un'opzione pronta all'uso per verificare che gli oggetti siano copie. Se hai abilitato il logging, visualizza i log per verificare se tutti gli oggetti sono stati copiati correttamente, inclusi i campi dei metadati corrispondenti.

Inizia a utilizzare il bucket di destinazione

Dopo che la migrazione è stata completata e verificata, aggiorna tutte le applicazioni o i carichi di lavoro esistenti in modo che utilizzino il nome del bucket di destinazione. Controlla i log degli accessi ai dati in Cloud Audit Logs per assicurarti che le tue operazioni stiano modificando e leggendo correttamente gli oggetti.

Elimina il bucket originale

Quando tutto funziona correttamente, elimina il bucket originale.

Storage Transfer Service offre la possibilità di eliminare gli oggetti dopo che sono stati trasferiti specificando deleteObjectsFromSourceAfterTransfer: true nella configurazione del job oppure selezionando l'opzione nella console Google Cloud.

Pianifica l'eliminazione dell'oggetto

Per pianificare l'eliminazione degli oggetti in un secondo momento, utilizza una combinazione di un job di trasferimento pianificato e l'opzione deleteObjectsUniqueInSink = true.

Il job di trasferimento deve essere configurato in modo da trasferire un bucket vuoto nel bucket contenente i tuoi oggetti. Storage Transfer Service elenca gli oggetti e inizia a eliminarli. Poiché le eliminazioni sono operazioni basate esclusivamente sui metadati, il job di trasferimento è vincolato solo a QPS. Per accelerare il processo, suddividi il trasferimento in più job, ciascuno che agisce in base a un insieme distinto di prefissi.

In alternativa, Google Cloud offre uno scheduler cron job gestito. Per ulteriori informazioni, consulta Pianificare il job di trasferimento Google Cloud STS con Cloud Scheduler.