Crea trasferimenti

Questa pagina mostra come creare e avviare job di trasferimento.

Per verificare se l'origine e la destinazione (nota anche come sink) sono supportate da Storage Transfer Service, consulta Origini e sink supportati.

Agenti e pool di agenti

A seconda dell'origine e della destinazione, potrebbe essere necessario creare e configurare un pool di agenti e installare gli agenti su una macchina con accesso all'origine o alla destinazione.

  • I trasferimenti da Amazon S3, Microsoft Azure, elenchi di URL o Cloud Storage a Cloud Storage non richiedono agenti e pool di agenti.

  • I trasferimenti la cui origine e/o destinazione è un file system o uno spazio di archiviazione compatibile con S3 richiedono agenti e pool di agenti. Per le istruzioni, consulta Gestisci i pool di agenti.

Prima di iniziare

Prima di configurare i trasferimenti, assicurati di aver configurato l'accesso:

Se utilizzi i comandi gcloud, installa gcloud CLI.

Crea un trasferimento

Non includere nell'ID progetto informazioni sensibili come quelle che consentono l'identificazione personale (PII) oppure dati di sicurezza. I nomi delle risorse possono essere propagati ai nomi di altre risorse Google Cloud e possono essere esposti ai sistemi interni di Google esterni al tuo progetto.

