Le service de transfert de stockage peut écouter les notifications d'événements dans AWS pour transférer automatiquement les données 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 ne supprime pas l'objet associé dans le bucket de destination.
Les transferts basés sur des é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 Create queue (Créer une file d'attente).
Saisissez un Name (Nom) pour cette file d'attente.
Dans la section Access policy (Règle d'accès), sélectionnez Advanced (Avancé). Un objet JSON s'affiche.
Régions AWS standards
{ "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" } ] }
Régions 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" } ] }
Copiez les valeurs de
AWSetResource. Elles sont uniques pour chaque projet.Collez vos valeurs spécifiques de
AWSetResourcede l'étape précédente dans l'extrait JSON suivant :Régions AWS standards
{ "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" } } } ] }
Régions 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" } } } ] }
Remplacez S3_BUCKET_NAME par le nom du bucket source S3.
Copiez cet extrait JSON terminé et utilisez-le pour remplacer le JSON affiché dans la section Access policy (Règle d'accès).
Cliquez sur Create queue (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.
Activer les notifications sur votre bucket S3
Dans la console AWS, accédez à la page S3.
Dans la liste Buckets (Buckets), sélectionnez votre bucket source.
Sélectionnez l'onglet Properties (Propriétés).
Dans la section Event notifications (Notifications d'événement), cliquez sur Create event notification (Créer une notification d'événement).
Spécifiez un nom pour cet événement.
Dans la section Event types (Types d'événements), sélectionnez All object create events (Tous les événements de création d'objet).
Comme Destination (Destination), sélectionnez SQS queue (File d'attente SQS), puis sélectionnez la file d'attente que vous avez créée pour ce transfert.
Cliquez sur Save changes (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.
Lorsque vous suivez les instructions, utilisez le JSON suivant lorsque vous êtes invité à spécifier un rôle personnalisé ou une règle d'approbation personnalisée :
Régions AWS standards
{ "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 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 présente le format suivant :
arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Régions 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" ] } ] }
Une fois 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 présente le format suivant :
arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Créer un job de transfert
Vous pouvez utiliser la Google Cloud console, Google Cloud CLI ou l'API REST pour créer un job de transfert basé sur des événements.
console Cloud
Accédez à la page Create transfer job (Créer un job de transfert) de la Google Cloud console.
Sélectionnez Amazon S3 comme type de source et Cloud Storage comme destination.
Comme Scheduling mode (Mode de planification), sélectionnez Event-driven (Basé sur des é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 le 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 l'un des formats suivants :
- Pour les régions AWS standards :
arn:aws:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME - Pour les régions AWS GovCloud :
arn:aws-us-gov:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME
- Pour les régions AWS standards :
Vous pouvez également définir des filtres, puis cliquer sur Next step (É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 une heure de fin pour le 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 Create (Créer).
Une fois créé, le job 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 du job affiche une opération par heure et inclut des informations sur les données transférées pour chaque job.
gcloud
Pour créer un job de transfert basé sur des événements à l'aide de Google Cloud CLI, utilisez la commande gcloud transfer jobs create avec l'option --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
Remplacez les espaces réservés par vos valeurs réelles :
- S3_BUCKET_NAME : nom de votre bucket source Amazon S3.
- GCS_BUCKET_NAME : votre bucket Cloud Storage de destination.
- SOURCE_CREDS_FILE : chemin d'accès relatif à un fichier local sur votre machine contenant vos identifiants AWS. Selon votre méthode d'authentification, ce fichier doit contenir votre ID de clé d'accès et votre clé secrète, ou l'ARN de votre rôle d'identité fédérée. Pour en savoir plus, consultez Configurer l'accès à une source : Amazon S3.
- AWS_QUEUE_ARN : ARN de votre file d'attente Amazon SQS. Par exemple,
arn:aws:sqs:us-east-1:123456789012:my-queuepour les régions AWS standards ouarn:aws-us-gov:sqs:us-gov-west-1:123456789012:my-gov-queuepour les régions AWS GovCloud. - EVENT_STREAM_STARTS : date et heure de début de l'écoute des événements
au format %Y-%m-%dT%H:%M:%S%z (par exemple,
2020-04-12T06:42:12+04:00). Si cette option n'est pas définie, le job commence à s'exécuter et à écouter les événements une fois la commande de création de job envoyée. - EVENT_STREAM_EXPIRES : date et heure d'arrêt de l'écoute des événements. Si cette option n'est pas définie, le job se poursuit jusqu'à ce qu'il soit arrêté manuellement.
Pour obtenir la liste complète des champs compatibles, consultez la documentation de référence
gcloud transfer jobs create.
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 :
{ "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" } }
Les espaces réservés du JSON précédent utilisent les valeurs suivantes :
- DESCRIPTION est une description du job de transfert.
- PROJECT_ID est l'ID du projet Google Cloud dans lequel le job de transfert est créé.
- S3_BUCKET_NAME est le nom du bucket source Amazon S3.
- AWS_ROLE_ARN est l'ARN du rôle d'identité fédérée que vous
avez créé. Par exemple,
arn:aws:iam::1234567891011:role/aws-role-namepour les régions AWS standards ouarn:aws-us-gov:iam::1234567891011:role/aws-role-namepour les régions AWS GovCloud. - GCS_BUCKET_NAME est le nom du bucket Cloud Storage de destination.
- AWS_QUEUE_ARN est l'ARN de la file d'attente SQS. Par exemple,
arn:aws:sqs:us-east-1:1234567891011:s3-notification-queuepour les régions AWS standards ouarn:aws-us-gov:sqs:us-gov-east-1:1234567890:event-queuepour les régions AWS GovCloud.
eventStreamStartTime et eventStreamExpirationTime sont facultatifs.
Si l'heure de début est omise, le transfert démarre 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 Storage Transfer Service Go.
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 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 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 du service de transfert de stockage Node.js.
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.
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 Storage Transfer Service Python.
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.