Exclua um bucket do Object Storage Service (OSS) desnecessário para evitar cobranças indevidas.
Observações
O código de exemplo deste tópico usa, por padrão, o ID da região
cn-hangzhou, referente à região China (Hangzhou), e o endpoint público. Para acessar recursos do bucket a partir de outros serviços da Alibaba Cloud na mesma região, use o endpoint interno. Para obter mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints do OSS.As credenciais de acesso são obtidas de variáveis de ambiente. Para saber como configurar credenciais de acesso, consulte Configurar credenciais de acesso.
Os nomes dos buckets devem ser exclusivos. Após a exclusão de um bucket, o nome fica disponível para uso por terceiros. Caso deseje preservar o nome, esvazie o bucket em vez de excluí-lo.
Não é possível restaurar buckets excluídos. Antes de excluir um bucket, confirme que os dados não são mais necessários ou faça um backup prévio. Para mais detalhes, consulte Fazer backup de buckets.
A permissão
oss:DeleteBucketé obrigatória para excluir buckets. Para mais informações, consulte Conceder uma política personalizada.
Permissões
Por padrão, uma conta Alibaba Cloud tem permissões totais. Usuários RAM ou funções RAM vinculados a essa conta não têm nenhuma permissão inicialmente. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões operacionais por meio de políticas do RAM ou Bucket Policy.
|
API |
Ação |
Descrição |
|
DeleteBucket |
|
Exclui um bucket. |
Se um usuário RAM tiver a permissão oss:DeleteBucket em uma política do RAM, mas não conseguir excluir o bucket, é possível que uma bucket policy anexada ao usuário contenha oss:DeleteBucket com o efeito definido como Deny. Altere o valor de Deny para Allow ou remova a bucket policy para resolver o problema.
Pré-requisitos
-
Todos os objetos do bucket foram excluídos.
ImportantePara excluir um bucket com versionamento ativado, certifique-se de que todas as versões atuais e anteriores dos objetos no bucket foram removidas. Para mais informações, consulte Versionamento.
Caso o bucket contenha poucos objetos, recomenda-se a exclusão manual. Para mais detalhes, consulte Excluir objetos.
Se o bucket contiver um grande volume de objetos, configure regras de ciclo de vida para excluí-los. Para mais informações, consulte Regras de ciclo de vida.
As partes geradas por tarefas de upload multipart ou upload retomável no bucket foram excluídas. Para mais informações, consulte Excluir partes.
Método
func (c *Client) DeleteBucket(ctx context.Context, request *DeleteBucketRequest, optFns ...func(*Options)) (*DeleteBucketResult, error)
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Descrição |
|
ctx |
context.Context |
Contexto da solicitação, usado para definir a duração total da requisição. |
|
request |
*DeleteBucketRequest |
Parâmetros específicos da operação da API. Para mais informações, consulte DeleteBucketRequest. |
|
optFns |
...func(*Options) |
Opcional. Parâmetro no nível da operação. Para mais detalhes, consulte Options. |
Parâmetros de resposta
|
Parâmetro |
Tipo |
Descrição |
|
result |
*DeleteBucketResult |
Resposta da operação. Válido quando err é nil. Para mais informações, visite DeleteBucketResult. |
|
err |
error |
Status de erro. Um valor diferente de nil indica falha na solicitação. |
Código de exemplo
O código abaixo demonstra como excluir um bucket.
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"
)
var (
region string
bucketName string
)
func init() {
// Define command line parameters to specify the region and name of the bucket.
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a request object for deletion.
request := &oss.DeleteBucketRequest{
Bucket: oss.Ptr(bucketName),
}
// Call the DeleteBucket method.
result, err := client.DeleteBucket(context.TODO(), request)
if err != nil {
log.Fatalf("failed to delete bucket %v", err)
}
// Display the result.
log.Printf("delete bucket result:%#v\n", result)
}
Referências
Para acessar o código de exemplo completo sobre exclusão de buckets, visite o exemplo no GitHub.
Para consultar a referência da API de exclusão de buckets, veja DeleteBucket.