Storage Transfer Service può copiare file da un elenco di URL pubblici nel 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
robots.txt
. - Supporta le richieste
Range
. - Restituisce un'intestazione
Content-Length
in ogni risposta.
- Non deve negare l'accesso all'oggetto con un
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 alfabetico 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 la somma di controllo MD5 codificata in base64 dell'oggetto.
Di seguito è riportato un file TSV di esempio che specifica due oggetti da trasferire. Tieni presente che su 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 a quelle specificate, il trasferimento dell'oggetto non andrà a buon fine.
(Facoltativo) La somma di controllo MD5 dell'oggetto con codifica 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, consigliamo vivamente di includerli per garantire l'integrità dei dati.
Hosting dell'elenco di URL
L'elenco di URL può essere ospitato in una delle due posizioni:
- Un URL pubblicamente accessibile.
Un bucket Cloud Storage a cui è stato concesso l'accesso all'agente di servizio per Storage Transfer Service.
URL accessibili pubblicamente
Quando l'elenco di URL viene archiviato in un URL pubblicamente accessibile, si applicano i seguenti requisiti:
- L'URL deve iniziare con
http://
ohttps://
. - Il server deve impostare un'intestazione
Etag
sicura nella risposta HTTP quando restituisce l'elenco di URL.
Ad esempio, puoi archiviare l'elenco in un bucket Cloud Storage e condividere l'oggetto pubblicamente 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 all'agente di servizio per Storage Transfer Service.
All'agente di servizio devono essere concesse le seguenti autorizzazioni:
- L'autorizzazione
storage.object.get
per l'oggetto. Questo può essere concesso concedendo il ruoloroles/storage.legacyObjectReader
al bucket o con un ruolo personalizzato. - L'autorizzazione
storage.buckets.get
sul bucket. Questo può essere concesso concedendo il ruoloroles/storage.legacyBucketReader
o un ruolo personalizzato.
Per concedere le autorizzazioni all'agente di servizio:
Trovare l'email dell'agente di servizio
Vai alla
googleServiceAccounts.get
pagina di riferimento.Viene visualizzato un riquadro interattivo denominato Prova questo metodo.
Nel riquadro, in Parametri di richiesta, inserisci il tuo ID progetto. Il progetto specificato qui deve essere quello che utilizzi per gestire Storage Transfer Service, che potrebbe essere diverso dal progetto del bucket dell'elenco di URL.
Fai clic su Execute (Esegui).
L'email dell'agente di servizio viene restituita 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
all'agente di servizio nel bucket contenente l'elenco di URL, segui le istruzioni riportate in Impostare e gestire i criteri IAM nei bucket.
L'entità che stai aggiungendo è l'indirizzo email dell'agente di servizio. Se necessario,
l'identificatore principale è serviceAccount
. Ad esempio,
serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Creare un job di trasferimento di un elenco di URL
Per specificare un elenco di URL durante la creazione di un job di trasferimento:
Google Cloud console
Segui le istruzioni riportate in Creare un job di trasferimento.
Quando scegli un'origine:
In Tipo di origine, seleziona Elenco di URL e fai clic su Passaggio successivo.
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
).
Interfaccia a riga di comando gcloud
Per creare un nuovo job di trasferimento, utilizza il comando gcloud transfer jobs create
.
gcloud transfer jobs create \
SOURCE DESTINATION
Per i trasferimenti di elenchi di 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 di Cloud Storage
(ad es. gs://my-bucket/urllist.tsv
).
Per ulteriori informazioni sulla creazione di trasferimenti utilizzando gcloud CLI, consulta Creare job di trasferimento.
REST
Per creare un job di trasferimento di elenchi di 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 maggiori dettagli sulla creazione di trasferimenti utilizzando l'API REST, consulta il riferimento all'API REST.