Trasferimento da URL pubblici a Cloud Storage

Storage Transfer Service può copiare file da un elenco di URL pubblici al tuo bucket Cloud Storage.

Quando crei un trasferimento, fornisci un link a un file con valori separati da tabulazioni (TSV) contenente gli URL e i dettagli degli oggetti da trasferire. Il file TSV può essere ospitato in qualsiasi posizione HTTP o HTTPS accessibile pubblicamente oppure può essere archiviato in un bucket Cloud Storage.

Questa pagina spiega come creare un elenco di URL e passarlo al comando di creazione del job.

Requisiti dei file di origine

  • Gli URL devono essere accessibili pubblicamente e utilizzare i protocolli HTTP o HTTPS.
  • Il server che ospita ogni oggetto:
    • Non deve negare l'accesso all'oggetto con un file robots.txt.
    • Supporta le richieste Range.
    • Restituisce un'intestazione Content-Length in ogni risposta.

Formato elenco URL

Un elenco di URL deve rispettare i seguenti requisiti:

  • Il file deve essere formattato come valori separati da tabulazioni.
  • Gli URL devono essere in ordine lessicografico UTF-8.
  • La prima riga deve specificare TsvHttpData-1.0.
  • Dopo la prima riga, specifica un oggetto per riga.
  • Ogni riga deve contenere l'URL e può contenere anche le dimensioni del file e il checksum MD5 dell'oggetto codificato in base64.

Di seguito è riportato un file TSV di esempio che specifica due oggetti da trasferire. Tieni presente che in questa pagina le tabulazioni vengono visualizzate come spazi; per il tuo file, assicurati di utilizzare le tabulazioni tra i campi.

TsvHttpData-1.0
https://example.com/myfile.pdf    1357    wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png    2468    R9acAaveoPd2y8nniLUYbw==

Ogni riga contiene:

  • L'URL HTTP o HTTPS di un oggetto di origine.
  • (Facoltativo) Le dimensioni dell'oggetto in byte.

    Assicurati che le dimensioni specificate corrispondano alle dimensioni effettive dell'oggetto quando viene recuperato. Se le dimensioni dell'oggetto ricevuto da Cloud Storage non corrispondono alle dimensioni specificate, il trasferimento dell'oggetto non andrà a buon fine.

  • (Facoltativo) Il checksum MD5 dell'oggetto codificato in base64.

    Assicurati che il checksum MD5 specificato corrisponda al checksum MD5 calcolato dai byte trasferiti. Se il checksum MD5 dell'oggetto ricevuto da Cloud Storage non corrisponde al checksum MD5 specificato, il trasferimento dell'oggetto non andrà a buon fine.

Sebbene le dimensioni dell'oggetto e i valori del checksum MD5 siano facoltativi, ti consigliamo vivamente di includerli per garantire l'integrità dei dati.

Ospitare l'elenco degli URL

L'elenco degli URL può essere ospitato in una delle due posizioni seguenti:

  • Un URL accessibile pubblicamente.
  • Un bucket Cloud Storage a cui è stato concesso l'accesso al service agent per Storage Transfer Service.

URL accessibili pubblicamente

Quando memorizzi l'elenco degli URL in un URL accessibile pubblicamente, si applicano i seguenti requisiti:

  • L'URL deve iniziare con http:// o https://.
  • Il server deve impostare un'intestazione Etag efficace nella risposta HTTP quando restituisce l'elenco degli URL.

Ad esempio, puoi archiviare l'elenco in un bucket Cloud Storage e condividere pubblicamente l'oggetto per ottenere un link.

Bucket Cloud Storage

Per evitare di archiviare l'elenco in una posizione pubblica, puoi archiviarlo in un bucket Cloud Storage e concedere l'accesso al service agent per Storage Transfer Service.

Al service agent devono essere concesse le seguenti autorizzazioni:

  • L'autorizzazione storage.object.get sull'oggetto. Questa autorizzazione può essere concessa assegnando il ruolo roles/storage.legacyObjectReader al bucket o con un ruolo personalizzato.
  • L'autorizzazione storage.buckets.get sul bucket. Questa autorizzazione può essere concessa assegnando il ruolo roles/storage.legacyBucketReader o con un ruolo personalizzato.

Per concedere le autorizzazioni al service agent:

Trova l'indirizzo email del service agent

  1. Vai alla googleServiceAccounts.get pagina di riferimento.

    Si apre un riquadro interattivo intitolato Prova questo metodo.

  2. Nel riquadro, in Parametri della richiesta, inserisci l'ID progetto. Il progetto che specifichi qui deve essere il progetto che utilizzi per gestire Storage Transfer Service, che potrebbe essere diverso dal progetto del bucket dell'elenco degli URL.

  3. Fai clic su Esegui.

L'indirizzo email del service agent viene restituito come valore di accountEmail e utilizza il formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

Copia questo valore.

Concedere i ruoli richiesti

Per concedere il ruolo roles/storage.objectViewer e il ruolo roles/storage.bucketViewer al service agent nel bucket contenente l'elenco degli URL, segui le istruzioni riportate in Impostare e gestire i criteri IAM sui bucket.

L'entità che stai aggiungendo è l'indirizzo email del service agent. Se necessario, l'identificatore dell'entità è serviceAccount. Ad esempio, serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

Creare un job di trasferimento dell'elenco degli URL

Per specificare un elenco di URL quando crei un job di trasferimento, segui queste istruzioni:

Google Cloud Console

Segui le istruzioni riportate in Creare un job di trasferimento.

Quando scegli un'origine:

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

  2. In URL del file TSV, fornisci l'URL del file con valori separati da tabulazioni (TSV). L'URL è un indirizzo HTTP/HTTPS (ad es. https://example.com/urllist.tsv) o un percorso Cloud Storage (ad es. gs://my-bucket/urllist.tsv).

gcloud CLI

Per creare un nuovo job di trasferimento, utilizza il comando gcloud transfer jobs create.

gcloud transfer jobs create \
  SOURCE DESTINATION

Per i trasferimenti dell'elenco degli URL, il valore di SOURCE è l'URL del file TSV. L'URL è un indirizzo HTTP/HTTPS (ad es. https://example.com/urllist.tsv) o un percorso Cloud Storage (ad es. gs://my-bucket/urllist.tsv).

Per saperne di più sulla creazione di trasferimenti utilizzando gcloud CLI, consulta Creare job di trasferimento.

REST

Per creare un job di trasferimento dell'elenco degli URL utilizzando l'API REST, specifica l'URL del file TSV nel campo listUrl:

{
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "httpDataSource": {
      "listUrl": "URL"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

Il valore di URL è un indirizzo HTTP/HTTPS (ad es. https://example.com/urllist.tsv) o un percorso Cloud Storage (ad es. gs://my-bucket/urllist.tsv).

Per ulteriori dettagli sulla creazione di trasferimenti utilizzando l'API REST, consulta la documentazione di riferimento dell'API REST.