Console Google Cloud

  1. Vai alla pagina Storage Transfer Service nella console Google Cloud .

    Vai a Storage Transfer Service

  2. Fai clic su Crea job di trasferimento. Viene visualizzata la pagina Crea un job di trasferimento.

  3. Scegli un'origine:

    Cloud Storage

    Il tuo account utente deve disporre dell'autorizzazione storage.buckets.get per selezionare i bucket di origine e di destinazione. In alternativa, puoi digitare direttamente il nome del bucket. Per saperne di più, consulta Risoluzione dei problemi di accesso.

    1. In Tipo di origine, seleziona Cloud Storage.

    2. Seleziona il Tipo di destinazione.

    3. Se la destinazione è Cloud Storage, seleziona la modalità di pianificazione. I trasferimenti in batch vengono eseguiti una tantum o in base a una pianificazione. I trasferimenti basati su eventi monitorano continuamente l'origine e trasferiscono i dati quando vengono aggiunti o modificati.

      Per configurare un trasferimento basato su eventi, segui le istruzioni riportate in Trasferimenti basati su eventi.

    4. Fai clic su Passaggio successivo.

    5. Seleziona un bucket e (facoltativamente) una cartella al suo interno eseguendo una delle seguenti operazioni:

      • Inserisci il nome e il percorso di un bucket Cloud Storage esistente nel campo Bucket o cartella senza il prefisso gs://. Ad esempio: my-test-bucket/path/to/files. Per specificare un bucket Cloud Storage di un altro progetto, digita il nome esattamente nel campo Nome bucket.

      • Seleziona un elenco di bucket esistenti nei tuoi progetti facendo clic su Sfoglia, quindi seleziona un bucket.

        Quando fai clic su Sfoglia, puoi selezionare i bucket in altri progetti facendo clic su ID progetto, quindi selezionando il nuovo ID progetto e il bucket.

      • Per creare un nuovo bucket, fai clic su Crea nuovo bucket.

      Se specifichi un percorso all'interno della cartella, consulta Specifica dei percorsi di origine e di destinazione per dettagli importanti.

    6. Se si tratta di un trasferimento basato su eventi, inserisci il nome della sottoscrizione Pub/Sub, che ha il seguente formato:

      projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
      
    7. Facoltativamente, scegli di filtrare gli oggetti per prefisso, per data dell'ultima modifica o per classe di archiviazione. Se hai specificato una cartella come posizione di origine, i filtri dei prefissi sono relativi a quella cartella. Ad esempio, se l'origine è my-test-bucket/path/, un filtro di inclusione di file include tutti i file che iniziano con my-test-bucket/path/file.
    8. Fai clic su Passaggio successivo.

    Amazon S3

    Consulta Trasferisci da Amazon S3 a Cloud Storage.

    Spazio di archiviazione compatibile con S3

    Consulta Trasferisci dallo spazio di archiviazione compatibile con S3 a Cloud Storage.

    Microsoft Azure Blob Storage

    1. In Tipo di origine, seleziona Archiviazione BLOB di Azure o Data Lake Storage Gen2.

    2. Fai clic su Passaggio successivo.

    3. Specifica quanto segue:

      1. Nome account di archiviazione: il nome dell'account Microsoft Azure Storage di origine.

        Il nome dell'account di archiviazione viene visualizzato nel portale di Microsoft Azure Storage in Tutti i servizi > Archiviazione > Account di archiviazione.

      2. Nome container: il nome del container di Microsoft Azure Storage.

        Il nome del container viene visualizzato nel portale di Microsoft Azure Storage in Storage Explorer > Container BLOB. Per trasferire tutti i container in un account di archiviazione, inserisci * come valore. Per saperne di più, consulta Trasferisci tutti i container in un account Azure Storage.

      3. Firma di accesso condiviso: il token SAS di Microsoft Azure Storage creato da una policy di accesso archiviata. Per saperne di più, consulta Concedi l'accesso limitato alle risorse di archiviazione di Azure utilizzando le firme di accesso condiviso (SAS).

        La scadenza predefinita per i token SAS è di 8 ore. Quando crei il token SAS, assicurati di impostare una scadenza ragionevole che ti consenta di completare correttamente il trasferimento.
    4. Facoltativamente, scegli di filtrare gli oggetti per prefisso, per data dell'ultima modifica o per classe di archiviazione. Se hai specificato una cartella come posizione di origine, i filtri dei prefissi sono relativi a quella cartella. Ad esempio, se l'origine è my-test-bucket/path/, un filtro di inclusione di file include tutti i file che iniziano con my-test-bucket/path/file.
    5. Fai clic su Passaggio successivo.

    File system

    1. In Tipo di origine, seleziona File system POSIX.

    2. Seleziona il Tipo di destinazione e fai clic su Passaggio successivo.

    3. Seleziona un pool di agenti esistente o seleziona Crea pool di agenti e segui le istruzioni per creare un nuovo pool.

    4. Specifica il percorso completo della directory del file system. Se specifichi un percorso diverso dalla directory principale, consulta Specifica dei percorsi di origine e di destinazione per dettagli importanti.

    5. Fai clic su Passaggio successivo.

    HDFS

    Consulta Trasferisci da HDFS a Cloud Storage.

    Elenco URL

    1. In Tipo di origine, seleziona Elenco URL e fai clic su Passaggio successivo.

    2. In URL del file TSV, fornisci l'URL di un file con valori delimitati da tabulazioni (TSV). Per informazioni dettagliate su come creare il file TSV, consulta Creazione di un elenco di URL.

    3. Facoltativamente, scegli di filtrare gli oggetti per prefisso, per data dell'ultima modifica o per classe di archiviazione. Se hai specificato una cartella come posizione di origine, i filtri dei prefissi sono relativi a quella cartella. Ad esempio, se l'origine è my-test-bucket/path/, un filtro di inclusione di file include tutti i file che iniziano con my-test-bucket/path/file.
    4. Fai clic su Passaggio successivo.

  4. Scegli una destinazione:

    Cloud Storage​

    1. Nel campo Bucket o cartella, inserisci il nome del bucket di destinazione e (facoltativamente) della cartella oppure fai clic su Sfoglia per selezionare un bucket da un elenco di bucket esistenti nel progetto corrente. Per creare un nuovo bucket, fai clic su Crea nuovo bucket.

      Se specifichi un percorso all'interno del bucket, consulta Specifica dei percorsi di origine e destinazione per dettagli importanti.

    2. Fai clic su Passaggio successivo.

    3. Scegli le opzioni di programmazione:

      1. Nell'elenco a discesa Esegui una volta, seleziona una delle seguenti opzioni:

        • Esegui una volta: esegue un singolo trasferimento, a partire da un'ora selezionata da te.

        • Esegui ogni giorno: esegue un trasferimento ogni giorno, a partire da un'ora selezionata da te.

          Puoi inserire una Data di fine facoltativa o lasciare vuoto il campo Data di fine per eseguire il trasferimento in modo continuo.

        • Esegui ogni settimana: esegue un trasferimento ogni settimana, a partire da un'ora selezionata.

        • Esegui con frequenza personalizzata: esegue un trasferimento con una frequenza selezionata da te. Puoi scegliere di ripetere il trasferimento a intervalli regolari di Ore, Giorni o Settimane.

          Puoi inserire una Data di fine facoltativa o lasciare vuoto il campo Data di fine per eseguire il trasferimento in modo continuo.

      2. Nell'elenco a discesa A partire da ora, seleziona una delle seguenti opzioni:

        • Inizia ora: avvia il trasferimento dopo aver fatto clic su Crea.

        • A partire dal: avvia il trasferimento alla data e all'ora selezionate. Fai clic su Calendario per visualizzare un calendario da cui selezionare la data di inizio.

    4. Fai clic su Passaggio successivo.

    5. Scegli le impostazioni per il job di trasferimento. Alcune opzioni sono disponibili solo per determinate combinazioni di origine/sink.

      1. Nel campo Descrizione, inserisci una descrizione del trasferimento. Come best practice, inserisci una descrizione significativa e univoca in modo da poter distinguere i job.

      2. In Opzioni metadati, scegli di utilizzare le opzioni predefinite o fai clic su Visualizza e seleziona le opzioni per specificare i valori per tutti i metadati supportati. Per maggiori dettagli, consulta Conservazione dei metadati.

      3. In Quando sovrascrivere, seleziona una delle seguenti opzioni:

        • Se diverso: sovrascrive i file di destinazione se il file di origine con lo stesso nome ha valori Etag o checksum diversi.

        • Sempre: sovrascrive sempre i file di destinazione quando il file di origine ha lo stesso nome, anche se sono identici.

      4. In Quando eliminare, seleziona una delle seguenti opzioni:

        • Mai: non eliminare mai i file dall'origine o dalla destinazione.

        • Elimina i file dall'origine dopo il trasferimento: elimina i file dall'origine dopo il trasferimento alla destinazione. Se un file di origine non viene trasferito, ad esempio perché esiste già nella destinazione, non viene eliminato.

        • Elimina i file dalla destinazione se non sono presenti anche nell'origine: se i file nel bucket Cloud Storage di destinazione non sono presenti anche nell'origine, elimina i file dal bucket Cloud Storage.

          Questa opzione garantisce che il bucket Cloud Storage di destinazione corrisponda esattamente all'origine.

      5. Per i trasferimenti tra bucket Cloud Storage, scegli se trasferire le cartelle gestite.

      6. Abilita o disabilita il logging per Storage Transfer Service.

      7. Nella sezione Opzioni di notifica, seleziona facoltativamente l'argomento Pub/Sub e gli eventi per cui inviare notifiche. Per maggiori dettagli, consulta Notifiche Pub/Sub.

    6. Se stai delegando le autorizzazioni dell'agente di servizio a un account di servizio gestito dall'utente, seleziona questa opzione e inserisci l'indirizzo email del account di servizio nel formato SERVICE_ACCOUNT_NAME@PROJECT_ID..

    7. Fai clic su Crea.

    File system​

    1. Seleziona un pool di agenti esistente o seleziona Crea pool di agenti e segui le istruzioni per creare un nuovo pool.

    2. Specifica il percorso completo della directory di destinazione. Se specifichi un percorso diverso dalla directory principale, consulta Specifica dei percorsi di origine e di destinazione per dettagli importanti. Se il percorso specificato non esiste, l'agente di trasferimento tenta di creare la struttura di directory nel file system di destinazione durante il processo di trasferimento. L'agente deve disporre delle autorizzazioni in scrittura necessarie nella directory principale.

    3. Fai clic su Passaggio successivo.

    4. Scegli le opzioni di programmazione:

      1. Nell'elenco a discesa Esegui una volta, seleziona una delle seguenti opzioni:

        • Esegui una volta: esegue un singolo trasferimento, a partire da un'ora selezionata da te.

        • Esegui ogni giorno: esegue un trasferimento ogni giorno, a partire da un'ora selezionata da te.

          Puoi inserire una Data di fine facoltativa o lasciare vuoto il campo Data di fine per eseguire il trasferimento in modo continuo.

        • Esegui ogni settimana: esegue un trasferimento ogni settimana, a partire da un'ora selezionata.

        • Esegui con frequenza personalizzata: esegue un trasferimento con una frequenza selezionata da te. Puoi scegliere di ripetere il trasferimento a intervalli regolari di Ore, Giorni o Settimane.

          Puoi inserire una Data di fine facoltativa o lasciare vuoto il campo Data di fine per eseguire il trasferimento in modo continuo.

      2. Nell'elenco a discesa A partire da ora, seleziona una delle seguenti opzioni:

        • Inizia ora: avvia il trasferimento dopo aver fatto clic su Crea.

        • A partire dal: avvia il trasferimento alla data e all'ora selezionate. Fai clic su Calendario per visualizzare un calendario da cui selezionare la data di inizio.

    5. Fai clic su Passaggio successivo.

    6. Specifica se utilizzare un file manifest.

    7. Seleziona se conservare i metadati, quando sovrascrivere e quando eliminare i file nell'origine o nella destinazione.

    8. Seleziona le opzioni di logging.

    9. Nella sezione Opzioni di notifica, seleziona facoltativamente l'argomento Pub/Sub e gli eventi per cui inviare notifiche. Per maggiori dettagli, consulta Notifiche Pub/Sub.

    10. Se stai delegando le autorizzazioni dell'agente di servizio a un account di servizio gestito dall'utente, seleziona questa opzione e inserisci l'indirizzo email del account di servizio nel formato SERVICE_ACCOUNT_NAME@PROJECT_ID..

    11. Per creare il job di trasferimento, fai clic su Crea.

