Le service de transfert de stockage peut écouter les notifications d'événements dans AWS pour transférer automatiquement les données qui ont été ajoutées ou mises à jour dans l'emplacement source vers un bucket Cloud Storage. En savoir plus sur les avantages des transferts basés sur des événements
Les transferts basés sur des événements écoutent les notifications d'événement Amazon S3 envoyées à Amazon 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 n'entraîne pas la suppression de l'objet associé dans le bucket de destination.
Les transferts basés sur les événements utilisent toujours un bucket Cloud Storage comme destination.
Avant de commencer
Suivez les instructions pour accorder les autorisations requises sur votre bucket Cloud Storage de destination :
Créer une file d'attente SQS
Dans la console AWS, accédez à la page Simple Queue Service.
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ée. 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
etResource
sont uniques pour chaque projet.Copiez vos valeurs spécifiques de
AWS
etResource
à partir du fichier JSON affiché dans l'extrait 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 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 d'informations du bucket dans la console AWS.
- AWS est une valeur numérique représentant votre projet Amazon Web Services. Exemple :
Remplacez le code JSON affiché dans la section Règle d'accès par le code 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. 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 d'événements, cliquez sur Créer une notification d'événement.
Indiquez un nom pour cet événement.
Dans la section Types d'événements, sélectionnez Tous les événements de création d'objet.
Dans 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 suivant :
{ "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" ] } ] }
Une fois la réservation créée, 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 se présente 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.
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 destination.
Dans Scheduling mode (Mode de planification), sélectionnez Event-driven (Piloté par les événements), puis cliquez sur Next step (É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. Il utilise le format suivant :
arn:aws:sqs:us-east-1:1234567890:event-queue"
Vous pouvez éventuellement définir des filtres, puis cliquer sur Étape suivante.
Sélectionnez le bucket Cloud Storage de destination et, si vous le souhaitez, le chemin d'accès.
Vous pouvez également saisir une heure de début et de fin pour le transfert. Si vous ne spécifiez pas d'heure, le transfert commencera immédiatement et s'exécutera 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 la tâche de transfert créée, elle commence à s'exécuter et un écouteur d'événements attend les notifications dans la file d'attente SQS. La page d'informations sur les tâches 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" } }
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 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.