Cette page explique 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 spécifique à la fonctionnalité.
Obtenir les rôles requis
Pour obtenir les autorisations nécessaires pour gérer des opérations de longue durée dans Cloud Storage, demandez à votre administrateur de vous accorder le rôle "Administrateur de l'espace de stockage" (roles/storage.admin
) ou le rôle "Propriétaire des anciens buckets Storage" (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
Pour en savoir plus sur l'attribution de rôles dans des buckets, consultez la page Utiliser IAM avec des buckets. Pour savoir comment attribuer des rôles aux projets, consultez la page Gérer l'accès.
Obtenir les détails d'une opération de longue durée
Ligne de commande
Pour obtenir des détails ou vérifier l'état d'une opération de longue durée, utilisez la commande gcloud storage operations describe
:
gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Remplacez :
BUCKET_NAME
: nom du bucket contenant l'opération de longue durée. 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 degcloud storage restore
, et l'ID de l'opération de longue durée estBcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
:Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
API REST
API JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Exécutez
cURL
pour appeler l'API JSON avec une requêteoperations.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 degcloud storage restore
, et l'ID de l'opération de longue durée estBcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_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* } }
Lister les opérations de longue durée dans un bucket
Ligne de commande
Pour répertorier les opérations de longue durée dans 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. Exemple :my-bucket
API REST
API JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Exécutez
cURL
pour appeler l'API JSON avec une requêteoperations.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
Ligne de commande
Pour annuler une opération de longue durée, utilisez la commande gcloud storage operations cancel
:
gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Remplacez :
BUCKET_NAME
: nom du bucket contenant l'opération de longue durée. 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 degcloud storage restore
, et l'ID de l'opération de longue durée estBcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
:Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
API REST
API JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Exécutez
cURL
pour appeler l'API JSON avec une requêteoperations.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 degcloud storage restore
, et l'ID de l'opération de longue durée estBcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_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 : type d'opération de longue durée appelé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.
Gestion des exceptions
Les opérations de longue durée sont lancées à partir d'API asynchrones et nécessitent des pratiques de traitement des erreurs différentes de celles des API synchrones. Contrairement aux API synchrones, la réponse aux appels d'API asynchrones peut indiquer la réussite même si l'opération de longue durée échoue. Au lieu de vous appuyer sur le 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 pour déterminer si un appel d'API a abouti.
Par exemple, si vous effectuez une requête de restauration groupée portant sur des objets soumis à suppression 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, interrogez l'état de l'opération de longue durée.
Notez que les API qui renvoient des opérations de longue durée (Get, List, Cancel) sont synchrones et renvoient des erreurs normales.