Utiliser des opérations de longue durée dans Cloud Storage

Sur cette page, vous allez découvrir comment utiliser les opérations de longue durée lancées à l'aide d'appels de méthode dans Cloud Storage. Pour plus d'informations sur la sémantique d'une opération de longue durée renvoyée par un appel de méthode spécifique, consultez la documentation propre à la fonctionnalité.

Obtenir les rôles requis

Pour obtenir les autorisations nécessaires à la gestion des opérations de longue durée dans Cloud Storage, demandez à votre administrateur de vous attribuer le rôle "Administrateur de l'espace de stockage" (roles/storage.admin) ou "Propriétaire des anciens buckets de l'espace de stockage" (roles/storage.legacyBucketOwner) sur le bucket ou le projet utilisé pour effectuer l'opération sous-jacente.

Ces rôles prédéfinis contiennent les autorisations suivantes, requises pour gérer les opérations de longue durée dans Cloud Storage :

  • storage.bucketOperations.cancel
  • storage.bucketOperations.get
  • storage.bucketOperations.list
  • storage.buckets.list (cette autorisation n'est requise que lorsque vous utilisez la console Google Cloud )

Pour en savoir plus sur l'attribution de rôles pour des buckets, consultez la page Définir et gérer des stratégies IAM sur des buckets. Pour savoir comment attribuer des rôles aux projets, consultez Gérer l'accès.

Obtenir les détails d'une opération de longue durée

Console

  1. Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.

    Accéder à la page Buckets

  2. Dans la liste des buckets, cliquez sur le nom du bucket associé à l'opération de longue durée.

  3. Cliquez sur l'onglet Opérations.

Ligne de commande

Pour obtenir les détails ou vérifier l'état d'une opération de longue durée, exécutez la commande gcloud storage operations describe :

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Remplacez :

  • BUCKET_NAME par le nom du bucket contenant l'opération de longue durée. Par exemple, my-bucket.

  • OPERATION_ID par l'ID de l'opération de longue durée, qui est renvoyé dans la réponse des méthodes que vous appelez. Par exemple, la réponse suivante est renvoyée lors de l'appel de gcloud storage restore, et l'ID de l'opération de longue durée est BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP :

    Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

API REST

API JSON

  1. Vous devez installer et initialiser la gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

  2. Exécutez cURL pour appeler l'API JSON avec une requête operations.get :

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/operations/OPERATION_ID"

    Remplacez :

    • BUCKET_NAME par le nom du bucket associé à l'opération de longue durée.

    • OPERATION_ID par l'ID de l'opération de longue durée, qui est renvoyé dans la réponse des méthodes que vous appelez. Par exemple, la réponse suivante est renvoyée lors de l'appel de gcloud storage restore, et l'ID de l'opération de longue durée est BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP :

      Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

Si la requête aboutit, une ressource operations est renvoyée :

{
  "kind": "storage#operation",
  "name": "projects/_/buckets/bucket/operations/operation_id",
  "metadata": {
    "@type": OperationMetadataType*,
    metadata OperationMetadata*
  },
  "done": boolean,
  "response": {
    "@type": ResponseResourceType*,
    response ResponseResource*
  }
}

Répertorier les opérations de longue durée d'un bucket

Console

  1. Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.

    Accéder à la page Buckets

  2. Dans la liste des buckets, cliquez sur le nom du bucket.

  3. Cliquez sur l'onglet Opérations.

Ligne de commande

Pour répertorier les opérations de longue durée d'un bucket, exécutez la commande gcloud storage operations list :

gcloud storage operations list gs://BUCKET_NAME

Remplacez :

  • BUCKET_NAME par le nom du bucket contenant les opérations de longue durée. Par exemple, my-bucket.

API REST

API JSON

  1. Vous devez installer et initialiser la gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

  2. Exécutez cURL pour appeler l'API JSON avec une requête operations.get :

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/operations"

    Remplacez :

    • BUCKET_NAME par le nom du bucket associé aux opérations de longue durée que vous souhaitez répertorier.

Si la requête aboutit, vous obtenez une réponse semblable à celle-ci :

{
  "kind": "storage#operations",
  "nextPageToken": string,
  "operations": [
    operations Resource
  ]
}

Annuler une opération de longue durée

Console

  1. Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.

    Accéder à la page Buckets

  2. Dans la liste des buckets, cliquez sur le nom du bucket associé à l'opération de longue durée que vous souhaitez annuler.

  3. Cliquez sur l'onglet Opérations.

  4. Sur la ligne de l'opération de longue durée, cliquez sur Plus d'options, puis sur Annuler.

Ligne de commande

Pour annuler une opération de longue durée, exécutez la commande gcloud storage operations cancel :

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Remplacez :

  • BUCKET_NAME par le nom du bucket contenant l'opération de longue durée. Par exemple, my-bucket.

  • OPERATION_ID par l'ID de l'opération de longue durée, qui est renvoyé dans la réponse des méthodes que vous appelez. Par exemple, la réponse suivante est renvoyée lors de l'appel de gcloud storage restore, et l'ID de l'opération de longue durée est BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP :

    Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

API REST

API JSON

  1. Vous devez installer et initialiser la gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

  2. Exécutez cURL pour appeler l'API JSON avec une requête operations.post :

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/operations/OPERATION_ID/cancel"

    Remplacez :

    • BUCKET_NAME par le nom du bucket associé à l'opération de longue durée que vous souhaitez annuler.

    • OPERATION_ID par l'ID de l'opération de longue durée, qui est renvoyé dans la réponse des méthodes que vous appelez. Par exemple, la réponse suivante est renvoyée lors de l'appel de gcloud storage restore, et l'ID de l'opération de longue durée est BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP :

      Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

Métadonnées

Les opérations de longue durée comportent des métadonnées associées. Les métadonnées suivantes identifient les propriétés d'une opération de longue durée :

  • Heure de création : heure à laquelle l'opération de longue durée a été créée.

  • Heure de fin : heure à laquelle l'exécution de l'opération de longue durée s'est terminée.

  • Heure de mise à jour : heure de la dernière modification de l'opération de longue durée.

  • Type : appel d'API qui a lancé l'opération de longue durée.

  • Annulation demandée : indique si l'utilisateur a demandé l'annulation de l'opération de longue durée.

  • Pourcentage de progression : progression estimée de l'opération de longue durée, en pourcentage. Une valeur -1 signifie que la progression est inconnue.

Dans la console Google Cloud , les métadonnées de pourcentage de progression et d'annulation demandée s'affichent dans un champ État combiné.

Gestion des exceptions

Lancées à partir d'API asynchrones, les opérations de longue durée requièrent des pratiques de gestion des exceptions différentes de celles des API synchrones. Contrairement aux API synchrones, la réponse aux appels d'API asynchrones peut indiquer une réussite même si l'opération de longue durée finit par échouer. Au lieu de vous fier au code d'état renvoyé dans les en-têtes de réponse, vous devez analyser les métadonnées de l'opération de longue durée dans le corps de la réponse afin de déterminer si un appel d'API a réussi.

Par exemple, si vous effectuez une requête de restauration groupée portant sur des éléments supprimés de façon réversible, elle renvoie un code d'état HTTP positif (200 OK), même si une erreur se produit au cours de l'opération. Pour vérifier si l'opération de restauration groupée a réussi, consultez l'état de l'opération de longue durée.

Notez que les API qui lancent des opérations de longue durée (Get, List, Cancel) sont synchrones et renvoient des erreurs normales.