gcloud CLI

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

Sostituisci quanto segue:

  • SOURCE è l'origine dati per questo trasferimento. Il formato per ogni origine è:

    • Cloud Storage: gs://BUCKET_NAME. Per eseguire il trasferimento da una cartella specifica, specifica gs://BUCKET_NAME/FOLDER_PATH/, inclusa la barra finale.
    • Amazon S3: s3://BUCKET_NAME/FOLDER_PATH
    • Spazio di archiviazione compatibile con S3: s3://BUCKET_NAME. Il nome del bucket è relativo all'endpoint. Ad esempio, se i dati si trovano in https://us-east-1.example.com/folder1/bucket_a, inserisci s3://folder1/bucket_a.
    • Microsoft Azure Storage: https://myaccount.blob.core.windows.net/CONTAINER_NAME
    • Elenco di URL: https://PATH_TO_URL_LIST o http://PATH_TO_URL_LIST
    • File system POSIX: posix:///PATH. Deve essere un percorso assoluto dalla directory principale della macchina host dell'agente.
    • HDFS: hdfs:///PATH

    Se specifichi un valore per il percorso o la cartella, consulta Specifica dei percorsi di origine e di destinazione per informazioni importanti.

  • DESTINATION è uno dei seguenti:

    • Cloud Storage: gs://BUCKET_NAME. Per eseguire il trasferimento in una directory specifica, specifica gs://BUCKET_NAME/FOLDER_PATH/, inclusa la barra finale.
    • File system POSIX: posix:///PATH. Deve essere un percorso assoluto dalla directory principale della macchina host dell'agente. Se il percorso specificato non esiste, l'agente di trasferimento tenta di creare la struttura di directory nel file system di destinazione durante il processo di trasferimento. L'agente deve disporre delle autorizzazioni in scrittura necessarie nella directory principale.

    Se specifichi un valore per il percorso o la cartella, consulta Specifica dei percorsi di origine e di destinazione per informazioni importanti.

