Storage Transfer Service può ascoltare le notifiche di eventi in AWS per trasferire automaticamente i dati aggiunti o aggiornati nella posizione di origine in un bucket Cloud Storage. Scopri di più sui vantaggi dei trasferimenti basati su eventi.
I trasferimenti basati su eventi ascoltano le notifiche di eventi Amazon S3 inviate ad Amazon 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.
I trasferimenti basati su eventi utilizzano sempre un bucket Cloud Storage come destinazione.
Prima di iniziare
Segui le istruzioni per concedere le autorizzazioni richieste sul bucket Cloud Storage 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 Policy di accesso, seleziona Avanzate. Viene visualizzato un oggetto JSON.
Regioni AWS standard
{ "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" } ] }
Regioni AWS GovCloud
{ "Version": "2008-10-17", "Id": "\_\_default\_policy\_ID", "Statement": [ { "Sid": "\_\_owner\_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws-us-gov:sqs:us-gov-west-1:01234567890:test" } ] }
Copia i valori di
AWSeResource. Questi sono univoci per ogni progetto.Incolla i valori specifici di
AWSeResourcedel passaggio precedente nel seguente snippet JSON:Regioni AWS standard
{ "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": "arn:aws:s3:::S3_BUCKET_NAME" } } } ] }
Regioni AWS GovCloud
{ "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": "arn:aws-us-gov:s3:::S3_BUCKET_NAME" } } } ] }
Sostituisci S3_BUCKET_NAME con il nome del bucket di origine S3.
Copia questo snippet JSON completato e utilizzalo per sostituire il codice JSON visualizzato nella sezione Norma di accesso.
Fai clic su Crea coda.
Al termine, prendi nota dell'Amazon Resource Name (ARN) della coda.
Attiva 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 un 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 seleziona 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.
Mentre segui le istruzioni, utilizza il seguente JSON quando ti viene chiesto di specificare un ruolo personalizzato o una policy di attendibilità personalizzata:
Regioni AWS standard
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME", "arn:aws:s3:::S3_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
Una volta creato, prendi nota delle seguenti informazioni:
- Per un utente, prendi nota dell'ID chiave di accesso e della chiave segreta.
- Per un ruolo di identità federata, prendi nota dell'Amazon Resource Name (ARN),
che ha il seguente formato:
arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Regioni AWS GovCloud
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws-us-gov:s3:::S3_BUCKET_NAME", "arn:aws-us-gov:s3:::S3_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
Una volta creato, prendi nota delle seguenti informazioni:
- Per un utente, prendi nota dell'ID chiave di accesso e della chiave segreta.
- Per un ruolo di identità federata, prendi nota dell'Amazon Resource Name (ARN),
che ha il seguente formato:
arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Creare un job di trasferimento
Puoi utilizzare la console Google Cloud , Google Cloud CLI o l'API REST per creare un job di trasferimento basato sugli eventi.
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 Basata sugli eventi e fai clic su Passaggio successivo.
Inserisci il nome del bucket S3. Il nome del bucket è quello 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 uno dei seguenti formati:
- Per le regioni AWS standard:
arn:aws:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME - Per le regioni AWS GovCloud:
arn:aws-us-gov:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME
- Per le regioni AWS standard:
Se vuoi, definisci i filtri, poi fai clic su Passaggio successivo.
Seleziona il bucket Cloud Storage di destinazione e, facoltativamente, il percorso.
(Facoltativo) Inserisci un'ora di inizio e di fine per il trasferimento. Se non specifichi un orario, il trasferimento inizierà immediatamente e verrà eseguito fino all'interruzione manuale.
Specifica le opzioni di trasferimento. Per ulteriori informazioni, consulta la pagina Crea trasferimenti.
Fai clic su Crea.
Una volta creato, il job di trasferimento inizia a essere eseguito e un listener di eventi attende le notifiche nella coda SQS. La pagina dei dettagli del job mostra un'operazione all'ora e include i dettagli sui dati trasferiti per ogni job.
gcloud
Per creare un job di trasferimento basato su eventi utilizzando Google Cloud CLI, utilizza il comando gcloud transfer jobs create con il flag --event-stream-name:
gcloud transfer jobs create \
s3://S3_BUCKET_NAME \
gs://GCS_BUCKET_NAME \
--source-creds-file=SOURCE_CREDS_FILE \
--event-stream-name=AWS_QUEUE_ARN \
--event-stream-starts=EVENT_STREAM_STARTS \
--event-stream-expires=EVENT_STREAM_EXPIRES
Sostituisci i segnaposto con i tuoi valori effettivi:
- S3_BUCKET_NAME: il nome del bucket di origine Amazon S3.
- GCS_BUCKET_NAME: Il bucket Cloud Storage di destinazione.
- SOURCE_CREDS_FILE: il percorso relativo a un file locale sul tuo computer contenente le tue credenziali AWS. A seconda del metodo di autenticazione, questo file deve contenere l'ID della chiave di accesso e la chiave segreta o l'ARN del ruolo di identità federata. Per ulteriori informazioni, consulta Configurare l'accesso a un'origine: Amazon S3.
- AWS_QUEUE_ARN: l'ARN della coda Amazon SQS. Ad esempio,
arn:aws:sqs:us-east-1:123456789012:my-queueper le regioni AWS standard oarn:aws-us-gov:sqs:us-gov-west-1:123456789012:my-gov-queueper le regioni AWS GovCloud. - EVENT_STREAM_STARTS: quando iniziare ad ascoltare gli eventi
utilizzando il formato di data e ora %Y-%m-%dT%H:%M:%S%z (ad es.
2020-04-12T06:42:12+04:00). Se non impostato, il job inizia a essere eseguito e ad ascoltare gli eventi dopo l'invio riuscito del comando di creazione del job. - EVENT_STREAM_EXPIRES: quando interrompere l'ascolto degli eventi. Se non impostato, il job continua fino all'interruzione manuale.
Per un elenco completo dei campi supportati, consulta il riferimento
gcloud transfer jobs create.
REST
Per creare un trasferimento basato su eventi utilizzando l'API REST, invia il seguente oggetto JSON all'endpoint transferJobs.create:
{ "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "S3_BUCKET_NAME", "roleArn": "AWS_ROLE_ARN" }, "gcsDataSink": { "bucketName": "GCS_BUCKET_NAME" } }, "eventStream": { "name": "AWS_QUEUE_ARN", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
I segnaposto nel JSON precedente utilizzano i seguenti valori:
- DESCRIPTION è una descrizione del job di trasferimento.
- PROJECT_ID è l'ID del progetto Google Cloud in cui viene creato il job di trasferimento.
- S3_BUCKET_NAME è il nome del bucket di origine Amazon S3.
- AWS_ROLE_ARN è l'ARN del ruolo di identità federata che hai
creato. Ad esempio,
arn:aws:iam::1234567891011:role/aws-role-nameper le regioni AWS standard oarn:aws-us-gov:iam::1234567891011:role/aws-role-nameper le regioni AWS GovCloud. - GCS_BUCKET_NAME è il nome del bucket di destinazione Cloud Storage.
- AWS_QUEUE_ARN è l'ARN della coda SQS. Ad esempio,
arn:aws:sqs:us-east-1:1234567891011:s3-notification-queueper le regioni AWS standard oarn:aws-us-gov:sqs:us-gov-east-1:1234567890:event-queueper le regioni AWS GovCloud.
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 fino all'interruzione manuale.
Librerie client
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.