Le service de transfert de stockage peut écouter les notifications d'événements dans AWS ou Google Cloud pour transférer automatiquement les données qui ont été ajoutées ou mises à jour dans la source l'emplacement. Les transferts basés sur des événements sont compatibles avec AWS S3 ou Cloud Storage dans Cloud Storage.
Les transferts basés sur des événements écoutent les notifications d'événement Amazon S3 envoyé à Amazon SQS pour les sources AWS S3. Les sources Cloud Storage envoient des notifications à un abonnement Pub/Sub.
Avantages des transferts basés sur les événements
Comme les transferts basés sur des événements écoutent les modifications apportées au bucket source, sont copiées dans la destination en temps quasi réel. Le service de transfert de stockage n'a pas besoin pour exécuter une opération de liste sur la source, ce qui permet de gagner du temps et de l'argent.
Voici quelques cas d'utilisation :
Analyses basées sur les événements : répliquez les données d'AWS vers Cloud Storage pour effectuer des analyses et un traitement.
Réplication Cloud Storage: activez la réplication d'objets automatiques et asynchrones. la réplication entre les buckets Cloud Storage.
Les transferts basés sur des événements avec le service de transfert de stockage diffèrent réplication Cloud Storage type en créant une copie de vos données dans un autre bucket.
Cela offre les avantages suivants :
- Conserver les données de développement et de production dans des espaces de noms distincts
- Partager des données sans fournir d'accès au bucket d'origine
- Sauvegarde sur un autre continent ou dans une zone non couverte par le stockage birégional et multirégional
Configuration de la reprise après sinistre/de l'HA : répliquez les objets de la source à la destination de sauvegarde en quelques minutes :
- Sauvegarde multicloud : créez une copie de la sauvegarde AWS S3 dans Cloud Storage.
- Sauvegarde interrégionale ou inter-projets: créer une copie de Cloud Storage bucket situé dans une région ou un projet différent.
Migration à chaud: le transfert basé sur des événements peut permettre une migration à faible temps d'arrêt, activée l'ordre de minutes des temps d'arrêt, en tant qu'étape de suivi d'un traitement par lot ponctuel la migration.
Configurer des transferts basés sur des événements à partir de Cloud Storage
Les transferts basés sur des événements à partir de Cloud Storage utilisent des notifications Pub/Sub pour savoir quand des objets du bucket source ont été modifiés ou ajoutés. Les suppressions d'objets ne sont pas détectées. La suppression d'un objet à la source ne supprime pas l'objet associé dans le bucket de destination.
Configurer les autorisations
Recherchez le nom de l'agent de service Storage Transfer Service de votre projet :
Accédez à la page de référence
googleServiceAccounts.get
.Un panneau interactif s'affiche, intitulé Essayer cette méthode.
Dans le panneau, sous Paramètres de requête, saisissez l'ID de votre projet. Le projet que vous spécifiez ici doit être celui que vous pour gérer le service de transfert de stockage, qui peut être différent de la source le projet d'un bucket.
Cliquez sur Exécuter.
L'adresse e-mail de votre agent de service est renvoyée en tant que valeur de
accountEmail
. Copiez cette valeur.L'adresse e-mail de l'agent de service utilise le format
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.Attribuez le rôle
Pub/Sub Subscriber
à l'agent de service du service de transfert de stockage.Cloud Console
Suivez les instructions fournies dans l'article Contrôler les accès via la console Google Cloud pour accorder le rôle
Pub/Sub Subscriber
au service de transfert de stockage. La peut être attribué au niveau du sujet, de l'abonnement ou du projet.CLI
gcloud
Suivez les instructions fournies dans l'article Définir une stratégie sur ajoutez la liaison suivante:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Configurer Pub/Sub
Assurez-vous de respecter les Prérequis d'utilisation Pub/Sub avec Cloud Storage.
Configurez la notification Pub/Sub pour Cloud Storage:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME
Créez un abonnement pull pour le sujet :
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Créer un job de transfert
Vous pouvez utiliser l'API REST ou la console Google Cloud pour créer un job de transfert basé sur des événements.
N'incluez pas d'informations sensibles, telles que des informations permettant d'identifier personnellement l'utilisateur. ou de sécurité dans le nom de votre job de transfert. Les noms de ressources peuvent être propagés vers les noms d'autres ressources Google Cloud et peuvent être exposés aux systèmes internes de Google, en dehors de votre projet.
Cloud Console
Accédez à la page Créer un job de transfert dans la console Google Cloud.
Sélectionnez Cloud Storage comme source et comme destination.
Pour le mode de planification, sélectionnez Déclenché par événement, puis cliquez sur Étape suivante.
Sélectionnez le bucket source pour ce transfert.
Dans la section Flux d'événements, saisissez le nom de l'abonnement:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
Si vous le souhaitez, définissez des filtres, puis cliquez sur Étape suivante.
Sélectionnez le bucket de destination pour ce transfert.
Si vous le souhaitez, saisissez les heures de début et de fin du transfert. Si vous ne spécifiez une heure, le transfert commencera immédiatement et s'exécutera jusqu'au arrêtée manuellement.
Spécifiez les options de transfert. Vous trouverez plus d'informations sur le Créer des transferts
Cliquez sur Créer.
Une fois créée, la tâche de transfert commence à s'exécuter et un écouteur d'événements attend les notifications sur l'abonnement Pub/Sub. La page "Détails du job" affiche une opération par heure et comprend des détails sur les données transférées pour chaque job.
REST
Pour créer un transfert basé sur les événements à l'aide de l'API REST, envoyez l'objet JSON suivant au point de terminaison 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" } }
Les champs eventStreamStartTime
et eventStreamExpirationTime
sont facultatifs.
Si l'heure de début est omise, le transfert commence immédiatement. Si l'heure de fin est omise, le transfert se poursuit jusqu'à ce qu'il soit arrêté manuellement.
Bibliothèques clientes
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez la page Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez les API du service de transfert de stockage Go documentation de référence.
Pour vous authentifier auprès du service de transfert de stockage, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez la documentation de référence de l'API Java du service de transfert de stockage.
Pour vous authentifier auprès du service de transfert de stockage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez la documentation de référence de l'API Node.js du service de transfert de stockage.
Pour vous authentifier auprès du service de transfert de stockage, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez la page Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez la documentation de référence de l'API Python du service de transfert de stockage.
Pour vous authentifier auprès du service de transfert de stockage, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Configurer des transferts basés sur des événements à partir d'AWS S3
Les transferts basés sur des événements à partir d'AWS S3 utilisent les notifications d'Amazon Simple Queue (SQS) pour savoir quand des objets du bucket source ont été modifiés ou ajouté. Les suppressions d'objets ne sont pas détectées. La suppression d'un objet à la source ne supprime pas l'objet associé dans le bucket de destination.
Créer une file d'attente SQS
Dans la console AWS, accédez à la page Service de file d'attente simple.
Cliquez sur Créer une file d'attente.
Saisissez un nom pour cette file d'attente.
Dans la section Règle d'accès, sélectionnez Avancé. Un objet JSON s'affiche :
{ "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" } ] }
Les valeurs de
AWS
et deResource
sont uniques pour chaque projet.Copiez vos valeurs spécifiques de
AWS
etResource
à partir du fichier JSON affiché dans l'extrait de code JSON suivant :{ "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" } } } ] }
Les valeurs des espaces réservés dans le fichier JSON précédent utilisent les éléments suivants : format:
- AWS est une valeur numérique représentant votre Amazon Web Services.
projet. Exemple :
"aws:SourceAccount": "1234567890"
- RESOURCE est un numéro de ressource Amazon (ARN) qui identifie
cette file d'attente. Exemple :
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
. - S3_BUCKET_ARN est un ARN qui identifie le bucket source. Exemple :
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
. Vous pouvez recherchez l'ARN d'un bucket dans l'onglet Propriétés de la page d'informations du bucket. dans la console AWS.
- AWS est une valeur numérique représentant votre Amazon Web Services.
projet. Exemple :
Remplacez le fichier JSON affiché dans la section Access policy (Règle d'accès) par la valeur mise à jour. JSON ci-dessus.
Cliquez sur Créer une file d'attente.
Une fois l'opération terminée, notez le nom de ressource Amazon (ARN) de la file d'attente. L'ARN a le format suivant :
arn:aws:sqs:us-east-1:1234567890:event-queue"
Activer les notifications sur votre bucket S3
Dans la console AWS, accédez à la page S3.
Dans la liste Buckets, sélectionnez votre bucket source.
Sélectionnez l'onglet Propriétés.
Dans la section Notifications relatives à un événement, cliquez sur Créer une notification d'événement.
Attribuez un nom à cet événement.
Dans la section Types d'événements, sélectionnez Tous les événements de création d'objets.
Pour le champ Destination, sélectionnez File d'attente SQS, puis sélectionnez la file d'attente que vous avez créée. pour ce transfert.
Cliquez sur Enregistrer les modifications.
Configurer les autorisations
Suivez les instructions fournies dans l'article Configurer l'accès à une source: Amazon S3 pour créer un ID de clé d'accès et une clé secrète, ou une clé d'identité fédérée rôle de ressource.
Remplacez le fichier JSON des autorisations personnalisées par ce qui suit :
{ "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" ] } ] }
Une fois le groupe créé, notez les informations suivantes :
- Pour un utilisateur, notez l'ID de clé d'accès et la clé secrète.
- Pour un rôle d'identité fédérée, notez le nom de ressource Amazon (ARN), qui a le format
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Créer un job de transfert
Vous pouvez utiliser l'API REST ou la console Google Cloud pour créer un job de transfert basé sur des événements.
Cloud Console
Accédez à la page Créer un job de transfert dans la console Google Cloud.
Sélectionnez Amazon S3 comme type de source et Cloud Storage comme type de source. la destination.
Pour le mode de planification, sélectionnez En fonction des événements, puis cliquez sur Étape suivante.
Saisissez le nom de votre bucket S3. Le nom du bucket est celui qui apparaît dans AWS Management Console. Exemple :
my-aws-bucket
.Sélectionnez votre méthode d'authentification et saisissez les informations demandées, que vous avez créées et notées dans la section précédente.
Saisissez l'ARN de la file d'attente Amazon SQS que vous avez créée précédemment. Elle utilise le le format suivant:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Si vous le souhaitez, définissez des filtres, puis cliquez sur Étape suivante.
Sélectionnez le bucket Cloud Storage de destination et, si vous le souhaitez, le chemin d'accès.
Si vous le souhaitez, saisissez les heures de début et de fin du transfert. Si vous ne spécifiez pas d'heure, le transfert démarre immédiatement et s'exécute jusqu'à ce qu'il soit arrêté manuellement.
Spécifiez les options de transfert. Vous trouverez plus d'informations sur le Créer des transferts
Cliquez sur Créer.
Une fois créé, le job de transfert commence à s'exécuter et un écouteur d'événements attend dans la file d'attente SQS. La page d'informations sur la tâche affiche une opération par heure et inclut des informations sur les données transférées pour chaque tâche.
REST
Pour créer un transfert basé sur des événements à l'aide de l'API REST, envoyez le code suivant : JSON sur le point de terminaison 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" } }
eventStreamStartTime
et eventStreamExpirationTime
sont facultatifs.
Si l'heure de début est omise, le transfert commence immédiatement. Si l'heure de fin est omise, le transfert se poursuit jusqu'à ce qu'il soit arrêté manuellement.
Bibliothèques clientes
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez la page Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez les API du service de transfert de stockage Go documentation de référence.
Pour vous authentifier auprès du service de transfert de stockage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez la page Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez les API du service de transfert de stockage Java documentation de référence.
Pour vous authentifier auprès du service de transfert de stockage, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez les API du service de transfert de stockage Node.js documentation de référence.
Pour vous authentifier auprès du service de transfert de stockage, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour le service de transfert de stockage, consultez Bibliothèques clientes du service de transfert de stockage. Pour en savoir plus, consultez la documentation de référence de l'API Python du service de transfert de stockage.
Pour vous authentifier auprès du service de transfert de stockage, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.