Storage Transfer Service supporta i trasferimenti da sistemi di archiviazione di oggetti cloud o on-premise compatibili con l'API Amazon S3.
Storage Transfer Service accede ai tuoi dati nello spazio di archiviazione compatibile con S3 utilizzando agenti di trasferimento di cui è stato eseguito il deployment su VM vicine all'origine dati. Questi agenti vengono eseguiti in un container Docker e appartengono a un pool di agenti, ovvero una raccolta di agenti che utilizzano la stessa configurazione e che spostano collettivamente i tuoi dati in parallelo.
Questa funzionalità ti consente di eseguire la migrazione dall'archiviazione di oggetti on-premise o cloud a Cloud Storage, archiviare i dati per liberare capacità di archiviazione on-premise, replicare i dati su Google Cloud per la continuità aziendale o trasferire i dati su Google Cloud per l'analisi e l'elaborazione. Per i clienti che eseguono la migrazione da AWS S3 a Cloud Storage, questa funzionalità offre un'opzione per controllare le route di rete verso Google Cloud, con una conseguente riduzione significativa delle tariffe per il trasferimento di dati in uscita.
Prima di iniziare
Prima di configurare i trasferimenti, completa i seguenti passaggi:
- Installa gcloud CLI.
- Soddisfa i requisiti per i trasferimenti del file system, inclusa l'installazione di Docker sulla macchina dell'agente di trasferimento.
Prerequisiti
Prima di configurare il trasferimento, assicurati di aver configurato quanto segue:
- Autorizzazioni utente: assicurati che il tuo account utente o il account di servizio gestito dall'utente disponga dell'autorizzazione per configurare i trasferimenti e i pool di agenti. Consulta Autorizzazioni utente richieste.
- Autorizzazioni a livello di progetto basate su agenti: assicurati di aver configurato i ruoli a livello di progetto richiesti per l'account dell'agente di servizio e dell'agente di trasferimento. Vedi Autorizzazioni a livello di progetto basate su agenti.
- Autorizzazioni compatibili con S3 di origine: ottieni le credenziali API con autorizzazioni in lettura per il bucket di origine. Consulta Configura l'accesso a un'origine: spazio di archiviazione compatibile con S3.
- Autorizzazioni del bucket di destinazione: concedi le autorizzazioni richieste nel bucket Cloud Storage di destinazione. Consulta Configura l'accesso a un sink: Cloud Storage.
Opzioni di trasferimento
Le seguenti funzionalità di Storage Transfer Service sono disponibili per i trasferimenti da uno spazio di archiviazione compatibile con S3 a Cloud Storage:
- Trasferisci file specifici utilizzando un manifest
- Puoi passare un elenco di file su cui Storage Transfer Service può agire. Per maggiori dettagli, consulta Trasferisci file o oggetti specifici utilizzando un manifest.
- Specifica la classe di archiviazione
- Puoi specificare la classe di archiviazione di Cloud Storage da utilizzare per i dati nel bucket di destinazione. Consulta le opzioni
StorageClassper i dettagli su REST o utilizza il flag--custom-storage-classcon Google Cloud CLI.Tieni presente che le impostazioni della classe di archiviazione vengono ignorate se il bucket di destinazione ha Autoclass abilitato. Se Autoclass è abilitata, gli oggetti trasferiti nel bucket vengono inizialmente impostati su Standard Storage.
- Conservazione dei metadati
-
Quando trasferisci file dallo spazio di archiviazione compatibile con S3, Storage Transfer Service può facoltativamente conservare determinati attributi come metadati personalizzati.
Per informazioni dettagliate su quali metadati possono essere conservati e su come configurare il trasferimento, consulta la sezione Da Amazon S3 o spazio di archiviazione compatibile con S3 a Cloud Storage di Conservazione dei metadati.
- Logging e monitoraggio
- I trasferimenti dallo spazio di archiviazione compatibile con S3 possono essere visualizzati in Cloud Logging e Cloud Monitoring. Per maggiori dettagli, consulta Cloud Logging per Storage Transfer Service e Monitora i job di trasferimento. Puoi anche configurare le notifiche Pub/Sub.
Crea un pool di agenti
Per creare un pool di agenti:
Console Google Cloud
Nella console Google Cloud , vai alla pagina Pool di agenti.
Viene visualizzata la pagina Pool di agenti, che elenca i pool di agenti esistenti.
Fai clic su Crea un altro pool.
Assegna un nome al pool e, facoltativamente, una descrizione.
Puoi scegliere di impostare un limite di larghezza di banda che verrà applicato al pool nel suo complesso. La larghezza di banda specificata in MB/s verrà suddivisa tra tutti gli agenti del pool. Per saperne di più, consulta Gestisci la larghezza di banda della rete.
Fai clic su Crea.
API REST
Utilizza projects.agentPools.create:
POST https://storagetransfer.googleapis.com/v1/projects/PROJECT_ID/agentPools?agent_pool_id=AGENT_POOL_ID
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto in cui stai creando il pool di agenti.AGENT_POOL_ID: l'ID del pool di agenti che stai creando.
Se un pool di agenti è bloccato nello stato Creating per più di 30 minuti,
ti consigliamo di eliminarlo e crearlo di nuovo.
La revoca delle autorizzazioni di Storage Transfer Service richieste da un progetto mentre un pool di agenti è nello stato Creating comporta un comportamento errato del servizio.
gcloud CLI
Per creare un pool di agenti con lo strumento a riga di comando gcloud, esegui gcloud transfer agent-pools create.
gcloud transfer agent-pools create AGENT_POOL
Sono disponibili le seguenti opzioni:
AGENT_POOL è un identificatore univoco e permanente per questo pool.
--no-asyncblocca altre attività nel terminale finché il pool non viene creato. Se non è incluso, la creazione del pool viene eseguita in modo asincrono.--bandwidth-limitdefinisce la quantità di larghezza di banda in MB/s da mettere a disposizione degli agenti di questo pool. Un limite di larghezza di banda si applica a tutti gli agenti di un pool e può contribuire a evitare che il workload di trasferimento del pool interrompa altre operazioni che condividono la larghezza di banda. Ad esempio, inserisci "50" per impostare un limite di larghezza di banda di 50 MB/s. Se non specifichi questo flag, gli agenti di questo pool utilizzeranno tutta la larghezza di banda disponibile.--display-nameè un nome modificabile che ti aiuta a identificare questo pool. Puoi includere dettagli che potrebbero non rientrare nel nome completo univoco della risorsa del pool.
Installa gli agenti di trasferimento
Gli agenti di trasferimento sono agenti software che coordinano le attività di trasferimento dall'origine tramite Storage Transfer Service. Devono essere installati su un sistema con accesso ai dati di origine.
gcloud CLI
Per installare gli agenti da utilizzare con un'origine compatibile con S3 utilizzando l'interfaccia a riga di comando gcloud, utilizza il comando transfer agents install.
Devi fornire le credenziali di accesso come variabili di ambiente come valori di AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY o archiviate come credenziali predefinite nei file di configurazione del sistema.
export AWS_ACCESS_KEY_ID=ID
export AWS_SECRET_ACCESS_KEY=SECRET
gcloud transfer agents install --pool=POOL_NAME
Per eseguire gli agenti utilizzando una chiave del service account, utilizza l'opzione --creds-file:
gcloud transfer agents install --pool=POOL_NAME \
--creds-file=/relative/path/to/service-account-key.json
Creare un job di trasferimento
Console Google Cloud
Segui questi passaggi per creare un trasferimento da un'origine compatibile con S3 a un bucket Cloud Storage.
Vai alla pagina Storage Transfer Service nella console Google Cloud .
Fai clic su Crea job di trasferimento. Viene visualizzata la pagina Crea un job di trasferimento.
Seleziona Archiviazione di oggetti compatibile con S3 come Tipo di origine. La destinazione deve essere Google Cloud Storage.
Fai clic su Passaggio successivo.
Configura l'origine
Specifica le informazioni richieste per questo trasferimento:
Seleziona il pool di agenti che hai configurato per questo trasferimento.
Inserisci il Nome bucket relativo all'endpoint. Ad esempio, se i tuoi dati si trovano in:
https://example.com/bucket_aInserisci:
bucket_aInserisci l'endpoint. Non includere il protocollo (
http://ohttps://) o il nome del bucket. Ad esempio:example.com
Specifica gli attributi facoltativi per questo trasferimento:
Inserisci la Regione di firma da utilizzare per la firma delle richieste.
Scegli la procedura di firma per questa richiesta.
Seleziona lo Stile di indirizzamento. Questo determina se il nome del bucket viene fornito in stile percorso (ad es.
https://example.com/bucket-name/key-name) o in stile hosting virtuale (ad es.https://bucket-name.example.com/key-name). Per saperne di più, consulta Hosting virtuale dei bucket nella documentazione di Amazon.Seleziona il Protocollo di rete.
Seleziona la versione dell'API di elenco da utilizzare. Per saperne di più, consulta la documentazione di ListObjectsV2 e ListObjects.
Fai clic su Passaggio successivo.
Configura il sink
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.Fai clic su Passaggio successivo.
Scegli le impostazioni di trasferimento
Nel campo Descrizione, inserisci una descrizione del trasferimento. Come best practice, inserisci una descrizione significativa e univoca in modo da poter distinguere i job.
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.
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.
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.
In Opzioni di notifica, seleziona l'argomento Pub/Sub e gli eventi per cui ricevere notifiche. Per maggiori dettagli, consulta Notifiche Pub/Sub.
Fai clic su Passaggio successivo.
Pianifica il trasferimento
Puoi pianificare l'esecuzione del trasferimento una sola volta o configurare un trasferimento ricorrente.
Fai clic su Crea per creare il job di trasferimento.
gcloud CLI
Prima di utilizzare l'interfaccia a riga di comando gcloud per creare un trasferimento, segui le istruzioni riportate in Configura l'accesso a un sink Cloud Storage.
Per utilizzare l'interfaccia a riga di comando gcloud per creare un trasferimento da un'origine compatibile con S3 a un bucket Cloud Storage, utilizza il seguente comando.
gcloud transfer jobs create s3://SOURCE_BUCKET_NAME gs://SINK_BUCKET_NAME \
--source-agent-pool=POOL_NAME \
--source-endpoint=ENDPOINT \
--source-signing-region=REGION \
--source-auth-method=AWS_SIGNATURE_V2 | AWS_SIGNATURE_V4 \
--source-request-model=PATH_STYLE | VIRTUAL_HOSTED_STYLE \
--source-network-protocol=HTTP | HTTPS \
--source-list-api=LIST_OBJECTS | LIST_OBJECTS_V2
I seguenti flag sono obbligatori:
--source-agent-poolè il nome del pool di agenti da utilizzare per questo trasferimento.--source-endpointspecifica l'endpoint del sistema di archiviazione. Ad esempio,s3.us-east.example.com. Rivolgiti al tuo provider per la formattazione corretta. Non includere il protocollo (ad es.https://) o il nome del bucket.
I flag rimanenti sono facoltativi:
--source-signing-regionspecifica una regione per le richieste firmate. Ometti questo flag se il provider di spazio di archiviazione non richiede una regione di firma.--source-auth-methodspecifica il metodo di autenticazione da utilizzare. I valori validi sonoAWS_SIGNATURE_V2oAWS_SIGNATURE_V4. Per saperne di più, consulta la documentazione di Amazon su SigV4 e SigV2.--source-request-modelspecifica lo stile di indirizzamento da utilizzare. I valori validi sonoPATH_STYLEoVIRTUAL_HOSTED_STYLE. Lo stile del percorso utilizza il formatohttps://s3.REGION.example.com/BUCKET_NAME/KEY_NAME. Lo stile con hosting virtuale utilizza il formato `https://BUCKET_NAME.s3.REGION.example.com/KEY_NAME.--source-network-protocolspecifica il protocollo di rete che gli agenti devono utilizzare per questo job. I valori validi sonoHTTPoHTTPS.--source-list-apispecifica la versione dell'API Listing S3 per restituire gli oggetti dal bucket. I valori validi sonoLIST_OBJECTSoLIST_OBJECTS_V2. Per saperne di più, consulta la documentazione di Amazon su ListObjectsV2 e ListObjects.
Per ulteriori opzioni del job di trasferimento, esegui gcloud transfer jobs create --help o consulta la documentazione di riferimento di gcloud.
API REST
Prima di utilizzare l'API REST per creare un trasferimento, segui le istruzioni riportate in Configura l'accesso a un sink Cloud Storage.
Per creare un trasferimento da un'origine compatibile con S3 utilizzando l'API REST, crea un oggetto JSON simile all'esempio seguente.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"awsS3CompatibleData": {
"region":"us-east-1",
"s3Metadata":{
"protocol": "NETWORK_PROTOCOL_HTTPS",
"requestModel": "REQUEST_MODEL_VIRTUAL_HOSTED_STYLE",
"authMethod": "AUTH_METHOD_AWS_SIGNATURE_V4"
},
"endpoint": "example.com",
"bucketName": "BUCKET_NAME",
"path": "PATH",
},
"gcsDataSink": {
"bucketName": "SINK_NAME",
"path": "SINK_PATH"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
Per le descrizioni dei campi, consulta il Riferimento API AwsS3CompatibleData.
Librerie client
Prima di utilizzare le librerie client per creare un trasferimento, segui le istruzioni riportate in Configura l'accesso a un sink 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.
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.
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.
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.
Domande frequenti
Cosa succede se il mio provider compatibile con S3 utilizza un certificato SSL personalizzato?
Se il tuo provider compatibile con S3 utilizza un certificato SSL non emesso da un'autorità di certificazione pubblica, i trasferimenti potrebbero non riuscire con un errore TLS. Per risolvere il problema, monta il certificato radice del provider nel container dell'agente di trasferimento in /etc/ssl/certs/CERT_FILE utilizzando il flag Docker -v.
Ad esempio:
sudo docker run --ulimit memlock=64000000 -d --rm \ -v HOST_DIRECTORY:CONTAINER_DIRECTORY \ -v PATH/TO/KEY.JSON:/etc/gcloud/key.json:ro \ -v /path/to/your/CERT_FILE:/etc/ssl/certs/CERT_FILE \ -e AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --creds-file=/etc/gcloud/key.json \ --hostname=$(hostname) \ --agent-pool=POOL_NAME
È previsto un costo per il trasferimento dallo spazio di archiviazione compatibile con S3?
I trasferimenti dallo spazio di archiviazione compatibile con S3 non sono soggetti alla tariffa "Trasferimenti di Storage Transfer Service che richiedono agenti". Consulta la sezione Prezzi per eventuali altre tariffe che potrebbero essere applicate. Potrebbero essere applicati costi operativi e per il trasferimento di dati in uscita dal tuo cloud provider di origine.
Cloud Logging è supportato per i trasferimenti di archiviazione compatibili con S3?
Sì, puoi abilitare Cloud Logging per i tuoi trasferimenti seguendo le istruzioni riportate in Cloud Logging per Storage Transfer Service.
I trasferimenti che utilizzano un manifest sono supportati?
Sì, i file manifest sono supportati per i trasferimenti compatibili con S3.
Se aggiungo un oggetto al bucket di origine dopo l'avvio del job, l'oggetto viene trasferito?
Storage Transfer Service esegue un'operazione di elenco sul bucket di origine per calcolare la differenza rispetto alla destinazione. Se l'operazione di elenco è già stata completata quando viene aggiunto il nuovo oggetto, quest'ultimo viene ignorato fino al trasferimento successivo.
Storage Transfer Service esegue la corrispondenza del checksum sulle origini compatibili con S3?
Storage Transfer Service si basa sui dati di checksum restituiti dall'origine. Per l'archiviazione compatibile con S3, Storage Transfer Service prevede che l'Etag dell'oggetto sia l'hash MD5 dell'oggetto.
Tuttavia, gli oggetti trasferiti allo spazio di archiviazione compatibile con S3 utilizzando il caricamento multiparte S3 non hanno ETag MD5. In questo caso, Storage Transfer Service utilizza le dimensioni del file per convalidare l'oggetto trasferito.
Quale throughput è possibile ottenere per i trasferimenti dallo spazio di archiviazione compatibile con S3?
Il throughput del trasferimento può essere scalato aggiungendo altri agenti di trasferimento. Ti consigliamo di utilizzare 3 agenti per la tolleranza di errore e per riempire un pipe <10 Gbps. Per scalare ulteriormente, aggiungi altri agenti. Gli agenti possono essere aggiunti e rimossi mentre è in corso un trasferimento.
Dove devono essere eseguiti il deployment degli agenti di trasferimento per trasferire i dati da Amazon S3 a Cloud Storage?
Puoi installare gli agenti in Amazon EC2 o EKS nella stessa regione del tuo bucket. Puoi anche eseguire gli agenti su Google Cloud nella regione più vicina.