Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Помимо данных, которые они содержат, контейнеры BLOB-объектов поддерживают свойства системы и пользовательские метаданные. В этой статье показано, как управлять системными свойствами и пользовательскими метаданными с помощью клиентского модуля Azure Storage для Go.
Предварительные условия
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Go 1.18+
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентским модулем Хранилище BLOB-объектов Azure для Go. Ниже приведены действия по установке модуля, добавлению import путей и созданию авторизованного клиентского объекта. Дополнительные сведения см. в статье «Начало работы с хранилищем BLOB-объектов Azure и Go».
Установка модулей
Установите модуль azblob с помощью следующей команды:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Чтобы выполнить проверку подлинности с помощью идентификатора Microsoft Entra (рекомендуется), установите azidentity модуль с помощью следующей команды:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Добавление путей импорта
В файле кода добавьте следующие пути импорта:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Эти пути импорта представляют собой минимум, необходимый для начала работы. В некоторых примерах кода в этой статье могут потребоваться дополнительные пути импорта. Дополнительные сведения и примеры использования см. в примерах кода.
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте клиентский объект с помощью azblob. NewClient. В следующем примере показано, как создать клиентский объект с помощью DefaultAzureCredential авторизации:
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
}
Авторизация
Механизм авторизации должен иметь необходимые разрешения для работы со свойствами контейнера или метаданными. Для авторизации с помощью Microsoft Entra ID (рекомендуется), вам потребуется встроенная роль Azure RBAC Storage Blob Data Reader или выше для операций get, и роль Storage Blob Data Contributor или выше для операций set. Дополнительные сведения см. в руководстве по авторизации для получения свойств контейнера (REST API), задания метаданных контейнера (REST API) или получения метаданных контейнера (REST API).
Сведения о свойствах и метаданных
Системные свойства: свойства системы существуют в каждом ресурсе хранилища BLOB-объектов. Некоторые из них можно читать или задавать, другие — только читать. За кулисами некоторые системные свойства соответствуют определенным стандартным заголовкам HTTP. Библиотека клиентского хранилища Azure для Go поддерживает эти свойства.
Определяемые пользователем метаданные: такие метаданные состоят из одной или нескольких пар "имя-значение", которые можно указать для ресурса хранилища BLOB-объектов. Вы можете использовать метаданные для хранения дополнительных значений вместе с ресурсом. Значения метаданных предназначены только для ваших собственных целей и не влияют на поведение ресурса.
Пары имен и значений метаданных являются допустимыми HTTP-заголовками, поэтому они должны соответствовать всем ограничениям для HTTP-заголовков. Дополнительные сведения о требованиях к именованию метаданных см. в разделе "Имена метаданных".
Получение свойств контейнера
Чтобы получить свойства контейнера, вызовите следующий метод из клиентского объекта контейнера:
В следующем примере кода извлекается системные свойства контейнера и записывается некоторые значения свойств в окно консоли:
func getContainerProperties(client *azblob.Client, containerName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Get the container properties
resp, err := containerClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the container properties
fmt.Printf("Blob public access: %v\n", *resp.BlobPublicAccess)
fmt.Printf("Lease status: %v\n", *resp.LeaseStatus)
fmt.Printf("Lease state: %v\n", *resp.LeaseState)
fmt.Printf("Has immutability policy: %v\n", *resp.HasImmutabilityPolicy)
}
Установка и получение метаданных
Метаданные можно указать в виде одной или нескольких пар "имя-значение" для объекта BLOB или контейнера. Чтобы задать метаданные, вызовите следующий метод из клиентского объекта контейнера:
Задание метаданных контейнера перезаписывает все существующие метаданные, связанные с контейнером. Невозможно изменить отдельную пару "имя-значение".
Следующий пример кода задает метаданные в контейнере:
func setContainerMetadata(client *azblob.Client, containerName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Set the container metadata
var metadata = make(map[string]*string)
metadata["key1"] = to.Ptr("value1")
metadata["key2"] = to.Ptr("value2")
_, err := containerClient.SetMetadata(context.TODO(), nil)
handleError(err)
}
Чтобы получить метаданные, вызовите следующий метод из клиентского объекта контейнера:
Метаданные включаются в ответ от GetProperties. Следующий пример считывает значения метаданных и записывает их в окно консоли:
func getContainerMetadata(client *azblob.Client, containerName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Get the container properties, which includes metadata
resp, err := containerClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the container metadata
for k, v := range resp.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
Примечание.
Примеры кода в этом руководстве предназначены для ознакомления с хранилищем объектов Azure Blob и языком Go. Необходимо изменить обработку ошибок и Context значения в соответствии с потребностями приложения.
Ресурсы
Дополнительные сведения о настройке и получении свойств контейнера и метаданных с помощью клиентского модуля Хранилище BLOB-объектов Azure для Go см. в следующих ресурсах.
Примеры кода
- Просмотр примеров кода из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для Go содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Go. Методы клиентской библиотеки для задания и получения свойств и метаданных используют следующие операции REST API:
- Получение свойств контейнера (REST API)
- Настройка метаданных контейнера (REST API)
- Получение метаданных контейнера (REST API)
Метод get_container_properties извлекает свойства контейнера и метаданные, вызывая операцию Get Container Properties и операцию Get Container Metadata .
Ресурсы модуля клиента
Связанный контент
- Эта статья является частью руководства разработчика по хранилищу объектов BLOB для Go. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Go.