开始使用 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 值以满足应用程序的需求。