你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

开始使用 Azure Blob 存储和 Go

本文介绍了如何使用适用于 Go 的 Azure Blob 存储客户端模块连接到 Azure Blob 存储。 连接后,可以针对 Blob 存储服务的容器、Blob 和功能运行代码。

API 参考文档 | 库源代码 | 包 (pkg.go.dev)

先决条件

设置项目

本部分逐步指导如何准备一个项目,使其与适用于 Go 的 Azure Blob 存储客户端模块配合使用。

从 GOPATH 中,使用以下命令安装 azblob 模块:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

若要使用 Microsoft Entra ID 进行身份验证(建议),请使用以下命令安装 azidentity 模块:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

然后,打开代码文件并添加必要的 import 路径。 在此示例中,我们将以下内容添加到 .go 文件:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)

Blob 客户端模块信息:

  • azblob:包含可用于对服务、容器和 Blob 执行操作的方法。

授予访问权限并连接到 Blob 存储

若要将应用程序连接到 Blob 存储,请使用 azblob.NewClient 创建客户端对象。 此对象是在存储帐户级别与数据资源交互的起点。 可以将其用于对存储账户及其容器执行操作。

若要详细了解如何创建和管理客户端对象(包括最佳做法),请参阅创建和管理与数据资源交互的客户端对象

你可以使用 Microsoft Entra 授权令牌(推荐使用)、帐户访问密钥或共享访问签名 (SAS) 来为客户端对象授权。

若要通过 Microsoft Entra ID 授权,需要使用安全主体。 以下文章提供了有关不同身份验证方案的指导:

使用 DefaultAzureCredential 授权访问

要授予访问权限并连接到 Blob 存储,一种简单且安全的方法是通过创建 DefaultAzureCredential 实例来获取 OAuth 令牌。 然后,你可以使用 azblob.NewClient 使用该凭据创建客户端对象。

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
}

生成应用程序

在生成应用程序以使用 Azure Blob 存储中的数据资源时,代码主要与三种资源类型进行交互:存储帐户、容器和 Blob。 若要详细了解这些资源类型、它们彼此之间的关系以及应用如何与资源交互,请参阅了解应用如何与 Blob 存储数据资源交互

以下指南演示如何使用适用于 Go 的 Azure Blob 存储客户端模块来处理数据资源并执行特定操作:

指南 说明
创建容器 创建容器。
删除和还原容器 删除容器;如果启用了软删除,则还原已删除的容器。
列出容器 列出帐户中的容器以及可用于自定义列表的各个选项。
管理属性和元数据(容器) 管理容器属性和元数据。
上传 Blob 了解如何使用字符串、流、文件路径和其他方法上传 Blob。
下载 blob 使用字符串、流和文件路径下载 Blob。
列出 Blob 以不同的方式列出 Blob。
删除和还原 blob 删除 Blob;如果启用了软删除,则还原已删除的 Blob。
使用标记查找 Blob 设置和检索标记,以及使用标记来查找 Blob。
管理属性和元数据 (Blob) 管理容器属性和元数据。

注意

本指南中的代码示例旨在帮助你开始使用 Azure Blob 存储和 Go。 你应该修改错误处理和 Context 值以满足应用程序的需求。