Le service de transfert de stockage accepte les transferts depuis des systèmes de stockage d'objets cloud ou sur site compatibles avec l'API Amazon S3.
Le service de transfert de stockage accède à vos données dans des sources compatibles S3 à l'aide d'agents de transfert, déployés sur des VM proches de la source de données. Ces agents s'exécutent dans un conteneur Docker et appartiennent à un pool d'agents, qui est un ensemble d'agents utilisant la même configuration et qui déplacent collectivement vos données en parallèle.
Cette fonctionnalité vous permet de migrer depuis un système de stockage d'objets cloud ou sur site vers Cloud Storage, d'archiver des données afin de libérer de la capacité de stockage sur site, de répliquer des données vers Google Cloud pour assurer la continuité des opérations ou de transférer des données vers Google Cloud à des fins d'analyse et de traitement. Pour les clients qui migrent d'AWS S3 vers Cloud Storage, cette fonctionnalité permet de contrôler les routes réseau vers Google Cloud, ce qui réduit considérablement les frais de transfert de données sortantes.
Avant de commencer
Avant de configurer vos transferts, procédez comme suit:
- Attribuez le rôle Administrateur de transfert de stockage à votre compte utilisateur.
- Installer gcloud CLI.
- Répondez aux exigences relatives aux transferts de systèmes de fichiers, y compris l'installation de Docker sur la machine de l'agent de transfert.
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 préfixe d'ID d'agent, le nom du pool d'agents ou le nom du job de transfert. Les noms de ressources peuvent être propagés vers les noms d'autres ressources Google Cloud et peuvent être exposés à des systèmes internes de Google en dehors de votre projet.
Obtenir les identifiants sources
Le transfert depuis des sources compatibles S3 nécessite un ID de clé d'accès et une clé d'accès secrète.
La procédure à suivre dépend de votre fournisseur de stockage.
Le compte à partir duquel l'ID et la clé sont générés nécessite l'une des autorisations suivantes :
- Accès en lecture seule aux objets sources, si vous ne souhaitez pas supprimer ces objets sur la source.
- Accès complet aux objets sources, si vous décidez de les supprimer sur la source dans le cadre du transfert.
Une fois le compte créé et les autorisations ajoutées, et après avoir téléchargé l'ID de clé d'accès et la clé d'accès secrète, stockez l'ID et la clé dans un endroit sûr.
Configurer l'accès au bucket de destination
Suivez les instructions de la section Configurer l'accès à un récepteur : Cloud Storage pour configurer l'accès au bucket de destination.
Créer un pool d'agents
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 votre pool d'agents. Les noms de ressources peuvent être propagés vers les noms d'autres ressources Google Cloud et peuvent être exposés à des systèmes internes de Google en dehors de votre projet.Pour créer un pool d'agents, procédez comme suit :
Console Google Cloud
Dans la console Google Cloud, accédez à la page Pools d'agents.
La page Pools d'agents s'affiche. Elle répertorie vos pools d'agents existants.
Cliquez sur Créer un autre pool.
Nommez votre pool, puis fournissez une description si vous le souhaitez.
Vous pouvez choisir de définir une limite de bande passante qui s'appliquera au pool dans son ensemble. La bande passante spécifiée en Mo/s sera répartie entre tous les agents du pool. Pour en savoir plus, consultez la page Gérer la bande passante réseau.
Cliquez sur Créer.
API REST
Utilisez la méthode projects.agentPools.create :
POST https://storagetransfer.googleapis.com/v1/projects/PROJECT_ID/agentPools?agent_pool_id=AGENT_POOL_ID
Où :
PROJECT_ID
: ID du projet dans lequel vous créez le pool d'agents.AGENT_POOL_ID
: ID du pool d'agents que vous créez.
Si un pool d'agents est bloqué à l'état Creating
pendant plus de 30 minutes, nous vous recommandons de le supprimer et de le recréer.
La révocation des autorisations requises pour le service de transfert de stockage d'un projet alors qu'un pool d'agents est à l'état Creating
entraîne un comportement de service incorrect.
gcloud CLI
Pour créer un pool d'agents avec l'outil de ligne de commande gcloud
, exécutez la commande [gcloud transfer agent-pools create
][agent-pools-create].
gcloud transfer agent-pools create AGENT_POOL
Les options suivantes sont disponibles :
AGENT_POOL est l'identifiant unique et permanent de ce pool.
--no-async
bloque d'autres tâches dans votre terminal jusqu'à la création du pool. Si cette option n'est pas incluse, la création du pool s'exécute de manière asynchrone.--bandwidth-limit
définit la quantité de bande passante en Mo/s à mettre à la disposition des agents de ce pool. Une limite de bande passante s'applique à tous les agents d'un pool et peut empêcher la charge de travail de transfert du pool d'interrompre les autres opérations qui partagent votre bande passante. Par exemple, saisissez "50" pour définir une limite de bande passante de 50 Mo/s. Si vous ne définissez pas cette option, les agents de ce pool utiliseront toute la bande passante disponible.--display-name
est un nom modifiable pour vous aider à identifier ce pool. Vous pouvez inclure des détails qui ne correspondent peut-être pas au nom complet de la ressource du pool.
Installer les agents de transfert
Les agents de transfert sont des agents logiciels qui coordonnent les activités de transfert depuis votre source via le service de transfert de stockage. Ils doivent être installés sur un système ayant accès à vos données sources.
gcloud CLI
Pour installer des agents à utiliser avec une source compatible S3 à l'aide de la CLI gcloud
, exécutez la commande transfer agents install
.
Vous devez fournir des identifiants d'accès sous forme de variables d'environnement en tant que valeurs de AWS_ACCESS_KEY_ID
et AWS_SECRET_ACCESS_KEY
, ou stockés en tant qu'identifiants par défaut dans les fichiers de configuration de votre système.
export AWS_ACCESS_KEY_ID=ID
export AWS_SECRET_ACCESS_KEY=SECRET
gcloud transfer agents install --pool=POOL_NAME
Pour exécuter des agents à l'aide d'une clé de compte de service, utilisez l'option --creds-file
:
gcloud transfer agents install --pool=POOL_NAME \
--creds-file=/relative/path/to/service-account-key.json
Vous devez attribuer les rôles IAM suivants à l'utilisateur ou au compte de service utilisé pour exécuter les agents de transfert:
- Agent Storage Transfer (
roles/storagetransfer.transferAgent
) sur le projet. Pour obtenir des instructions, consultez la section Attribuer un rôle unique dans la documentation IAM. - Administrateur des objets Storage (
roles/storage.objectAdmin
) sur le projet ou sur le bucket de destination, ou un rôle personnalisé contenant les autorisations répertoriées dans la section Autorisations de transfert basées sur un agent. Pour obtenir des instructions, consultez la section Ajouter un compte principal à une stratégie au niveau du bucket.
Créer une tâche de transfert
Console Google Cloud
Suivez ces étapes pour créer un transfert depuis une source compatible S3 vers un bucket Cloud Storage.
Accédez à la page Service de transfert de stockage dans Google Cloud Console.
Cliquez sur Créer une tâche de transfert. La page Créer une tâche de transfert s'affiche.
Sélectionnez Stockage d'objets compatible S3 comme Type de source. La destination doit être définie sur Google Cloud Storage.
Cliquez sur Next step (Étape suivante).
Configurer votre source
Spécifiez les informations requises pour ce transfert :
Sélectionnez le pool d'agents que vous avez configuré pour ce transfert.
Saisissez le nom du bucket au format relatif, selon le point de terminaison. Par exemple, si vos données résident dans le point de terminaison ci-après :
https://example.com/bucket_a
Saisissez :
bucket_a
Saisissez le point de terminaison, N'incluez pas le protocole (
http://
ouhttps://
). Par exemple:example.com
Spécifiez les attributs facultatifs pour ce transfert :
Saisissez la région de signature à utiliser pour la signature des requêtes.
Choisissez le processus de signature pour cette requête.
Sélectionnez le style d'adressage. Cela détermine si le nom du bucket respecte une syntaxe avec chemin (par exemple,
https://example.com/bucket-name/key-name
) ou bien une syntaxe avec hébergement virtuel (par exemple,https://bucket-name.example.com/key-name
). Pour en savoir plus, consultez la section Hébergement virtuel de compartiments dans la documentation Amazon.Sélectionnez le protocole réseau.
Sélectionnez la version de l'API de listing à utiliser. Reportez-vous à la documentation sur ListObjectsV2 et ListObjects pour plus d'informations.
Cliquez sur Next step (Étape suivante).
Configurer le récepteur
Dans le champ Bucket ou dossier, saisissez le nom du bucket de destination et (éventuellement) le nom du dossier, ou cliquez sur Parcourir pour sélectionner un bucket dans une liste existante de buckets de votre projet actuel. Pour créer un bucket, cliquez sur Créer un bucket.
Cliquez sur Next step (Étape suivante).
Choisir les paramètres de transfert
Dans le champ Description, saisissez une description du transfert. Nous vous recommandons de saisir une description pertinente et unique afin de pouvoir différencier les tâches.
Sous Options de métadonnées, choisissez d'utiliser les options par défaut, ou cliquez sur Afficher et sélectionner des options pour spécifier des valeurs pour toutes les métadonnées acceptées. Pour en savoir plus, consultez la section Conservation des métadonnées.
Sous Écrasement, sélectionnez l'une des options suivantes :
S'ils sont différents : écrase les fichiers de destination si le fichier source du même nom contient d'autres ETags ou valeurs de somme de contrôle.
Toujours : écrit toujours les fichiers de destination lorsque le fichier source porte le même nom, même s'ils sont identiques.
Sous Dans quel contexte effectuer des suppressions, sélectionnez l'une des options suivantes :
Jamais : ne supprime jamais les fichiers de la source ou de la destination.
Supprimer les fichiers de la source après leur transfert : supprime les fichiers de la source après leur transfert vers la destination.
Supprimer les fichiers de la destination s'ils ne figurent pas dans la source : si les fichiers du bucket Cloud Storage de destination ne figurent pas dans la source, supprimez-les du bucket.
Cette option garantit que le bucket Cloud Storage de destination correspond exactement à votre source.
Sous Options de notification, sélectionnez votre sujet Pub/Sub et les événements pour lesquels vous souhaitez recevoir des notifications. Pour en savoir plus, consultez la section Notifications Pub/Sub.
Cliquez sur Next step (Étape suivante).
Programmer le transfert
Vous pouvez programmer votre transfert pour qu'il ne s'exécute qu'une seule fois, ou bien configurer un transfert récurrent.
Cliquez sur Créer pour créer la tâche de transfert.
gcloud CLI
Avant d'utiliser la CLI gcloud
pour créer un transfert, suivez les instructions de la section Configurer l'accès à un récepteur Cloud Storage.
Pour utiliser la CLI gcloud
afin de créer un transfert depuis une source compatible S3 vers un bucket Cloud Storage, utilisez la commande suivante.
gcloud transfer jobs create s3://SOURCE_BUCKET_NAME gs://SINK_BUCKET_NAME \
--source-agent-pool=POOL_NAME \
--source-endpoint=ENDPOINT \
--source-signing-region=REGION \
--source-auth-method=AWS_SIGNATURE_V2 | AWS_SIGNATURE_V4 \
--source-request-model=PATH_STYLE | VIRTUAL_HOSTED_STYLE \
--source-network-protocol=HTTP | HTTPS \
--source-list-api=LIST_OBJECTS | LIST_OBJECTS_V2
Les options suivantes sont obligatoires :
--source-agent-pool
est le nom du pool d'agents à utiliser pour ce transfert.--source-endpoint
spécifie le point de terminaison de votre système de stockage. Exemple :s3.us-east.example.com
. Contactez votre fournisseur pour connaître la mise en forme à respecter.
Les options restantes sont facultatives :
--source-signing-region
spécifie une région pour les requêtes de signature. Vous pouvez omettre cette option si votre fournisseur de stockage ne nécessite pas de région de signature.--source-auth-method
spécifie la méthode d'authentification à utiliser. Les valeurs valides sontAWS_SIGNATURE_V2
ouAWS_SIGNATURE_V4
. Pour plus d'informations, reportez-vous à la documentation d'Amazon sur SigV4 et SigV2.--source-request-model
spécifie le style d'adressage à utiliser. Les valeurs valides sontPATH_STYLE
ouVIRTUAL_HOSTED_STYLE
. Le style avec chemin utilise le formathttps://s3.REGION.example.com/BUCKET_NAME/KEY_NAME
. Le style hébergé virtuellement utilise le format https://BUCKET_NAME.s3.REGION.example.com/KEY_NAME.--source-network-protocol
spécifie le protocole réseau que les agents doivent utiliser pour cette tâche. Les valeurs valides sontHTTP
ouHTTPS
.--source-list-api
spécifie la version de l'API de listing S3 pour renvoyer des objets du bucket. Les valeurs valides sontLIST_OBJECTS
ouLIST_OBJECTS_V2
. Pour plus d'informations, reportez-vous à la documentation d'Amazon sur ListObjectsV2 et ListObjects.
Pour découvrir d'autres options associées aux tâches de transfert, exécutez la commande gcloud transfer jobs create --help
ou consultez la documentation de référence gcloud
.
API REST
Avant d'utiliser l'API REST pour créer un transfert, suivez les instructions de la section Configurer l'accès à un récepteur Cloud Storage.
Pour créer un transfert à partir d'une source compatible S3 à l'aide de l'API REST, créez un objet JSON semblable à l'exemple suivant.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"awsS3CompatibleData": {
"region":"us-east-1",
"s3Metadata":{
"protocol": "NETWORK_PROTOCOL_HTTPS",
"requestModel": "REQUEST_MODEL_VIRTUAL_HOSTED_STYLE",
"authMethod": "AUTH_METHOD_AWS_SIGNATURE_V4"
},
"endpoint": "example.com",
"bucketName": "BUCKET_NAME",
"path": "PATH",
},
"gcsDataSink": {
"bucketName": "SINK_NAME",
"path": "SINK_PATH"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
Consultez la documentation de référence de l'API AwsS3CompatibleData
pour obtenir une description des champs.
Bibliothèques clientes
Avant d'utiliser les bibliothèques clientes pour créer un transfert, suivez les instructions de la section Configurer l'accès à un récepteur Cloud Storage.
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 du service de transfert de stockage Go.
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 du service de transfert de stockage Java.
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 du service de transfert de stockage Node.js.
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 du service de transfert de stockage Python.
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.
Questions fréquentes
Le transfert depuis un espace de stockage compatible S3 est-il payant ?
Les transferts à partir d'un espace de stockage compatible S3 n'entraînent pas les frais "Transferts du service de transfert de stockage nécessitant des agents". Consultez la page Tarifs pour connaître les autres frais qui peuvent être encourus. Des frais de transfert de données sortantes et d'exploitation peuvent également vous être facturés par votre fournisseur de services cloud source.
Cloud Logging est-il compatible avec les transferts de stockage compatibles S3 ?
Oui. Vous pouvez activer Cloud Logging pour vos transferts en suivant les instructions de la section Cloud Logging pour le service de transfert de stockage.
Les transferts utilisant un fichier manifeste sont-ils acceptés ?
Oui. Les fichiers manifestes sont compatibles avec les transferts compatibles S3.
Si j'ajoute un objet au bucket source après le démarrage de la tâche, cet objet est-il transféré ?
Le service de transfert de stockage effectue une opération de listing sur le bucket source pour calculer la différence par rapport à la destination. Si l'opération de listing est déjà terminée lorsque le nouvel objet est ajouté, cet objet va être ignoré jusqu'au transfert suivant.
Le service de transfert de stockage effectue-t-il une mise en correspondance des sommes de contrôle sur les sources compatibles S3 ?
Le service de transfert de stockage exploite les données de somme de contrôle renvoyées par la source. Pour un stockage compatible S3, le service de transfert de stockage s'attend à ce que l'ETag de l'objet corresponde au hachage MD5 de l'objet.
Cependant, tous les objets transférés vers un stockage compatible S3 à l'aide de la fonctionnalité S3 d'importation en plusieurs parties ne comportent pas d'ETag MD5. Dans ce cas, le service de transfert de stockage se base sur la taille du fichier pour valider l'objet transféré.
Quels sont les débits atteignables pour les transferts à partir d'un stockage compatible S3 ?
Vous pouvez ajuster le débit de votre transfert en ajoutant d'autres agents de transfert. Nous vous recommandons d'utiliser trois agents pour assurer une bonne tolérance aux pannes et pour exploiter correctement un pipeline d'une capacité allant jusqu'à 10 Gbit/s. Pour augmenter encore le débit, ajoutez d'autres agents. Vous pouvez ajouter et supprimer des agents pendant un transfert.
Où les agents de transfert doivent-ils être déployés pour transférer des données depuis Amazon S3 vers Cloud Storage ?
Vous pouvez installer des agents dans Amazon EC2 ou EKS, dans la même région que votre bucket. Vous pouvez également exécuter des agents sur Google Cloud dans la région la plus proche.