Se il trasferimento richiede agenti di trasferimento, sono disponibili le seguenti opzioni:

  • --source-agent-pool specifica il pool di agenti di origine da utilizzare per questo trasferimento. Obbligatorio per i trasferimenti provenienti da un file system.

  • --destination-agent-pool specifica il pool di agenti di destinazione da utilizzare per questo trasferimento. Obbligatorio per i trasferimenti a un file system.

  • --intermediate-storage-path è il percorso di un bucket Cloud Storage, nel formato gs://my-intermediary-bucket. Obbligatorio per i trasferimenti tra due file system. Per informazioni dettagliate sulla creazione del bucket intermedio, consulta Crea un bucket Cloud Storage come intermediario.

Tra le altre opzioni ci sono:

  • --source-creds-file specifica il percorso relativo di un file locale sulla tua macchina che include le credenziali AWS o Azure per l'origine del trasferimento. Per informazioni sulla formattazione dei file delle credenziali, consulta il riferimento TransferSpec.

  • --do-not-run impedisce a Storage Transfer Service di eseguire il job al momento dell'invio del comando. Per eseguire il job, aggiornalo per aggiungere una pianificazione o utilizza jobs run per avviarlo manualmente.

  • --manifest-file specifica il percorso di un file CSV in Cloud Storage contenente un elenco di file da trasferire dall'origine. Per la formattazione del file manifest, consulta Trasferisci file o oggetti specifici utilizzando un manifest.

  • Informazioni sul job: puoi specificare --name, --description e --source-creds-file. Tieni presente che --name non è supportato per i job di replica tra bucket.

  • 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. Queste includono --include-prefixes e --exclude-prefixes, nonché le condizioni basate sul tempo in --include-modified-[before | after]-[absolute | relative]. Se hai specificato una cartella con l'origine, i filtri dei prefissi sono relativi a quella cartella. Per saperne di più, consulta Filtra gli oggetti di origine per prefisso.

    Le condizioni degli oggetti non sono supportate per i trasferimenti che coinvolgono file system.

  • 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 conservare (--preserve-metadata); facoltativamente, imposta una classe di archiviazione per gli 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.

  • Cloud Logging: abilita Cloud Logging per i trasferimenti senza agenti o i trasferimenti da origini compatibili con S3, con --log-actions e --log-action-states. Per maggiori dettagli, consulta Cloud Logging per Storage Transfer Service.

I trasferimenti da origini compatibili con S3 utilizzano anche le seguenti opzioni:

  • --source-endpoint (obbligatorio) specifica l'endpoint del sistema di archiviazione. Ad esempio, s3.example.com. Rivolgiti al tuo provider per la formattazione corretta. Non specificare il protocollo (http:// o https://).
  • --source-signing-region specifica una regione per le richieste firmate. Ometti questo flag se il provider di spazio di archiviazione non richiede una regione di firma.
  • --source-auth-method specifica il metodo di autenticazione da utilizzare. I valori validi sono AWS_SIGNATURE_V2 o AWS_SIGNATURE_V4. Per saperne di più, consulta la documentazione di Amazon su SigV4 e SigV2.
  • --source-request-model specifica lo stile di indirizzamento da utilizzare. I valori validi sono PATH_STYLE o VIRTUAL_HOSTED_STYLE. Lo stile del percorso utilizza il formato https://s3.example.com/BUCKET_NAME/KEY_NAME. Lo stile di hosting virtuale utilizza il formato `https://BUCKET_NAME.s3.example.com/KEY_NAME.
  • --source-network-protocol specifica il protocollo di rete che gli agenti devono utilizzare per questo job. I valori validi sono HTTP o HTTPS.
  • --source-list-api specifica la versione dell'API Listing S3 per restituire gli oggetti dal bucket. I valori validi sono LIST_OBJECTS o LIST_OBJECTS_V2. Per saperne di più, consulta la documentazione di Amazon su ListObjectsV2 e ListObjects.

Per visualizzare tutte le opzioni, esegui gcloud transfer jobs create --help o consulta la documentazione di riferimento di gcloud.

Esempi

Da Amazon S3 a Cloud Storage

Consulta Trasferisci da Amazon S3 a Cloud Storage.

Da spazio di archiviazione compatibile con S3 a Cloud Storage

Consulta Trasferisci da uno spazio di archiviazione compatibile con S3 a Cloud Storage.

Da file system a Cloud Storage

Consulta Trasferisci da un file system a Cloud Storage.

Da Cloud Storage al file system

Per eseguire il trasferimento da un bucket Cloud Storage a un file system, specifica quanto segue.

gcloud transfer jobs create \
  gs://my-storage-bucket posix:///tmp/destination \
  --destination-agent-pool=my-destination-agent-pool

Da file system a file system

Per eseguire il trasferimento tra due file system, devi specificare un pool di agenti di origine, un pool di agenti di destinazione e un bucket Cloud Storage intermedio attraverso il quale passano i dati.

Per i dettagli sul bucket intermedio, consulta Crea un bucket Cloud Storage come intermediario.

Poi, specifica queste tre risorse quando chiami transfer jobs create:

