Transférer des données vers ou depuis Cloud Storage

Parallelstore peut importer des données depuis Cloud Storage et en exporter vers ce service. Les transferts de données vous permettent de charger rapidement des données dans votre instance Parallelstore et d'utiliser Cloud Storage comme couche de sauvegarde durable pour votre instance Parallelstore.

Les importations et exportations de données sont incrémentielles. Elles ne copient que les fichiers qui n'existent pas encore dans la destination ou qui ont été modifiés depuis leur transfert.

Pour connaître les vitesses de transfert attendues, consultez Performances.

Autorisations requises

L'utilisateur ou le compte de service utilisé pour lancer le transfert doit disposer des autorisations suivantes :

  • parallelstore.instances.exportData pour transférer des données de Parallelstore vers Cloud Storage.
  • parallelstore.instances.importData pour transférer les données vers Cloud Storage.

Ces deux autorisations sont accordées avec le rôle roles/parallelstore.admin. Vous pouvez créer un rôle personnalisé pour accorder des autorisations de manière indépendante.

En outre, le compte de service Parallelstore nécessite l'autorisation suivante :

  • roles/storage.admin sur le bucket Cloud Storage.

Pour accorder cette autorisation, exécutez la commande gcloud suivante :

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-parallelstore.iam.gserviceaccount.com \
  --role=roles/storage.admin

Votre PROJECT_NUMBER est différent d'un ID de projet :

  • Un ID de projet est une chaîne unique pouvant être une combinaison de lettres, de chiffres et de traits d'union. Vous spécifiez un ID de projet lorsque vous créez votre projet. Exemple :example-project-123
  • Un numéro de projet est un identifiant unique généré automatiquement pour votre projet. Il ne comporte que des chiffres. Exemple :1234567890

Pour obtenir le PROJECT_NUMBER d'un ID de projet donné, utilisez la commande gcloud projects describe :

gcloud projects describe PROJECT_ID --format="value(projectNumber)"

Importer des données dans Parallelstore

Vous pouvez importer des données depuis un bucket Cloud Storage. Le bucket peut se trouver dans le même projet ou dans un autre. Le bucket peut se trouver dans une zone ou une région différente de votre instance ParallelStore, mais les transferts interrégions peuvent être plus lents que les transferts intrarégions.

gcloud

gcloud beta parallelstore instances import-data INSTANCE_ID \
  --location=LOCATION \
  --source-gcs-bucket-uri=gs://BUCKET_NAME \
  --destination-parallelstore-path=PS_PATH

Où :

  • INSTANCE_ID est le nom de votre instance Parallelstore.
  • --location doit être une zone compatible.
  • --source-gcs-bucket-uri spécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au format gs://<bucket_name>/<optional_path_inside_bucket>.
  • --destination-parallelstore-path spécifie le chemin d'accès au répertoire racine du système de fichiers Parallelstore. Doit commencer par /. La valeur par défaut est /.

Les paramètres ci-dessous sont facultatifs :

  • --request-id vous permet d'attribuer un ID unique à cette demande. Si vous relancez cette requête en utilisant le même ID de requête, le serveur l'ignorera si elle a déjà été traitée. Doit être un UUID valide qui ne soit pas composé uniquement de zéros. Par exemple : --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d.
  • --async renvoie immédiatement une réponse, sans attendre la fin de l'opération.

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "source_gcs_bucket" : {
    "uri" : "gs://BUCKET_NAME/"
  },
  "destination_parallelstore" : {
    "path" : "/PATH"
  }
}

Où :

  • PROJECT_ID est l'ID de votre projet Google Cloud .
  • LOCATION doit être la zone compatible dans laquelle réside votre instance.
  • INSTANCE_ID est le nom de votre instance Parallelstore.
  • source-gcs-bucket contient une clé uri dont la valeur spécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au format gs://<bucket_name>/<optional_path_inside_bucket>.
  • destination-parallelstore contient une clé path dont la valeur spécifie le chemin d'accès au répertoire racine du système de fichiers Parallelstore. Doit commencer par /. La valeur par défaut est /.

Pour utiliser votre propre compte de service au lieu de l'agent de service géré par Google, la requête accepte un champ serviceAccount dans l'objet JSON :

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Voici un exemple de commande cURL :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
  -d '{"source_gcs_bucket": {"uri":"gs://BUCKET_NAME/"}, "destination_parallelstore": {"path":"/"}}'

Exporter les données

Vous pouvez exporter les données de votre instance Parallelstore vers un bucket Cloud Storage dans le même projet ou dans un autre. Le bucket peut se trouver dans une zone ou une région différente de votre instance Parallelstore, mais les transferts interrégions peuvent être plus lents que les transferts intrarégions.

gcloud

gcloud beta parallelstore instances export-data \
  INSTANCE_ID \
  --location=LOCATION \
  --destination-gcs-bucket-uri="gs://BUCKET_NAME" \
  --source-parallelstore-path="/"

Où :

  • INSTANCE_ID est le nom de votre instance Parallelstore.
  • --location doit être une zone compatible.
  • --destination-gcs-bucket-uri spécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au format gs://<bucket_name>/<optional_path_inside_bucket>.
  • --source-parallelstore-path spécifie le chemin d'accès au répertoire racine du système de fichiers Parallelstore. Doit commencer par /. La valeur par défaut est /.

Les paramètres ci-dessous sont facultatifs :

  • --request-id vous permet d'attribuer un ID unique à cette demande. Si vous relancez cette requête en utilisant le même ID de requête, le serveur l'ignorera si elle a déjà été traitée. Doit être un UUID valide qui ne soit pas composé uniquement de zéros. Par exemple : --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d.
  • --async renvoie immédiatement une réponse, sans attendre la fin de l'opération.

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "source_parallelstore" : {
    "path" : "/"
  },
  "destination_gcs_bucket" : {
    "uri" : "gs://BUCKET_NAME/"
  }
}

Où :

  • PROJECT_ID est l'ID de votre projet Google Cloud .
  • INSTANCE_ID est le nom de votre instance Parallelstore.
  • LOCATION doit être la zone compatible dans laquelle réside votre instance Parallelstore.
  • --source-parallelstore contient une clé path dont la valeur spécifie le chemin d'accès au répertoire racine du système de fichiers Parallelstore. Doit commencer par /. La valeur par défaut est /.
  • --destination-gcs-bucket contient une clé uri dont la valeur spécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au format gs://<bucket_name>/<optional_path_inside_bucket>.

Pour utiliser votre propre compte de service au lieu de l'agent de service géré par Google, la requête accepte un champ serviceAccount dans l'objet JSON :

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Voici un exemple de commande cURL :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json"
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
  -d '{"source_parallelstore": {"path":"/"}, "destination_gcs_bucket": {"uri":"gs://BUCKET_NAME/"}}'

Opération Get

Pour afficher l'état d'une opération d'importation ou d'exportation, vous avez besoin de l'ID de l'opération. Cet ID est renvoyé par le service lorsque vous effectuez une demande d'importation ou d'exportation. Il utilise le format suivant :

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud beta parallelstore operations describe OPERATION_ID \
  --location=LOCATION

REST

GET https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]

Voici un exemple de commande cURL :

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Annuler l'opération

Pour annuler une opération d'importation ou d'exportation, vous avez besoin de l'ID de l'opération. Cet ID est renvoyé par le service lorsque vous effectuez une demande d'importation ou d'exportation. Il utilise le format suivant :

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud beta parallelstore operations cancel OPERATION_ID \
  --location=LOCATION

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]

Voici un exemple de commande cURL :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel