Objetos nas classes de armazenamento Archive, Cold Archive e Deep Cold Archive não ficam acessíveis imediatamente e exigem restauração antes da leitura. Este tópico descreve como restaurar esses objetos com o SDK do iOS.
Pré-requisitos
Antes de começar, certifique-se de ter:
Uma instância do OSSClient. Para obter mais informações, consulte Initialization.
Um objeto armazenado na classe de armazenamento Archive, Cold Archive ou Deep Cold Archive
A permissão
oss:RestoreObjectpara o bucket
Código de exemplo
O código a seguir mostra como restaurar um objeto chamado exampleobject.txt das classes de armazenamento Archive, Cold Archive ou Deep Cold Archive em um bucket chamado 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];
Importante: Enviar uma solicitação de restauração não significa que o objeto estará acessível imediatamente. O processo de restauração é executado de forma assíncrona e o tempo necessário varia de acordo com a classe de armazenamento.
Tratamento de erros
Erros comuns ao restaurar objetos:
|
Código do erro |
Descrição |
Solução |
|
NoSuchKey |
O objeto especificado não existe |
Verifique a chave do objeto e o nome do bucket |
|
OperationNotSupported |
O objeto não pode ser restaurado porque não está em uma classe de armazenamento arquivada |
Verifique se a classe de armazenamento do objeto é Archive, Cold Archive ou Deep Cold Archive. Somente objetos arquivados exigem restauração. |
|
RestoreAlreadyInProgress |
Já existe uma solicitação de restauração em andamento para este objeto |
Aguarde a conclusão da restauração atual |
Referências
Para obter a referência completa da API, consulte RestoreObject
Para obter informações sobre a inicialização de uma instância do OSSClient, consulte Initialization