gcloud transfer jobs create \
  posix:///tmp/source/on/systemA posix:///tmp/destination/on/systemB \
  --source-agent-pool=source_agent_pool \
  --destination-agent-pool=destination_agent_pool \
  --intermediate-storage-path=gs://my-intermediary-bucket

REST

I seguenti esempi mostrano come utilizzare Storage Transfer Service tramite l'API REST.

Quando configuri o modifichi i job di trasferimento utilizzando l'API Storage Transfer Service, l'ora deve essere in formato UTC. Per saperne di più su come specificare la pianificazione di un job di trasferimento, consulta Pianificazione.

Trasferimento tra bucket Cloud Storage

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

Richiesta 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": 2015
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      }
  },
  "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
              }
          }
      }
  ]
}

Trasferimento da Amazon S3 a Cloud Storage

Consulta Trasferisci da Amazon S3 a Cloud Storage.

Trasferimento tra Microsoft Azure Blob Storage e Cloud Storage

In questo esempio, imparerai a spostare i file da Microsoft Azure Storage a un bucket Cloud Storage utilizzando un token di firma di accesso condiviso (SAS) di Microsoft Azure Storage.

Per saperne di più sulla firma di accesso condiviso di Microsoft Azure Storage, consulta Concedi l'accesso limitato alle risorse di Azure Storage utilizzando le firme di accesso condiviso.

Prima di iniziare, consulta Configura l'accesso a Microsoft Azure Storage e Prezzi per comprendere le implicazioni dello spostamento dei dati da Microsoft Azure Storage a Cloud Storage.

Richiesta utilizzando transferJobs create:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 14,
          "month": 2,
          "year": 2020
      },
      "scheduleEndDate": {
          "day": 14
          "month": 2,
          "year": 2020
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      }
  },
  "transferSpec": {
      "azureBlobStorageDataSource": {
          "storageAccount": "AZURE_SOURCE_NAME",
          "azureCredentials": {
              "sasToken": "AZURE_SAS_TOKEN",
          },
          "container": "AZURE_CONTAINER",
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME"
      }
  }
}
Risposta:
200 OK
{
  "transferJob": [
      {
          "creationTime": "2020-02-14T01:01:00.000000000Z",
          "description": "YOUR DESCRIPTION",
          "name": "transferJobs/JOB_ID",
          "status": "ENABLED",
          "lastModificationTime": "2020-02-14T01:01:00.000000000Z",
          "projectId": "PROJECT_ID",
          "schedule": {
              "scheduleStartDate": {
                  "day": 14
                  "month": 2,
                  "year": 2020
              },
              "scheduleEndDate": {
                  "day": 14,
                  "month": 2,
                  "year": 2020
              },
              "startTimeOfDay": {
                  "hours": 1,
                  "minutes": 1
              }
          },
          "transferSpec": {
              "azureBlobStorageDataSource": {
                  "storageAccount": "AZURE_SOURCE_NAME",
                  "azureCredentials": {
                      "sasToken": "AZURE_SAS_TOKEN",
                  },
                  "container": "AZURE_CONTAINER",
              },
              "objectConditions": {},
              "transferOptions": {}
          }
      }
  ]
}

Trasferimento da un file system

Consulta Trasferisci da un file system a Cloud Storage.

Librerie client

I seguenti esempi mostrano come utilizzare Storage Transfer Service in modo programmatico con Go, Java, Node.js e Python.

Quando configuri o modifichi i job di trasferimento in modo programmatico, l'ora deve essere in formato UTC. Per saperne di più su come specificare la pianificazione di un job di trasferimento, consulta Pianificazione.

Per ulteriori informazioni sulle librerie client di Storage Transfer Service, consulta Introduzione alle librerie client di Storage Transfer Service.

Trasferimento tra bucket Cloud Storage

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

Vai

import (
	"context"
	"fmt"
	"io"
	"time"

	"google.golang.org/genproto/googleapis/type/date"
	"google.golang.org/genproto/googleapis/type/timeofday"
	"google.golang.org/protobuf/types/known/durationpb"

	storagetransfer "cloud.google.com/go/storagetransfer/apiv1"
	"cloud.google.com/go/storagetransfer/apiv1/storagetransferpb"
)

