Creación de un contenedor de blobs con Go
En este artículo se muestra cómo crear contenedores con el módulo cliente de Azure Storage para Go. Los blobs de Azure Storage se organizan en contenedores. Antes de poder cargar un blob, primero debe crear un contenedor.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Una cuenta de Azure Storage: cree una cuenta de almacenamiento
- Go 1.18+
Configurar el entorno
Si no tiene un proyecto existente, esta sección muestra cómo configurar un proyecto para trabajar con el módulo cliente Azure Blob Storage para Go. Los pasos incluyen la instalación del módulo, la adición de rutas de acceso de import
y la creación de un objeto de cliente autorizado. Para obtener información, consulte Introducción a Azure Blob Storage y Go.
Módulos de instalación
Instale el módulo azblob mediante el siguiente comando:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Para autenticarse con Microsoft Entra ID (recomendado), instale el módulo azidentity
mediante el siguiente comando:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Agregar rutas de importación
En el archivo de código, agregue las rutas de importación siguientes:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Estas rutas de importación representan el mínimo necesario para empezar. Algunos ejemplos de código de este artículo pueden requerir rutas de importación adicionales. Para obtener detalles específicos y ejemplos de uso, consulte Ejemplos de código.
Creación de un objeto de cliente
Para conectar una aplicación a Blob Storage, cree un objeto de cliente mediante azblob.NewClient. En el ejemplo siguiente se muestra cómo crear un objeto de cliente mediante DefaultAzureCredential
para la autorización:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Authorization
El mecanismo de autorización debe tener los permisos necesarios para crear un contenedor. Para la autorización con Microsoft Entra ID (recomendado) se necesita el rol integrado de RBAC de Azure de Colaborador de datos de Storage Blob o superior. Para obtener más información, consulte la guía de autorización para Crear contenedor (API de REST).
Acerca de la nomenclatura de contenedores
Un nombre de contenedor debe ser un nombre DNS válido, ya que forma parte del URI único que se usa para direccionar el contenedor o sus blobs. Siga estas reglas al asignar un nombre a un contenedor:
- Los nombres de contenedor pueden tener entre 3 y 63 caracteres.
- Los nombres de contenedor deben comenzar por una letra o un número, y solo pueden contener letras en minúscula, números y el carácter de guión (-).
- Los guiones consecutivos no están permitidos en los nombres de contenedores.
El URI de un recurso contenedor tiene el siguiente formato:
https://my-account-name.blob.core.windows.net/my-container-name
Creación de un contenedor
Para crear un contenedor, llame al método siguiente:
Los contenedores se crean inmediatamente debajo de la cuenta de almacenamiento. No es posible anidar un contenedor debajo de otro. Se genera una excepción si ya existe un contenedor con el mismo nombre.
En el ejemplo siguiente se muestra cómo crear un contenedor:
func createContainer(client *azblob.Client, containerName string) {
// Create a container
_, err := client.CreateContainer(context.TODO(), containerName, nil)
handleError(err)
}
Creación del contenedor raíz
Un contenedor raíz sirve como contenedor predeterminado para la cuenta de almacenamiento. Cada cuenta de almacenamiento puede tener un contenedor raíz, que se debe denominar $root. El contenedor raíz debe crearse o eliminarse explícitamente.
Puede hacer referencia a un blob almacenado en el contenedor raíz sin incluir el nombre del contenedor raíz. El contenedor raíz permite hacer referencia a un blob en el nivel superior de la jerarquía de la cuenta de almacenamiento. Por ejemplo, puede hacer referencia a un blob en el contenedor raíz de la siguiente manera:
https://<storage-account-name>.blob.core.windows.net/default.html
En el ejemplo siguiente se crea el contenedor si aún no existe en la cuenta de almacenamiento:
func createRootContainer(client *azblob.Client) {
// Create root container
_, err := client.CreateContainer(context.TODO(), "$root", nil)
handleError(err)
}
Nota:
Los ejemplos de código de esta guía están diseñados para ayudarle a empezar a trabajar con Azure Blob Storage y Go. Debe modificar el control de errores y los valores de Context
para satisfacer las necesidades de la aplicación.
Recursos
Para obtener más información sobre cómo crear un contenedor con el módulo cliente de Azure Blob Storage para Go, consulte los recursos siguientes.
Ejemplos de código
- Visualización de ejemplos de código de este artículo (GitHub)
Operaciones de API REST
El SDK de Azure para Go contiene bibliotecas que se crean a partir de la API de REST de Azure, lo que le permite interactuar con las operaciones de API de REST a través de paradigmas conocidos de Go. Los métodos de la biblioteca cliente para crear un contenedor usan esta operación de API REST:
- Create Container (API REST)
Recursos del módulo cliente
- Documentación de referencia del módulo cliente
- Código fuente del módulo cliente
- Paquete (pkg.go.dev)
Contenido relacionado
- Este artículo forma parte de la guía para desarrolladores de Blob Storage para Go. Para obtener más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación Go.