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 ajoutées ou mises à jour dans l'emplacement source. Les transferts basés sur des événements sont compatibles avec AWS S3 ou Cloud Storage vers Cloud Storage.
Les transferts basés sur des événements écoutent les notifications d'événement Amazon S3 envoyées à 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
Étant donné que les transferts basés sur des événements écoutent les modifications apportées au bucket source, les mises à jour sont copiées dans la destination quasiment en temps réel. Le service de transfert de stockage n'a pas besoin d'exécuter une opération de liste sur la source, ce qui permet de gagner du temps et de faire des économies.
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 des traitements.
Réplication Cloud Storage: activez la réplication automatique et asynchrone des objets entre les buckets Cloud Storage.
Les transferts basés sur des événements avec le service de transfert de stockage diffèrent de la réplication Cloud Storage classique en créant une copie de vos données dans un bucket différent.
Cette approche offre de nombreux avantages, par exemple:
- Conserver les données de développement et de production dans des espaces de noms distincts
- Partager des données sans donner accès au bucket d'origine
- Sauvegarde sur un autre continent ou dans une zone non couverte par un stockage birégional et multirégional
Configuration DR/HA: répliquez les objets de la source vers la destination de sauvegarde par ordre de minutes:
- Sauvegarde sur plusieurs clouds: créez une copie de la sauvegarde AWS S3 sur Cloud Storage.
- Sauvegarde interrégionale ou inter-projets: créez une copie du bucket Cloud Storage dans une région ou un projet différent.
Migration à chaud: le transfert basé sur des événements peut permettre une migration avec peu de temps d'arrêt, de l'ordre de quelques minutes, en tant qu'étape de suivi d'une migration par lot unique.
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 du service de transfert de stockage pour 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 utilisez pour gérer le service de transfert de stockage, qui peut être différent du projet du bucket source.
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.console Cloud
Suivez les instructions de la section Contrôler les accès via la console Google Cloud pour attribuer le rôle
Pub/Sub Subscriber
au service de transfert de stockage. Ce rôle peut être attribué au niveau du sujet, de l'abonnement ou du projet.CLI
gcloud
Suivez les instructions de la section Définir une stratégie pour ajouter la liaison suivante:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Configurer Pub/Sub
Assurez-vous de remplir les conditions préalables à l'utilisation de 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 des données de sécurité dans le nom de la tâche de transfert. Les noms de ressources peuvent être propagés aux noms d'autres ressources Google Cloud et exposés aux systèmes internes de Google en dehors de votre projet.
console Cloud
Accédez à la page Créer une tâche de transfert dans la console Google Cloud.
Sélectionnez Cloud Storage comme source et comme destination.
Pour le mode de planification, sélectionnez Basée sur les événements, 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
Vous pouvez également définir des filtres, puis cliquer sur Étape suivante.
Sélectionnez le bucket de destination de ce transfert.
Vous pouvez éventuellement saisir 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. Pour en savoir plus, consultez la page 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'informations de la tâche affiche une opération par heure et inclut des détails 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 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, la correspondance commence immédiatement. Si l'heure de fin est omise, le transfert se poursuit jusqu'à son arrêt manuel.
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 la documentation de référence de l'API Go 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.
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 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 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 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 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 Service (SQS) 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.
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.
Attribuez un nom à 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
AWS
etResource
sont uniques pour chaque projet.Copiez vos valeurs spécifiques de
AWS
etResource
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 le format suivant:
- AWS est une valeur numérique représentant votre projet Amazon Web Services. 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 trouver l'ARN d'un bucket dans l'onglet Propriétés de la page des détails du bucket dans la console AWS.
- AWS est une valeur numérique représentant votre projet Amazon Web Services. Exemple :
Remplacez le fichier JSON affiché dans la section Stratégie d'accès par le fichier JSON mis à jour 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. Le nom de l'ARN est au 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 d'é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.
Comme destination, sélectionnez File d'attente SQS, puis la file d'attente que vous avez créée pour ce transfert.
Cliquez sur Enregistrer les modifications.
Configurer les autorisations
Suivez les instructions de la section Configurer l'accès à une source: Amazon S3 pour créer un ID de clé d'accès et une clé secrète, ou un rôle d'identité fédérée.
Remplacez le fichier JSON des autorisations personnalisées par le code suivant:
{ "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 fichier créé, notez les informations suivantes:
- S'il s'agit d'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), au 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.
console Cloud
Accédez à la page Créer une tâche de transfert dans la console Google Cloud.
Sélectionnez Amazon S3 comme type de source et Cloud Storage comme destination.
Pour le mode de planification, sélectionnez Basée sur les é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, puis 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éé précédemment. Il utilise le format suivant:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Vous pouvez également définir des filtres, puis cliquer sur Étape suivante.
Sélectionnez le bucket Cloud Storage de destination et, éventuellement, son chemin d'accès.
Vous pouvez éventuellement saisir les heures de début et de fin du transfert. Si vous ne spécifiez pas d'heure, le transfert commencera immédiatement et s'exécutera jusqu'à ce que vous l'arrêtiez manuellement.
Spécifiez les options de transfert. Pour en savoir plus, consultez la page 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 dans la file d'attente SQS. La page d'informations de 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 l'objet JSON suivant au 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" } }
Les champs eventStreamStartTime
et eventStreamExpirationTime
sont facultatifs.
Si l'heure de début est omise, la correspondance commence immédiatement. Si l'heure de fin est omise, le transfert se poursuit jusqu'à son arrêt manuel.
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 la documentation de référence de l'API Go 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.
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 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 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 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 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.