func transferToNearline(w io.Writer, projectID string, gcsSourceBucket string, gcsNearlineSinkBucket string) (*storagetransferpb.TransferJob, error) {
	// Your Google Cloud Project ID
	// projectID := "my-project-id"

	// The name of the GCS bucket to transfer objects from
	// gcsSourceBucket := "my-source-bucket"

	// The name of the Nearline GCS bucket to transfer objects to
	// gcsNearlineSinkBucket := "my-sink-bucket"

	ctx := context.Background()
	client, err := storagetransfer.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("storagetransfer.NewClient: %w", err)
	}
	defer client.Close()

	// A description of this job
	jobDescription := "Transfers objects that haven't been modified in 30 days to a Nearline bucket"

	// The time to start the transfer
	startTime := time.Now().UTC()

	req := &storagetransferpb.CreateTransferJobRequest{
		TransferJob: &storagetransferpb.TransferJob{
			ProjectId:   projectID,
			Description: jobDescription,
			TransferSpec: &storagetransferpb.TransferSpec{
				DataSink: &storagetransferpb.TransferSpec_GcsDataSink{
					GcsDataSink: &storagetransferpb.GcsData{BucketName: gcsNearlineSinkBucket}},
				DataSource: &storagetransferpb.TransferSpec_GcsDataSource{
					GcsDataSource: &storagetransferpb.GcsData{BucketName: gcsSourceBucket},
				},
				ObjectConditions: &storagetransferpb.ObjectConditions{
					MinTimeElapsedSinceLastModification: &durationpb.Duration{Seconds: 2592000 /*30 days */},
				},
				TransferOptions: &storagetransferpb.TransferOptions{DeleteObjectsFromSourceAfterTransfer: true},
			},
			Schedule: &storagetransferpb.Schedule{
				ScheduleStartDate: &date.Date{
					Year:  int32(startTime.Year()),
					Month: int32(startTime.Month()),
					Day:   int32(startTime.Day()),
				},
				ScheduleEndDate: &date.Date{
					Year:  int32(startTime.Year()),
					Month: int32(startTime.Month()),
					Day:   int32(startTime.Day()),
				},
				StartTimeOfDay: &timeofday.TimeOfDay{
					Hours:   int32(startTime.Hour()),
					Minutes: int32(startTime.Minute()),
					Seconds: int32(startTime.Second()),
				},
			},
			Status: storagetransferpb.TransferJob_ENABLED,
		},
	}
	resp, err := client.CreateTransferJob(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("failed to create transfer job: %w", err)
	}
	if _, err = client.RunTransferJob(ctx, &storagetransferpb.RunTransferJobRequest{
		ProjectId: projectID,
		JobName:   resp.Name,
	}); err != nil {
		return nil, fmt.Errorf("failed to run transfer job: %w", err)
	}
	fmt.Fprintf(w, "Created and ran transfer job from %v to %v with name %v", gcsSourceBucket, gcsNearlineSinkBucket, resp.Name)
	return resp, nil
}

Java

Stai cercando esempi precedenti? 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());
  }
}

Node.js


// Imports the Google Cloud client library
const {
  StorageTransferServiceClient,
} = require('@google-cloud/storage-transfer');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of the Google Cloud Platform Project that owns the job
// projectId = 'my-project-id'

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

// Google Cloud Storage source bucket name
// gcsSourceBucket = 'my-gcs-source-bucket'

// Google Cloud Storage destination bucket name
// gcsSinkBucket = 'my-gcs-destination-bucket'

// Date to start daily migration
// startDate = new Date()

// Creates a client
const client = new StorageTransferServiceClient();

/**
 * Create a daily migration from a GCS bucket to another GCS bucket for
 * objects untouched for 30+ days.
 */
async function createDailyNearline30DayMigration() {
  // Runs the request and creates the job
  const [transferJob] = await client.createTransferJob({
    transferJob: {
      projectId,
      description,
      status: 'ENABLED',
      schedule: {
        scheduleStartDate: {
          day: startDate.getDate(),
          month: startDate.getMonth() + 1,
          year: startDate.getFullYear(),
        },
      },
      transferSpec: {
        gcsDataSource: {
          bucketName: gcsSourceBucket,
        },
        gcsDataSink: {
          bucketName: gcsSinkBucket,
        },
        objectConditions: {
          minTimeElapsedSinceLastModification: {
            seconds: 2592000, // 30 days
          },
        },
        transferOptions: {
          deleteObjectsFromSourceAfterTransfer: true,
        },
      },
    },
  });

  console.log(`Created transferJob: ${transferJob.name}`);
}

createDailyNearline30DayMigration();

Python

Stai cercando esempi precedenti? 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}")

Trasferimento da Amazon S3 a Cloud Storage

Consulta Trasferisci da Amazon S3 a Cloud Storage.

Trasferimento tra Microsoft Azure Blob Storage e Cloud Storage

In questo esempio, imparerai a spostare i file da Microsoft Azure Storage a un bucket Cloud Storage utilizzando un token di firma di accesso condiviso (SAS) di Microsoft Azure Storage.

Per saperne di più sulla firma di accesso condiviso di Microsoft Azure Storage, consulta Concedi l'accesso limitato alle risorse di Azure Storage utilizzando le firme di accesso condiviso.

Prima di iniziare, consulta Configura l'accesso a Microsoft Azure Storage e Prezzi per comprendere le implicazioni dello spostamento dei dati da Microsoft Azure Storage a Cloud Storage.

Go

Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Go.

Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"
	"os"

	storagetransfer "cloud.google.com/go/storagetransfer/apiv1"
	"cloud.google.com/go/storagetransfer/apiv1/storagetransferpb"
)

