Storage Transfer Service supporta trasferimenti da sistemi di archiviazione di oggetti cloud o on-premise compatibili con l'API Amazon S3.
Storage Transfer Service accede ai tuoi dati in origini compatibili 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 trasferiscono collettivamente i dati in parallelo.
Questa funzionalità ti consente di eseguire la migrazione dall'archiviazione di oggetti on-premise o su cloud a Cloud Storage, archiviare i dati per liberare capacità di archiviazione on-premise, replicare i dati in Google Cloud per la continuità aziendale o trasferire i dati in 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 costi considerevolmente inferiori per il trasferimento dei dati in uscita.
Prima di iniziare
Prima di configurare i trasferimenti, completa i seguenti passaggi:
- Concedi il ruolo Amministratore Storage Transfer al tuo account utente.
- Installa gcloud CLI.
- Soddisfa i requisiti per i trasferimenti del file system, inclusa l'installazione di Docker sulla macchina dell'agente di trasferimento.
Non includere informazioni sensibili come informazioni che consentono l'identificazione personale o dati di sicurezza nel prefisso dell'ID agente, nel nome del pool di agenti o 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.
Ottenere le credenziali di origine
Il trasferimento da origini compatibili con S3 richiede un ID chiave di accesso e una chiave di accesso segreta.
I passaggi per ottenerli dipendono dal fornitore di spazio di archiviazione.
L'account da cui vengono generati l'ID e la chiave richiede una delle seguenti autorizzazioni:
- Autorizzazione di sola lettura sugli oggetti di origine, se non vuoi eliminare oggetti all'origine.
- Accesso completo agli oggetti di origine, se scegli di eliminare gli oggetti all'origine nell'ambito del trasferimento.
Dopo aver creato l'account, aggiunto le autorizzazioni e scaricato l'ID della chiave di accesso e la chiave di accesso segreta, conserva l'ID e la chiave in un luogo sicuro.
Configura l'accesso al bucket di destinazione
Segui le istruzioni in Configurare l'accesso a un sink: Cloud Storage per configurare l'accesso al bucket di destinazione.
Crea un pool di agenti
Non includere informazioni sensibili come informazioni che consentono l'identificazione personale o dati di sicurezza nel nome del pool di agenti. 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.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, in cui sono elencati i pool di agenti esistenti.
Fai clic su Crea un altro pool.
Assegna un nome al pool e, se vuoi, descrivilo.
Puoi scegliere di impostare un limite di larghezza di banda che verrà applicato all'intero pool. La larghezza di banda specificata in MB/s verrà suddivisa tra tutti gli agenti nel pool. Per ulteriori informazioni, consulta Gestione della 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
Dove:
PROJECT_ID
: l'ID progetto in cui stai creando il pool di agenti.AGENT_POOL_ID
: l'ID pool di agenti che stai creando.
Se un pool di agenti è bloccato nello stato Creating
per più di 30 minuti, ti consigliamo di eliminare il pool di agenti e ricrearlo.
La revoca delle autorizzazioni necessarie di Storage Transfer Service da un progetto mentre un pool di agenti è nello stato Creating
comporta un comportamento del servizio non corretto.
Interfaccia a riga di comando gcloud
Per creare un pool di agenti con lo strumento a riga di comando gcloud
, esegui
[gcloud transfer agent-pools create
][agent-pools-create].
gcloud transfer agent-pools create NAME \
[--no-async] \
[--bandwidth-limit=BANDWIDTH_LIMIT] \
[--display-name=DISPLAY_NAME]
Dove sono disponibili le seguenti opzioni:
NAME è un identificatore univoco e permanente di questo pool.
--no-async
blocca altre attività nel terminale fino a quando il pool non viene creato. Se non è inclusa, la creazione del pool viene eseguita in modo asincrono.--bandwidth-limit
definisce la quantità di larghezza di banda in MB/s da rendere disponibile agli agenti di questo pool. Un limite di larghezza di banda si applica a tutti gli agenti in un pool e può contribuire a evitare che il carico di lavoro 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 questo flag non viene specificato, gli agenti di questo pool utilizzeranno tutta la larghezza di banda disponibile.--display-name
è un nome modificabile per aiutarti a identificare questo pool. Puoi includere dettagli che potrebbero non rientrare nel nome completo univoco della risorsa del pool.
Installa agenti di trasferimento
Gli agenti di trasferimento sono agenti software che coordinano le attività di trasferimento dalla tua origine attraverso Storage Transfer Service. Devono essere installati su un sistema con accesso ai dati di origine.
Interfaccia a riga di comando gcloud
Per installare gli agenti da utilizzare con un'origine compatibile con S3 mediante l'interfaccia a riga di comando gcloud
, utilizza il comando transfer agents install
.
Devi fornire le credenziali di accesso sotto forma di variabili di ambiente come valori di AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
oppure 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 dell'account di servizio, utilizza l'opzione --creds-file
:
gcloud transfer agents install --pool=POOL_NAME \
--creds-file=/relative/path/to/service-account-key.json
Devi concedere i seguenti ruoli IAM all'account utente o di servizio utilizzato per eseguire gli agenti di trasferimento:
- Agente Storage Transfer (
roles/storagetransfer.transferAgent
) sul progetto. Per le istruzioni, consulta Concedi un singolo ruolo nella documentazione IAM. - Amministratore oggetti Storage (
roles/storage.objectAdmin
) sul progetto o nel bucket di destinazione oppure un ruolo personalizzato contenente le autorizzazioni elencate in Autorizzazioni di trasferimento basate su agenti. Per le istruzioni, consulta Aggiungere un'entità a un criterio a livello di bucket.
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_a
Inserisci:
bucket_a
Inserisci l'Endpoint. Non includere il protocollo (
http://
ohttps://
). Ad esempio:example.com
Specifica eventuali attributi facoltativi per questo trasferimento:
Inserisci la Regione 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 è fornito in stile percorso (ad es.
https://example.com/bucket-name/key-name
) o in stile ospitato virtuale (ad es.https://bucket-name.example.com/key-name
). Per ulteriori informazioni, consulta Hosting virtuale dei bucket nella documentazione di Amazon.Seleziona il Protocollo di rete.
Seleziona la versione dell'API dell'elenco da utilizzare. Per ulteriori informazioni, consulta la documentazione ListObjectsV2 e ListObjects.
Fai clic su Passaggio successivo.
Configura il sink
Nel campo Bucket o cartella, inserisci il bucket di destinazione e, facoltativamente, il nome della cartella oppure fai clic su Sfoglia per selezionare un bucket da un elenco di bucket esistenti nel progetto attuale. Per creare un nuovo bucket, fai clic su Crea nuovo bucket.
Fai clic su Passaggio successivo.
Scegli le impostazioni di trasferimento
Nel campo Description (Descrizione), inserisci una descrizione del trasferimento. Come best practice, inserisci una descrizione significativa e univoca in modo da poter distinguere i job.
In Opzioni dei metadati, scegli di utilizzare le opzioni predefinite oppure fai clic su Visualizza e seleziona opzioni per specificare i valori di tutti i metadati supportati. Per i 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 file dall'origine dopo il trasferimento: elimina i file dall'origine dopo che sono stati trasferiti alla destinazione.
Elimina i file dalla destinazione se non sono anche nell'origine: se i file nel bucket Cloud Storage di destinazione non sono anche nell'origine, eliminali 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 i quali inviare notifiche. Per ulteriori dettagli, consulta la pagina relativa alle notifiche Pub/Sub.
Fai clic su Passaggio successivo.
Programma il trasferimento
Puoi pianificare il trasferimento in modo che venga eseguito una sola volta o configurare un trasferimento ricorrente.
Fai clic su Crea per creare il job di trasferimento.
Interfaccia a riga di comando gcloud
Prima di utilizzare l'interfaccia a riga di comando gcloud
per creare un trasferimento, segui le istruzioni in
Configurare l'accesso a un sink di 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 comando seguente.
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-endpoint
specifica l'endpoint del sistema di archiviazione. Ad esempio,s3.us-east.example.com
. Rivolgiti al tuo provider per la formattazione corretta.
I restanti flag sono facoltativi:
--source-signing-region
specifica una regione per la firma delle richieste. Ometti questo flag se il tuo provider di archiviazione non richiede una regione di firma.--source-auth-method
specifica il metodo di autenticazione da utilizzare. I valori validi sonoAWS_SIGNATURE_V2
oAWS_SIGNATURE_V4
. Per ulteriori informazioni, consulta la documentazione di Amazon SigV4 e SigV2.--source-request-model
specifica lo stile di indirizzamento da utilizzare. I valori validi sonoPATH_STYLE
oVIRTUAL_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-protocol
specifica il protocollo di rete che gli agenti devono utilizzare per questo job. I valori validi sonoHTTP
oHTTPS
.--source-list-api
specifica la versione dell'API S3 che restituisce gli oggetti dal bucket. I valori validi sonoLIST_OBJECTS
oLIST_OBJECTS_V2
. Per ulteriori informazioni, consulta la documentazione di Amazon ListObjectsV2 e ListObjects.
Per ulteriori opzioni relative al 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 in Configurare l'accesso a un sink di 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 la documentazione di riferimento dell'API AwsS3CompatibleData
.
Librerie client
Prima di utilizzare le librerie client per creare un trasferimento, segui le istruzioni in Configurare l'accesso a un sink di Cloud Storage.
Go
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta librerie client di Storage Transfer Service. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di Storage Transfer Service.
Per eseguire l'autenticazione in Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare 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 maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Storage Transfer Service.
Per eseguire l'autenticazione in Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare 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 maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js di Storage Transfer Service.
Per eseguire l'autenticazione in Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare 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 maggiori informazioni, consulta la documentazione di riferimento dell'API Python di Storage Transfer Service.
Per eseguire l'autenticazione in Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Domande frequenti
È previsto un costo per il trasferimento da uno spazio di archiviazione compatibile con S3?
I trasferimenti da uno spazio di archiviazione compatibile con S3 non sono soggetti alla tariffa "Trasferimenti di Storage Transfer Service che richiedono agenti". Consulta la pagina dei prezzi per eventuali altre commissioni che potrebbero essere addebitate. Inoltre, potrebbero esserti addebitati costi operativi e per il trasferimento di dati in uscita dal tuo cloud provider di origine.
Cloud Logging è supportato per i trasferimenti dello spazio di archiviazione compatibili con S3?
Sì, puoi abilitare Cloud Logging per i tuoi trasferimenti seguendo le istruzioni in Cloud Logging per Storage Transfer Service.
I trasferimenti utilizzando 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 il differenza dalla destinazione. Se l'operazione di elenco è già completata quando viene aggiunto il nuovo oggetto, quest'ultimo viene ignorato fino al trasferimento successivo.
Storage Transfer Service esegue la corrispondenza del checksum su 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 nello spazio di archiviazione compatibile con S3 tramite 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 velocità effettiva si può raggiungere per i trasferimenti da uno spazio di archiviazione compatibile con S3?
La velocità effettiva di trasferimento può essere scalata aggiungendo altri agenti di trasferimento. Consigliamo di utilizzare tre agenti per la tolleranza di errore e per riempire una pipeline con <10 Gbps. Per aumentare la scalabilità, aggiungi altri agenti. Gli agenti possono essere aggiunti e rimossi mentre è in corso un trasferimento.
Dove occorre eseguire il deployment degli agenti di trasferimento per trasferire i dati da Amazon S3 a Cloud Storage?
Puoi installare agenti in Amazon EC2 o EKS all'interno della stessa regione del bucket. Puoi anche eseguire agenti su Google Cloud nella regione più vicina.