Todos os produtos
Search
Central de documentação

Object Storage Service:Restore objects (Go SDK V2)

Última atualização: Sep 22, 2026

Objetos nas classes de armazenamento Archive, Cold Archive e Deep Cold Archive precisam ser restaurados antes da leitura. Crie uma réplica temporária ao restaurar um objeto, que coexiste com o objeto arquivado original. Após o término do período de restauração, o sistema exclua a réplica automaticamente. Este tópico explica como usar o SDK do Object Storage Service (OSS) para Go a fim de restaurar objetos das classes de armazenamento Archive, Cold Archive e Deep Cold Archive.

Observações de uso

  • Chame o método RestoreObject apenas para objetos na classe de armazenamento Archive, Cold Archive ou Deep Cold Archive.

  • Os exemplos neste tópico usam a região China (Hangzhou) com o ID de região cn-hangzhou. Por padrão, os exemplos usam um endpoint público. Para acessar o oss a partir de outro service da alibaba cloud na mesma região, use um endpoint interno. Para obter mais informações sobre as regiões e os endpoints compatíveis com o OSS, consulte Regions and endpoints.

  • Os exemplos neste tópico leem as credenciais de acesso a partir de variáveis de ambiente. Para obter mais informações, acesse Configure access credentials, configure as credenciais de acesso, defina as permissões necessárias e especifique a região correta.

  • Para restaurar um objeto, você deve ter a permissão oss:RestoreObject. Para obter mais informações, consulte Grant a custom policy.

Assinatura do método

func (c *Client) RestoreObject(ctx context.Context, request *RestoreObjectRequest, optFns ...func(*Options)) (*RestoreObjectResult, error)

Parâmetros da requisição

Parâmetro

Tipo

Descrição

ctx

context.Context

O contexto da requisição; defina a duração total do tempo limite da requisição por meio dele.

request

*RestoreObjectRequest

Os parâmetros da requisição. Para obter mais informações, consulte RestoreObjectRequest.

optFns

...func(*Options)

(Opcional) Os parâmetros de configuração no nível da operação. Para obter mais informações, consulte Options.

A tabela a seguir descreve os parâmetros comuns de RestoreObjectRequest.

Parâmetro

Tipo

Descrição

bucket

*string

O nome do bucket.

key

*string

O nome do objeto.

versionId

*string

O ID de versão do objeto a ser restaurado. Caso você não especifique este parâmetro, o OSS restaura a versão mais recente do objeto.

restoreRequest

*RestoreRequest

Os parâmetros da requisição de restauração.

A tabela a seguir descreve os parâmetros de RestoreRequest.

Parâmetro

Tipo

Descrição

days

int32

O número de dias durante os quais o objeto permanece no estado restaurado. Para obter mais informações, consulte Restore objects.

jobParameters

*JobParameters

Os parâmetros de restauração; especifique a prioridade de restauração por meio deles. O campo Tier indica o tempo necessário para restaurar o objeto. Para obter mais informações, consulte Restore objects.

Parâmetros de resposta

Parâmetro

Tipo

Descrição

result

*RestoreObjectResult

O valor de retorno da API. É válido quando err é nil. Para obter mais detalhes, consulte RestoreObjectResult.

err

error

Um objeto de erro que é diferente de nil se a requisição falhar.

Exemplos

Use o código a seguir para restaurar objetos da classe de armazenamento Archive, Cold Archive ou Deep Cold Archive:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Define global variables for command-line arguments.
var (
	region     string // The OSS region.
	bucketName string // The bucket name.
	objectName string // The object name.
)

// init initializes the command-line flags.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objectName, "object", "", "The name of the object.")
}

func main() {
	// Parse command-line flags.
	flag.Parse()

	// Check if the bucket name is empty.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check if the region is empty.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Check if the object name is empty.
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}

	// Load the default configuration, and set the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Create a request to restore the object.
	request := &oss.RestoreObjectRequest{
		Bucket: oss.Ptr(bucketName), // The bucket name.
		Key:    oss.Ptr(objectName), // The object name.
		RestoreRequest: &oss.RestoreRequest{
			Days: 3, // Set the restoration period to 3 days.
		},
	}

	// Send the request to restore the object.
	result, err := client.RestoreObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to restore object %v", err)
	}

	// Print the result.
	log.Printf("restore object result:%#v\n", result)
}

Casos de uso

exclua uma réplica temporária

Ao restaurar um objeto da classe de armazenamento Cold Archive ou Deep Cold Archive, o sistema cria uma réplica temporária para acesso. Você incorre em cobranças de armazenamento por essa réplica até o fim do período de restauração. Se desejar encerrar o estado restaurado antecipadamente e parar de incorrer em cobranças pela réplica, envie uma requisição CleanRestoredObject. Após a conclusão da requisição, o objeto retorna ao estado congelado e não pode ser acessado diretamente.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Define global variables to store command-line arguments.
var (
	region     string // The OSS region.
	bucketName string // The bucket name.
	objectName string // The object name.
)

// init initializes the command-line flag parser and sets default values and help messages.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located. Required.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket. Required.")
	flag.StringVar(&objectName, "object", "", "The name of the object. Required.")
}

func main() {
	// Parse command-line flags.
	flag.Parse()

	// Check if the required region parameter is provided.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Check if the required bucket name parameter is provided.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check if the required object name parameter is provided.
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}

	// Load the default configuration, set the credential provider to read from environment variables, and set the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Create a request to delete the temporary replica of the restored object.
	request := &oss.CleanRestoredObjectRequest{
		Bucket: oss.Ptr(bucketName), // Set the bucket name.
		Key:    oss.Ptr(objectName), // Set the object name.
	}

	// Send the request to delete the temporary replica.
	result, err := client.CleanRestoredObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to clean restored object %v", err)
	}

	// Print the result.
	log.Printf("clean restored object result:%#v\n", result)
}

Referências

  • Para obter o código de exemplo completo para restaurar um objeto, consulte GitHub.

  • Para obter mais informações sobre a operação da API para restaurar um objeto, consulte RestoreObject.

  • Para obter mais informações sobre como restaurar objetos, consulte Restore objects.