Un bucket es un contenedor para almacenar objetos. Este tema describe cómo crear un bucket.
Notas de uso
El código de ejemplo de este tema usa el ID de región
cn-hangzhoucorrespondiente a la región China (Hangzhou). De forma predeterminada, se usa el endpoint público para acceder a los recursos de un bucket. Si desea acceder a los recursos del bucket mediante otros servicios de Alibaba Cloud en la misma región donde se encuentra el bucket, use el endpoint interno. Para obtener más información sobre las regiones y endpoints de OSS, consulte Regions and endpoints.En este tema, las credenciales de acceso se obtienen de variables de entorno. Para obtener más información sobre cómo configurar las credenciales de acceso, consulte Configure access credentials.
A partir de las 10:00:00 (UTC+8) del 13 de octubre de 2025, OSS habilitará gradualmente Block public access de forma predeterminada para los buckets creados mediante llamadas a operaciones de API, OSS SDK u ossutil en todas las regiones. Para conocer la fecha de entrada en vigor de este cambio en cada región, consulte Announcement. Una vez habilitada esta función, no podrá otorgar permisos de acceso público, lo que incluye la ACL de lectura pública o de lectura/escritura pública, ni directivas de bucket que permitan el acceso público. Si su caso de uso requiere acceso público, deshabilite el bloqueo de acceso público después de crear el bucket.
Permisos
De forma predeterminada, una cuenta de Alibaba Cloud tiene permisos completos. Los usuarios de RAM o los roles de RAM bajo una cuenta de Alibaba Cloud no tienen ningún permiso de forma predeterminada. La cuenta de Alibaba Cloud o el administrador de la cuenta deben otorgar los permisos de operación a través de RAM policies o Bucket Policy.
|
API |
Action |
Descripción |
|
PutBucket |
|
Crea un bucket. |
|
|
Después de crear un bucket, este permiso es necesario para modificar la ACL del bucket. |
Método
func (c *Client) PutBucket(ctx context.Context, request *PutBucketRequest, optFns ...func(*Options)) (*PutBucketResult, error)
Parámetros de solicitud
|
Parámetro |
Tipo |
Descripción |
|
ctx |
context.Context |
El contexto de la solicitud, que se puede usar para especificar la duración total de la solicitud. |
|
request |
*PutBucketRequest |
Especifica los parámetros de una operación concreta. Para obtener más información, consulte PutBucketRequest. |
|
optFns |
...func(*Options) |
Opcional. El parámetro de nivel de operación. Para obtener más información, consulte Options. |
Parámetros de respuesta
|
Parámetro de respuesta |
Tipo |
Descripción |
|
result |
*PutBucketResult |
La respuesta a la operación. Este parámetro es válido cuando el valor de err es nil. Para obtener más información, consulte PutBucketResult. |
|
err |
error |
El estado de la solicitud. Si la solicitud falla, el valor de err no puede ser nil. |
Ejemplo
A continuación se muestra un código de ejemplo para crear un 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"
)
// Specify the global variables.
var (
region string // The region.
bucketName string // The name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
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 bucket name is empty.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is empty.
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)
request := &oss.PutBucketRequest{
Bucket: oss.Ptr(bucketName), // The name of the bucket.
}
// Send a request to create a bucket.
result, err := client.PutBucket(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put bucket %v", err)
}
// Display the result of the bucket creation.
log.Printf("put bucket result:%#v\n", result)
}