func transferFromAzure(w io.Writer, projectID string, azureStorageAccountName string, azureSourceContainer string, gcsSinkBucket string) (*storagetransferpb.TransferJob, error) {
	// Your Google Cloud Project ID.
	// projectID := "my-project-id"

	// The name of your Azure Storage account.
	// azureStorageAccountName := "my-azure-storage-acc"

	// The name of the Azure container to transfer objects from.
	// azureSourceContainer := "my-source-container"

	// The name of the GCS bucket to transfer objects to.
	// gcsSinkBucket := "my-sink-bucket"

	ctx := context.Background()
	client, err := storagetransfer.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("storagetransfer.NewClient: %w", err)
	}
	defer client.Close()

	// The Azure SAS token, should be accessed via environment variable for security
	azureSasToken := os.Getenv("AZURE_SAS_TOKEN")

	req := &storagetransferpb.CreateTransferJobRequest{
		TransferJob: &storagetransferpb.TransferJob{
			ProjectId: projectID,
			TransferSpec: &storagetransferpb.TransferSpec{
				DataSource: &storagetransferpb.TransferSpec_AzureBlobStorageDataSource{
					AzureBlobStorageDataSource: &storagetransferpb.AzureBlobStorageData{
						StorageAccount: azureStorageAccountName,
						AzureCredentials: &storagetransferpb.AzureCredentials{
							SasToken: azureSasToken,
						},
						Container: azureSourceContainer,
					},
				},
				DataSink: &storagetransferpb.TransferSpec_GcsDataSink{
					GcsDataSink: &storagetransferpb.GcsData{BucketName: gcsSinkBucket}},
			},
			Status: storagetransferpb.TransferJob_ENABLED,
		},
	}
	resp, err := client.CreateTransferJob(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("failed to create transfer job: %w", err)
	}
	if _, err = client.RunTransferJob(ctx, &storagetransferpb.RunTransferJobRequest{
		ProjectId: projectID,
		JobName:   resp.Name,
	}); err != nil {
		return nil, fmt.Errorf("failed to run transfer job: %w", err)
	}
	fmt.Fprintf(w, "Created and ran transfer job from %v to %v with name %v", azureSourceContainer, gcsSinkBucket, resp.Name)
	return resp, nil
}

