Storage Transfer Service può ascoltare le notifiche degli eventi in AWS o Google Cloud per trasferire automaticamente i dati aggiunti o aggiornati nell'origine in ogni località. I trasferimenti basati su eventi sono supportati da AWS S3 o Cloud Storage in Cloud Storage.
I trasferimenti basati su eventi restano in ascolto delle notifiche degli eventi Amazon S3 inviati ad Amazon SQS per le origini AWS S3. Le origini Cloud Storage inviano a una sottoscrizione Pub/Sub.
Vantaggi dei trasferimenti basati su eventi
Poiché i trasferimenti basati su eventi rilevano le modifiche al bucket di origine, gli aggiornamenti vengono copiati nella destinazione quasi in tempo reale. Storage Transfer Service non ha bisogno eseguire un'operazione di elenco sull'origine, risparmiando tempo e denaro.
I casi d'uso includono:
Analisi basata su eventi: replica i dati da AWS a Cloud Storage per eseguire analisi ed elaborazione.
Replica Cloud Storage: abilita gli oggetti automatici e asincroni replica tra bucket Cloud Storage.
I trasferimenti basati su eventi con Storage Transfer Service sono diversi dalla tipica replica di Cloud Storage perché creano una copia dei dati in un bucket diverso.
Ciò offre vantaggi come:
- Mantenere i dati di sviluppo e produzione in spazi dei nomi separati.
- Condivisione dei dati senza concedere l'accesso al bucket originale.
- Backup in un continente diverso o in un'area non coperta da di archiviazione a due e più regioni.
Configurazione DR/HA: replica gli oggetti dall'origine alla destinazione di backup in base al numero di minuti:
- Backup tra cloud: crea una copia del backup di AWS S3 su Cloud Storage.
- Backup tra regioni o tra progetti: crea una copia di Cloud Storage in una regione o in un progetto differente.
Migrazione live: il trasferimento basato su eventi può supportare una migrazione con tempi di inattività ridotti, nell'ordine di alcuni minuti, come passaggio successivo alla migrazione collettiva una tantum.
Configurare i trasferimenti basati su eventi da Cloud Storage
I trasferimenti basati su eventi da Cloud Storage utilizzano le notifiche Pub/Sub per sapere quando gli oggetti nel bucket di origine sono stati modificati o aggiunti. Le eliminazioni di oggetti non vengono rilevate; l'eliminazione di un oggetto nell'origine non comporta l'eliminazione dell'oggetto associato nel bucket di destinazione.
Configura autorizzazioni
Trova il nome dell'agente di servizio Storage Transfer Service per il tuo progetto:
Vai alla pagina di riferimento di
googleServiceAccounts.get
.Si apre un riquadro interattivo dal titolo 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 di origine.
Fai clic su Execute (Esegui).
L'indirizzo email dell'agente di servizio viene restituito come valore di
accountEmail
. Copia questo valore.L'email dell'agente di servizio utilizza il formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.Concedi il ruolo
Pub/Sub Subscriber
all'agente di servizio Storage Transfer Service.console Cloud
Segui le istruzioni riportate in Controllo dell'accesso tramite la console Google Cloud per concedere il ruolo
Pub/Sub Subscriber
al servizio Storage Transfer Service. Il ruolo può essere concesso a livello di argomento, sottoscrizione o progetto.Interfaccia a riga di comando
gcloud
Segui le istruzioni riportate in Impostazione di un criterio per aggiungere la seguente associazione:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Configurare Pub/Sub
Assicurati di soddisfare i prerequisiti per l'utilizzo di Pub/Sub con Cloud Storage.
Configura la notifica Pub/Sub per Cloud Storage:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME
Crea una sottoscrizione pull per l'argomento:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Creare un job di trasferimento
Per creare un'istanza basata su eventi, puoi utilizzare l'API REST o la console Google Cloud di un job di trasferimento.
Non includere informazioni sensibili come informazioni che consentono l'identificazione personale (PII) o dati di sicurezza nel nome del job di trasferimento. I nomi delle risorse possono essere propagati ai nomi di altre risorse Google Cloud e possono essere esposti ai sistemi interni di Google al di fuori del progetto.
console Cloud
Vai alla pagina Crea job di trasferimento nella console Google Cloud.
Seleziona Cloud Storage sia come origine sia come destinazione.
In Modalità di pianificazione, seleziona Basato su eventi e fai clic su Passaggio successivo.
Seleziona il bucket di origine per questo trasferimento.
Nella sezione Stream di eventi, inserisci il nome dell'abbonamento:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
Se vuoi, definisci eventuali filtri e poi fai clic su Passaggio successivo.
Seleziona il bucket di destinazione per questo trasferimento.
Se vuoi, inserisci un'ora di inizio e di fine per il trasferimento. Se non specifichi un orario, il trasferimento inizierà immediatamente e verrà eseguito finché non verrà interrotto manualmente.
Specifica eventuali opzioni di trasferimento. Ulteriori informazioni sono disponibili su Pagina Crea trasferimenti.
Fai clic su Crea.
Una volta creato, il job di trasferimento inizia a essere eseguito e un gestore eventi attende le notifiche sull'abbonamento Pub/Sub. La pagina dei dettagli del job mostra una operazione ogni ora e include i dettagli sui dati trasferiti per ogni job.
REST
Per creare un trasferimento basato su eventi utilizzando l'API REST, invia quanto segue Oggetto JSON per l'endpoint transferJobs.create:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "gcsDataSource" { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
eventStreamStartTime
e eventStreamExpirationTime
sono facoltativi.
Se l'ora di inizio viene omessa, il trasferimento inizia immediatamente; se l'ora di fine viene omessa, il trasferimento continua finché non viene interrotto manualmente.
Librerie client
Go
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go Storage Transfer Service.
Per eseguire l'autenticazione a Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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 ulteriori informazioni, consulta API Storage Transfer Service Java documentazione di riferimento.
Per eseguire l'autenticazione a 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, vedi Librerie client di Storage Transfer Service. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Storage Transfer Service.
Per eseguire l'autenticazione a 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, vedi Librerie client di Storage Transfer Service. Per ulteriori informazioni, consulta API Storage Transfer Service Python documentazione di riferimento.
Per autenticarti a Storage Transfer Service, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Configura trasferimenti basati su eventi da AWS S3
I trasferimenti basati su eventi da AWS S3 utilizzano le notifiche di Amazon Simple Queue Service (SQS) per sapere quando gli oggetti nel bucket di origine sono stati modificati o aggiunti. Le eliminazioni di oggetti non vengono rilevate; l'eliminazione di un oggetto nell'origine non comporta l'eliminazione dell'oggetto associato nel bucket di destinazione.
Crea una coda SQS
Nella console AWS, vai alla pagina Simple Queue Service.
Fai clic su Crea coda.
Inserisci un nome per questa coda.
Nella sezione Criterio di accesso, seleziona Avanzate. Un oggetto JSON è visualizzato:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__owner_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws:sqs:us-west-2:01234567890:test" } ] }
I valori di
AWS
eResource
sono univoci per ogni progetto.Copia i valori specifici di
AWS
eResource
dal JSON visualizzato nel seguente snippet JSON:{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "RESOURCE", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS" }, "ArnLike": { "aws:SourceArn": "S3_BUCKET_ARN" } } } ] }
I valori dei segnaposto nel JSON precedente utilizzano il seguente formato:
- AWS è un valore numerico che rappresenta il progetto Amazon Web Services. Ad esempio,
"aws:SourceAccount": "1234567890"
. - RESOURCE è un Amazon Resource Number (ARN) che identifica
questa coda. Ad esempio:
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
. - S3_BUCKET_ARN è un ARN che identifica il bucket di origine. Ad esempio,
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
. Puoi trovare l'ARN di un bucket dalla scheda Proprietà della pagina dei dettagli del bucket nella console AWS.
- AWS è un valore numerico che rappresenta il progetto Amazon Web Services. Ad esempio,
Sostituisci il codice JSON visualizzato nella sezione Criterio di accesso con il codice JSON aggiornato sopra.
Fai clic su Crea coda.
Al termine, prendi nota dell'Amazon Resource Name (ARN) della coda. L'ARN ha seguente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Attivare le notifiche nel bucket S3
Nella console AWS, vai alla pagina S3.
Nell'elenco Bucket, seleziona il bucket di origine.
Seleziona la scheda Proprietà.
Nella sezione Notifiche di eventi, fai clic su Crea notifica di evento.
Specifica un nome per questo evento.
Nella sezione Tipi di eventi, seleziona Tutti gli eventi di creazione di oggetti.
Come Destinazione, seleziona Coda SQS e la coda che hai creato per questo trasferimento.
Fai clic su Salva modifiche.
Configura autorizzazioni
Segui le istruzioni riportate in Configurare l'accesso a un'origine: Amazon S3 per creare un ID chiave di accesso e una chiave segreta o un ruolo di identità federata.
Sostituisci il file JSON delle autorizzazioni personalizzate con quanto segue:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME", "arn:aws:s3:::AWS_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
Dopo averlo creato, tieni presente le seguenti informazioni:
- Per gli utenti, prendi nota dell'ID della chiave di accesso e della chiave segreta.
- Per un ruolo Federated Identity, prendi nota dell'Amazon Resource Name (ARN),
che ha il formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Creare un job di trasferimento
Per creare un'istanza basata su eventi, puoi utilizzare l'API REST o la console Google Cloud di un job di trasferimento.
console Cloud
Vai alla pagina Crea job di trasferimento nella console Google Cloud.
Seleziona Amazon S3 come tipo di origine e Cloud Storage come destinazione.
Come Modalità di pianificazione, seleziona In base agli eventi e fai clic su Passaggio successivo.
Inserisci il nome del bucket S3. Il nome del bucket è il nome visualizzato nella Console di gestione AWS. Ad esempio,
my-aws-bucket
.Seleziona il metodo di autenticazione e inserisci le informazioni richieste. che hai creato e annotato nella sezione precedente.
Inserisci l'ARN della coda Amazon SQS che hai creato in precedenza. Utilizza la classe seguente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Se vuoi, definisci i filtri, poi fai clic su Passaggio successivo.
Seleziona il bucket Cloud Storage di destinazione e, facoltativamente, il percorso.
Se vuoi, inserisci un'ora di inizio e di fine per il trasferimento. Se non specifichi un orario, il trasferimento inizierà immediatamente e verrà eseguito fino a quando non verrà interrotto manualmente.
Specifica le eventuali opzioni di trasferimento. Maggiori informazioni sono disponibili nella pagina Crea trasferimenti.
Fai clic su Crea.
Una volta creato, il job di trasferimento viene eseguito e un listener di eventi attende delle notifiche nella coda SQS. La pagina dei dettagli del job mostra operativa ogni ora e include i dettagli sui dati trasferiti per ciascun job.
REST
Per creare un trasferimento basato su eventi utilizzando l'API REST, invia quanto segue Oggetto JSON per l'endpoint transferJobs.create:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "awsS3DataSource" { "bucketName": "AWS_SOURCE_NAME", "roleArn": "arn:aws:iam::1234567891011:role/role_for_federated_auth" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "arn:aws:sqs:us-east-1:1234567891011:s3-notification-queue", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
I campi eventStreamStartTime
e eventStreamExpirationTime
sono facoltativi.
Se l'ora di inizio viene omessa, il trasferimento inizia immediatamente; se l'ora di fine viene omessa, il trasferimento continua finché non viene interrotto manualmente.
Librerie client
Go
Per scoprire come installare e utilizzare la libreria client per Storage Transfer Service, consulta Librerie client di Storage Transfer Service. Per ulteriori informazioni, consulta API Storage Transfer Service Go documentazione di riferimento.
Per autenticarti a Storage Transfer Service, configura le 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 ulteriori informazioni, consulta API Storage Transfer Service Java documentazione di riferimento.
Per eseguire l'autenticazione a Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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 ulteriori informazioni, consulta API Storage Transfer Service Node.js documentazione di riferimento.
Per autenticarti a Storage Transfer Service, configura le 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 ulteriori informazioni, consulta API Storage Transfer Service Python documentazione di riferimento.
Per eseguire l'autenticazione a Storage Transfer Service, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.