Cette page explique comment utiliser le service de stockage de transfert directement via l'API REST, et de façon automatisée avec Java et Python dans deux scénarios courants. Pour créer une tâche de transfert à l'aide de la console Google Cloud Platform, consultez la page Créer et gérer des transferts de données à l'aide de la console.
Lorsque vous configurez ou modifiez des tâches de transfert de façon automatisée à l'aide de l'API Storage Transfer, l'heure doit être au format UTC. Pour savoir comment spécifier la programmation d'une tâche de transfert, consultez la page Programmation.
Avant de commencer
Effectuez les opérations suivantes avant de créer une tâche de transfert :
Vérifiez que vous disposez d'un accès au service de transfert de stockage en vous assurant que l'un des rôles suivants vous est attribué :
- roles/owner
- roles/editor
- roles/storagetransfer.admin
- roles/storagetransfer.user
Un rôle personnalisé incluant, au minimum, les autorisations roles/storagetransfer.user
Pour en savoir plus sur l'ajout et la visualisation des autorisations au niveau du projet, consultez la page Utiliser des autorisations Cloud IAM.
Pour en savoir plus, consultez la section Dépannage.
Pour en savoir plus sur les rôles et les autorisations IAM dans le service de transfert de stockage, consultez la page Contrôle d'accès à l'aide de rôles et d'autorisations IAM.
Configurez l'accès aux sources et aux récepteurs de données.
Transférer des données depuis Amazon S3 vers Cloud Storage
Dans cet exemple, vous allez apprendre à déplacer des fichiers depuis Amazon S3 vers un bucket Cloud Storage. Veillez à consulter les pages Configurer l'accès et Tarification pour comprendre les implications de ce type de transfert.
Pour créer la tâche de transfert
Lors de la création de tâches de transfert, n'incluez pas le préfixe s3://
pour bucketName
dans les noms sources des buckets Amazon S3.
REST
Effectuez une requête à l'aide de la méthode transferJobs.create :POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "scheduleEndDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }Réponse :
200 OK { "transferJob": [ { "creationTime": "2015-01-01T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2015-01-01T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "scheduleEndDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" }, "objectConditions": {}, "transferOptions": {} } } ] }
Java
Vous recherchez des exemples plus anciens ? Consultez le guide de migration du service de transfert de stockage.
Python
Vous recherchez des exemples plus anciens ? Consultez le guide de migration du service de transfert de stockage.
Transfert entre Microsoft Azure Blob Storage et Cloud Storage
Dans cet exemple, vous apprendrez à déplacer des fichiers de Microsoft Azure Storage vers un bucket Cloud Storage, à l'aide d'un jeton de signature d'accès partagé (SAP) Microsoft Azure Storage.
Pour en savoir plus sur Microsoft Azure Storage SAS, consultez la section Accorder un accès limité aux ressources Azure Storage à l'aide de signatures d'accès partagé (SAP).
Avant de commencer, consultez les pages Configurer l'accès et Tarification pour comprendre les implications de ce type de transfert.
REST
Effectuez une requête à l'aide de la méthode transferJobs.create :POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 14, "month": 2, "year": 2020 }, "scheduleEndDate": { "day": 14 "month": 2, "year": 2020 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "azureBlobStorageDataSource": { "storageAccount": "AZURE_SOURCE_NAME", "azureCredentials": { "sasToken": "AZURE_SAS_TOKEN", }, "container": "AZURE_CONTAINER", }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }Réponse :
200 OK { "transferJob": [ { "creationTime": "2020-02-14T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2020-02-14T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 14 "month": 2, "year": 2020 }, "scheduleEndDate": { "day": 14, "month": 2, "year": 2020 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "azureBlobStorageDataSource": { "storageAccount": "AZURE_SOURCE_NAME", "azureCredentials": { "sasToken": "AZURE_SAS_TOKEN", }, "container": "AZURE_CONTAINER", }, "objectConditions": {}, "transferOptions": {} } } ] }
Transférer des données entre buckets Cloud Storage
Dans cet exemple, vous allez apprendre à déplacer des fichiers d'un bucket Cloud Storage à un autre. Par exemple, vous pouvez répliquer les données d'un bucket situé dans un autre emplacement.
Pour créer la tâche de transfert
REST
Effectuez une requête à l'aide de la méthode transferJobs.create :POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "gcsDataSource": { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME" }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } }Réponse :
200 OK { "transferJob": [ { "creationTime": "2015-01-01T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2015-01-01T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "gcsDataSource": { "bucketName": "GCS_SOURCE_NAME", }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME" }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000.000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } } ] }
Java
Vous recherchez des exemples plus anciens ? Consultez le guide de migration du service de transfert de stockage.
Python
Vous recherchez des exemples plus anciens ? Consultez le guide de migration du service de transfert de stockage.
Spécifier les chemins d'accès source et de destination
Les chemins d'accès source et de destination vous permettent de spécifier les répertoires source et de destination lorsque vous transférez des données vers votre bucket Cloud Storage. Par exemple, supposons que vous disposez des fichiers file1.txt
et file2.txt
et d'un bucket Cloud Storage nommé B
. Si vous définissez un chemin de destination nommé my-stuff
, les fichiers sont placés sous gs://B/my-stuff/file1.txt
et gs://B/my-stuff/file2.txt
une fois le transfert terminé.
Spécifier un chemin d'accès source
Pour spécifier un chemin source lors de la création d'une tâche de transfert, ajoutez un champ path
au champ gcsDataSource
dans la spécification TransferSpec
:
{ gcsDataSource: { bucketName: "SOURCE_BUCKET", path: "SOURCE_PATH/", }, }
Dans cet exemple :
- SOURCE_BUCKET : bucket Cloud Storage source.
- SOURCE_PATH : chemin d'accès Cloud Storage source.
Spécifier un chemin de destination
Pour spécifier un dossier de destination lorsque vous créez une tâche de transfert, ajoutez un champ path
au champ gcsDataSink
dans la spécification TransferSpec
:
{ gcsDataSink: { bucketName: "DESTINATION_BUCKET", path: "DESTINATION_PATH/", }, }
Dans cet exemple :
- DESTINATION_BUCKET : bucket Cloud Storage de destination.
- DESTINATION_PATH : chemin d'accès Cloud Storage de destination.
Exemple de requête complète
Voici un exemple de requête complète :
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "gcsDataSource": { "bucketName": "GCS_SOURCE_NAME", "path": "GCS_SOURCE_PATH", }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME", "path": "GCS_SINK_PATH", }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } }
Vérifier l'état de l'opération de transfert
Une ressource TransferJob
est
renvoyée lorsque vous utilisez transferJobs.create
.
Vous pouvez vérifier l'état du transfert après avoir créé la tâche à l'aide de
transferJobs.get
. Si l'opération de transfert
a démarré, elle renvoie une
TransferJob
contenant un champ
latestOperationName
rempli.
Dans le cas contraire, si l'opération de la tâche de transfert n'a pas démarré, le
champ latestOperationName
est vide.
Pour vérifier l'état d'une tâche de transfert
REST
Effectuez une requête à l'aide de la méthode transferJobs get :GET https://storagetransfer.googleapis.com/v1/{jobName="name"}
Java
Vous recherchez des exemples plus anciens ? Consultez le guide de migration du service de transfert de stockage.
Python
Vous recherchez des exemples plus anciens ? Consultez le guide de migration du service de transfert de stockage.
Annuler des opérations de transfert
Pour annuler une seule opération de transfert, utilisez la
méthode
transferOperations cancel
. Pour supprimer une tâche de transfert entière, y compris les opérations de transfert
programmées, définissez son
état sur DELETED
à l'aide de
la méthode transferJobs patch
. La mise à jour
de l'état d'une tâche de transfert n'affecte pas les opérations de transfert
en cours d'exécution. Pour annuler une opération de transfert en cours, utilisez la
méthode
transferOperations cancel
.
Étape suivante
Découvrez comment travailler avec Cloud Storage.