开始使用 Azure Blob 存储和 Go
本文介绍了如何使用适用于 Go 的 Azure Blob 存储客户端模块连接到 Azure Blob 存储。 连接后,使用开发人员指南来了解如何针对 Blob 存储服务的容器、blob 和功能运行代码。
若要从完整示例开始,请参阅快速入门:适用于 Go 的 Azure 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) | 管理容器属性和元数据。 |
管理属性和元数据(容器) | 管理容器属性和元数据。 |
上传 Blob | 了解如何使用字符串、流、文件路径和其他方法上传 Blob。 |
注意
本指南中的代码示例旨在帮助你开始使用 Azure Blob 存储和 Go。 你应该修改错误处理和 Context
值以满足应用程序的需求。