Java

Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Java.

Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto;
import com.google.storagetransfer.v1.proto.TransferProto.RunTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.AzureBlobStorageData;
import com.google.storagetransfer.v1.proto.TransferTypes.AzureCredentials;
import com.google.storagetransfer.v1.proto.TransferTypes.GcsData;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob.Status;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferSpec;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class TransferFromAzure {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Your Google Cloud Project ID
    String projectId = "my-project-id";

    // Your Azure Storage Account name
    String azureStorageAccount = "my-azure-account";

    // The Azure source container to transfer data from
    String azureSourceContainer = "my-source-container";

    // The GCS bucket to transfer data to
    String gcsSinkBucket = "my-sink-bucket";

    transferFromAzureBlobStorage(
        projectId, azureStorageAccount, azureSourceContainer, gcsSinkBucket);
  }

  /**
   * Creates and runs a transfer job to transfer all data from an Azure container to a GCS bucket.
   */
  public static void transferFromAzureBlobStorage(
      String projectId,
      String azureStorageAccount,
      String azureSourceContainer,
      String gcsSinkBucket)
      throws IOException, ExecutionException, InterruptedException {

    // Your Azure SAS token, should be accessed via environment variable
    String azureSasToken = System.getenv("AZURE_SAS_TOKEN");

    TransferSpec transferSpec =
        TransferSpec.newBuilder()
            .setAzureBlobStorageDataSource(
                AzureBlobStorageData.newBuilder()
                    .setAzureCredentials(
                        AzureCredentials.newBuilder().setSasToken(azureSasToken).build())
                    .setContainer(azureSourceContainer)
                    .setStorageAccount(azureStorageAccount))
            .setGcsDataSink(GcsData.newBuilder().setBucketName(gcsSinkBucket).build())
            .build();

    TransferJob transferJob =
        TransferJob.newBuilder()
            .setProjectId(projectId)
            .setStatus(Status.ENABLED)
            .setTransferSpec(transferSpec)
            .build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources,
    // or use "try-with-close" statement to do this automatically.
    try (StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create()) {
      // Create the transfer job
      TransferJob response =
          storageTransfer.createTransferJob(
              TransferProto.CreateTransferJobRequest.newBuilder()
                  .setTransferJob(transferJob)
                  .build());

      // Run the created job
      storageTransfer
          .runTransferJobAsync(
              RunTransferJobRequest.newBuilder()
                  .setProjectId(projectId)
                  .setJobName(response.getName())
                  .build())
          .get();

      System.out.println(
          "Created and ran a transfer job from "
              + azureSourceContainer
              + " to "
              + gcsSinkBucket
              + " with "
              + "name "
              + response.getName());
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Node.js.

Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.


// Imports the Google Cloud client library
const {
  StorageTransferServiceClient,
} = require('@google-cloud/storage-transfer');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of the Google Cloud Platform Project that owns the job
// projectId = 'my-project-id'

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

// Azure Storage Account name
// azureStorageAccount = 'accountname'

// Azure Storage Account name
// azureSourceContainer = 'my-azure-source-bucket'

// Azure Shared Access Signature token
// azureSASToken = '?sv=...'

// Google Cloud Storage destination bucket name
// gcsSinkBucket = 'my-gcs-destination-bucket'

// Creates a client
const client = new StorageTransferServiceClient();

/**
 * Creates a one-time transfer job from Azure Blob Storage to Google Cloud Storage.
 */
async function transferFromBlobStorage() {
  // Setting the start date and the end date as the same time creates a
  // one-time transfer
  const now = new Date();
  const oneTimeSchedule = {
    day: now.getDate(),
    month: now.getMonth() + 1,
    year: now.getFullYear(),
  };

  // Runs the request and creates the job
  const [transferJob] = await client.createTransferJob({
    transferJob: {
      projectId,
      description,
      status: 'ENABLED',
      schedule: {
        scheduleStartDate: oneTimeSchedule,
        scheduleEndDate: oneTimeSchedule,
      },
      transferSpec: {
        azureBlobStorageDataSource: {
          azureCredentials: {
            sasToken: azureSASToken,
          },
          container: azureSourceContainer,
          storageAccount: azureStorageAccount,
        },
        gcsDataSink: {
          bucketName: gcsSinkBucket,
        },
      },
    },
  });

  console.log(
    `Created and ran a transfer job from '${azureSourceContainer}' to '${gcsSinkBucket}' with name ${transferJob.name}`
  );
}

transferFromBlobStorage();

Python

Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per saperne di più, consulta la documentazione di riferimento dell'API Storage Transfer Service Python.

Per eseguire l'autenticazione in Storage Transfer Service, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

from datetime import datetime

from google.cloud import storage_transfer


def create_one_time_azure_transfer(
    project_id: str,
    description: str,
    azure_storage_account: str,
    azure_sas_token: str,
    source_container: str,
    sink_bucket: str,
):
    """Creates a one-time transfer job from Azure Blob Storage to Google Cloud
    Storage."""

    # Initialize client that will be used to create storage transfer requests.
    # This client only needs to be created once, and can be reused for
    # multiple requests.
    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'

    # Azure Storage Account name
    # azure_storage_account = 'accountname'

    # Azure Shared Access Signature token
    # azure_sas_token = '?sv=...'

    # Azure Blob source container name
    # source_container = 'my-azure-source-bucket'

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

    now = datetime.utcnow()
    # Setting the start date and the end date as
    # the same time creates a one-time transfer
    one_time_schedule = {"day": now.day, "month": now.month, "year": now.year}

    transfer_job_request = storage_transfer.CreateTransferJobRequest(
        {
            "transfer_job": {
                "project_id": project_id,
                "description": description,
                "status": storage_transfer.TransferJob.Status.ENABLED,
                "schedule": {
                    "schedule_start_date": one_time_schedule,
                    "schedule_end_date": one_time_schedule,
                },
                "transfer_spec": {
                    "azure_blob_storage_data_source": {
                        "storage_account": azure_storage_account,
                        "azure_credentials": {"sas_token": azure_sas_token},
                        "container": source_container,
                    },
                    "gcs_data_sink": {
                        "bucket_name": sink_bucket,
                    },
                },
            }
        }
    )

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

Trasferimento da un file system

Consulta Trasferisci da un file system a Cloud Storage.

Specifica dei percorsi di origine e di destinazione

I percorsi di origine e destinazione ti consentono di trasferire i dati che si trovano sotto un prefisso specifico e di controllare dove vengono posizionati nella destinazione.

  • Percorso di origine: funge da directory root per il trasferimento. Vengono trasferiti solo gli oggetti in questo percorso e il percorso di origine viene rimosso dall'inizio dei nomi degli oggetti prima che vengano copiati nella destinazione.
  • Percorso di destinazione: funge da prefisso che viene aggiunto all'inizio di tutti i nomi degli oggetti nella destinazione. Per i trasferimenti di file system, specifica la cartella in cui vengono trasferiti gli oggetti.

I percorsi di origine possono essere specificati per tutte le origini dati.

Esempi

Specifica solo di un percorso di destinazione

Supponiamo che tu abbia object.txt nella directory principale di un bucket Cloud Storage denominato bucketA.

Se esegui il trasferimento a bucketB e imposti un percorso di destinazione denominato alpha/, il file viene copiato in bucketB/alpha/object.txt.

Specifica dei percorsi di origine e di destinazione

Considera un trasferimento tra due bucket Cloud Storage:

  • Bucket di origine: bucketA con percorso alpha/
  • Bucket di destinazione: bucketB con percorso bravo/

Un oggetto in gs://bucketA/alpha/object viene trasferito in gs://bucketB/bravo/object.

Il percorso di origine alpha/ viene rimosso dal nome dell'oggetto, lasciando solo object, e il percorso di destinazione bravo/ viene aggiunto all'inizio.

Specifica un percorso di origine

Per specificare un percorso di origine durante la creazione di un job di trasferimento:

  • Nella console Google Cloud , inserisci il percorso nel campo Bucket o cartella.
  • Se utilizzi gcloud CLI, specifica il percorso come parte dell'URI di origine. Ad esempio, gs://SOURCE_BUCKET/SOURCE_PATH/.
  • Con l'API REST o le librerie client, aggiungi un campo path alla specifica dell'origine dati. Ad esempio, il campo gcsDataSource nella specifica TransferSpec. I trasferimenti del file system utilizzano rootDirectory anziché path.

Specifica un percorso di destinazione

Per specificare un percorso di destinazione durante la creazione di un job di trasferimento:

  • Nella console Google Cloud , inserisci il percorso nel campo Bucket o cartella.
  • Se utilizzi gcloud CLI, specifica il percorso come parte dell'URI di destinazione. Ad esempio, gs://DESTINATION_BUCKET/DESTINATION_PATH/.
  • Con l'API REST o le librerie client, aggiungi un campo path alla specifica dell'origine dati. Ad esempio, il campo gcsDataSource o gcsDataSink nella specifica TransferSpec. I trasferimenti del file system utilizzano rootDirectory anziché path.