Les objets stockés dans les classes de stockage Archive, Cold Archive et Deep Cold Archive ne sont pas immédiatement accessibles. Vous devez les restaurer avant de pouvoir les lire. Cette rubrique explique comment restaurer ces objets à l'aide du SDK iOS.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Une instance OSSClient. Pour plus d'informations, consultez la section Initialisation.
Un objet stocké dans une classe de stockage Archive, Cold Archive ou Deep Cold Archive
L'autorisation
oss:RestoreObjectpour le bucket
Exemple de code
Le code suivant montre comment restaurer un objet nommé exampleobject.txt, stocké dans une classe Archive, Cold Archive ou Deep Cold Archive, depuis un bucket nommé examplebucket :
OSSRestoreObjectRequest *request = [OSSRestoreObjectRequest new];
// Bucket containing the archived object
request.bucketName = @"examplebucket";
// Full path of the object (do not include the bucket name)
request.objectKey = @"exampleobject.txt";
OSSTask *restoreObjectTask = [client restoreObject:request];
[restoreObjectTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
if (!task.error) {
NSLog(@"Restore request submitted successfully");
// Note: The object is not immediately accessible.
// Check restoration status before attempting to read.
} else {
NSLog(@"Restore request failed: %@", task.error);
// Handle specific errors (see Error handling section)
}
return nil;
}];
// Use synchronous blocking if you need to wait for request submission to complete
// Not recommended for UI thread as it blocks execution
// [restoreObjectTask waitUntilFinished];
Important : L'envoi d'une demande de restauration ne rend pas l'objet immédiatement accessible. Le processus de restauration s'exécute de manière asynchrone et sa durée dépend de la classe de stockage.
Gestion des erreurs
Erreurs courantes lors de la restauration d'objets :
| Code d'erreur | Description | Solution |
|---|---|---|
| NoSuchKey | L'objet spécifié n'existe pas | Vérifiez la clé de l'objet et le nom du bucket |
| OperationNotSupported | L'objet ne prend pas en charge la restauration car il n'appartient pas à une classe de stockage archivée | Vérifiez que la classe de stockage de l'objet est Archive, Cold Archive ou Deep Cold Archive. Seuls les objets archivés nécessitent une restauration. |
| RestoreAlreadyInProgress | Une demande de restauration pour cet objet est déjà en cours | Attendez que la restauration existante soit terminée |
Références
Pour la référence API complète, consultez la section RestoreObject
Pour plus d'informations sur l'initialisation d'une instance OSSClient, consultez la section Initialisation