Azure Blob Storage 入门教程:快速了解 – wiki基地


Azure Blob Storage 入门教程:快速了解与实践

欢迎来到 Azure 云平台!如果你正在寻找一个强大、可扩展且成本效益高的存储解决方案来存放图片、视频、文档、备份文件或其他非结构化数据,那么 Azure Blob Storage 无疑是你需要了解的核心服务之一。本教程将带你深入了解 Azure Blob Storage 的世界,从基本概念到实际操作,帮助你快速入门。

1. 什么是 Azure Blob Storage?

Azure Blob Storage 是 Microsoft Azure 提供的一项对象存储服务,专门用于存储大量非结构化数据。非结构化数据是指那些不遵循特定模式或定义的数据,例如:

  • 图像、视频、音频文件
  • 文档和文本文件(PDF, Word, Excel等)
  • 备份文件和归档数据
  • 日志文件
  • 虚拟机镜像
  • 用于数据湖和大数据分析的数据

与传统的文件系统或数据库不同,对象存储以扁平的结构管理数据对象,每个对象都被赋予一个唯一的标识符(通常是一个 URL)。Blob Storage 针对存储和访问大规模数据进行了优化,提供了极高的可用性、耐用性和可伸缩性。

2. 为什么选择 Azure Blob Storage?

Azure Blob Storage 提供了诸多优势,使其成为各种场景下的理想选择:

  • 极高的可伸缩性: 它可以存储从几 GB 到 PB 级别乃至更多的数据,容量几乎是无限的。你可以根据需求存储任意数量的数据,无需担心底层基础设施的扩展问题。
  • 强大的耐用性和可用性: Azure Blob Storage 会在不同区域甚至不同数据中心之间自动复制你的数据,确保数据的安全性和高可用性。即使发生硬件故障或自然灾害,你的数据也能得到保护。根据你选择的冗余选项,数据耐用性可达 99.999999999%(11 个 9)甚至更高。
  • 成本效益: Blob Storage 提供了不同的访问层(Access Tiers),允许你根据数据的访问频率选择最合适的存储成本。不常访问的数据可以存储在更便宜的层中,从而降低总体存储成本。
  • 安全性: 数据在存储时会进行加密(Encryption at Rest),并且可以通过多种机制控制访问权限,例如 Azure Active Directory 集成、共享访问签名 (SAS) 和访问策略。数据在传输过程中也可以通过 HTTPS 进行加密。
  • 全球可访问性: 存储在 Blob Storage 中的数据可以通过标准的 HTTP/HTTPS 协议从世界任何地方访问,这使得它非常适合用于分发内容、托管网站静态资源等场景。
  • 丰富的生态系统: Azure Blob Storage 与 Azure 的其他服务(如 Azure CDN、Azure Data Lake Analytics、Azure Machine Learning、Azure Functions 等)无缝集成,方便构建复杂的云解决方案。同时,它也支持多种编程语言的 SDK 和工具。

3. Blob Storage 的核心概念

理解以下几个核心概念是使用 Azure Blob Storage 的基础:

3.1. 存储帐户 (Storage Account)

存储帐户是你在 Azure 中使用所有存储服务(包括 Blob、文件、队列和表)的顶级容器。它为你的 Azure 存储数据提供了一个唯一的命名空间。通过 Azure 门户、PowerShell 或 Azure CLI 创建存储资源时,你必须先拥有一个存储帐户。

一个存储帐户包含所有 Azure Storage 数据对象,包括:

  • Blob: 用于存储非结构化对象数据。
  • File: 用于存储共享文件,可以通过 SMB 协议进行访问(Azure Files)。
  • Queue: 用于存储大量消息队列。
  • Table: 用于存储结构化 NoSQL 数据。

本教程专注于 Blob Storage,但理解存储帐户是所有这些服务的统一入口非常重要。你的存储帐户名称必须是全局唯一的,它会作为你访问存储数据的 URL 的一部分(例如:https://<你的存储帐户名称>.blob.core.windows.net)。

创建存储帐户时,你需要配置几个关键设置:

  • 资源组 (Resource Group): 一个逻辑容器,用于管理和组织 Azure 资源。
  • 区域 (Region): 数据存储的地理位置。选择靠近用户或应用程序服务器的区域可以降低延迟。
  • 性能 (Performance): Standard(标准)或 Premium(高级)。标准存储帐户适用于大多数场景,提供了 Blob、文件、队列和表存储。高级存储帐户通常针对高性能场景,例如要求低延迟的应用程序,通常只支持 Premium Blob、Premium Files 或 Premium Page Blobs。对于 Blob Storage 入门,通常选择 Standard 即可。
  • 冗余 (Redundancy): 决定了数据复制的方式和程度,影响数据的耐用性和可用性以及成本。常见的选项包括:
    • LRS (Locally-Redundant Storage): 在单个数据中心内同步复制数据三次。成本最低,但无法抵御数据中心级别的故障。
    • GRS (Geo-Redundant Storage): 在主区域同步复制数据三次,并在数百英里之外的次区域异步复制三次。提供地域级别的容灾能力。
    • RA-GRS (Read-Access Geo-Redundant Storage): 在 GRS 的基础上,允许你从次区域读取数据(通常用于灾难恢复演练或提高读取可用性)。
    • 还有 ZRS, GZRS, RA-GZRS 等更高级的选项,提供区域内的区域冗余或跨区域的区域冗余。对于入门,LRS 或 GRS 是常见的选择。

3.2. 容器 (Container)

容器位于存储帐户之下。它是 Blob 的逻辑分组。你可以将容器视为文件系统中的文件夹,用于组织你的 Blob。一个存储帐户可以包含无限数量的容器,一个容器也可以包含无限数量的 Blob。

容器名称必须遵循特定的命名规则(小写字母、数字和连字符,开头和结尾不能是连字符,连续不能有两个连字符等)。

容器还有一个重要的属性:公共访问级别 (Public Access Level)。它决定了容器及其 Blob 是否可以匿名公共访问:

  • Private (私有): 这是默认设置,也是最安全的选项。只有通过存储帐户密钥、共享访问签名 (SAS) 或 Azure Active Directory 授权才能访问容器和 Blob。
  • Blob: 允许匿名公共读取容器中的 Blob,但无法列出容器中的 Blob(即不知道容器里有哪些文件)。适合用于公开图片、视频等资源,但又不希望暴露文件列表的场景。
  • Container: 允许匿名公共读取容器中的 Blob,并且允许匿名公共列出容器中的 Blob(即可以查看容器里的文件列表)。一般不推荐使用,除非你明确需要公开文件列表。

重要提示: 除非你明确需要公开访问你的数据,否则强烈建议将容器设置为 Private,并通过授权机制进行访问控制。

3.3. Blob

Blob 是存储在 Azure Blob Storage 中的实际数据对象。它是构成 Blob Storage 的基本单元。无论你上传的是图片、文档还是视频,它们在 Blob Storage 中都以 Blob 的形式存在。

Blob 可以根据其存储方式和用途分为几种类型:

  • 块 Blob (Block Blobs): 用于存储文本和二进制文件。它们由称为块的数据块组成,每个 Blob 最多可以包含 50,000 个块,每个块最大 4000 MiB,总大小可达 190.7 TiB。块 Blob 是最常见的 Blob 类型,适用于大多数存储对象,例如文档、媒体文件、备份等。
  • 追加 Blob (Append Blobs): 也由块组成,但专门针对追加操作进行了优化。当你向追加 Blob 添加数据时,数据只会添加到 Blob 的末尾。它通常用于日志文件、审计记录等场景,避免对现有数据进行修改。
  • 页 Blob (Page Blobs): 由 512 字节的页面组成,最大大小为 8 TiB。它们针对频繁的随机读写操作进行了优化,主要用于存储虚拟机硬盘 (VHD) 文件。高级存储帐户通常用于存储高性能的页 Blob。

对于初学者,你最常打交道的将是块 Blob

3.4. 访问层 (Access Tiers)

Azure Blob Storage 提供了三种访问层,用于平衡存储成本和数据访问成本:

  • 热层 (Hot Tier): 针对频繁访问的数据进行了优化。存储成本相对较高,但数据访问(读取和写入)成本最低。适合用于经常被读取或写入的数据,例如网站内容、流媒体数据、频繁访问的应用程序数据等。
  • 冷层 (Cool Tier): 针对不频繁访问的数据进行了优化(至少 30 天不访问)。存储成本低于热层,但数据访问成本较高。适合用于短期备份、灾难恢复数据集、较少访问的非关键数据等。冷层数据至少需要保留 30 天,提前删除或移动会产生费用。
  • 归档层 (Archive Tier): 这是成本最低的存储层,但数据访问成本最高且访问延迟最高(可能需要数小时才能检索数据)。它针对很少访问且可以容忍长时间检索延迟的数据进行了优化(至少 180 天不访问)。适合用于长期备份、合规性归档、历史数据等。归档层数据至少需要保留 180 天,提前删除或移动会产生费用。从归档层重新激活数据到热层或冷层需要额外的费用。

选择正确的访问层可以显著优化你的存储成本。你可以在 Blob 级别更改其访问层,也可以使用生命周期管理策略自动更改 Blob 的访问层。

4. 入门实践:在 Azure 门户中操作 Blob Storage

现在,让我们通过 Azure 门户来实际体验一下 Blob Storage 的基本操作:创建存储帐户、创建容器、上传 Blob、查看 Blob 和删除 Blob。

前提条件:

  • 一个有效的 Azure 帐户。如果你还没有,可以注册一个免费帐户或学生帐户。

步骤 1:登录 Azure 门户

打开浏览器,访问 https://portal.azure.com,使用你的 Azure 帐户凭据登录。

步骤 2:创建存储帐户

  1. 登录后,在顶部的搜索栏中输入 “Storage accounts” 并选择结果中的 Storage accounts
  2. 点击页面顶部的 + Create 按钮。
  3. 在 “Create storage account” 页面,填写以下信息:
    • Subscription (订阅): 选择你的 Azure 订阅。
    • Resource group (资源组): 选择一个现有的资源组,或者点击 “Create new” 创建一个新的资源组(例如:my-blob-resource-group)。资源组有助于管理相关资源。
    • Storage account name (存储帐户名称): 输入一个唯一的名称(例如:myblobaccount12345xyz)。这个名称必须是全局唯一的,由小写字母和数字组成,长度在 3 到 24 个字符之间。如果名称已被占用,你会收到提示。
    • Region (区域): 选择一个离你或你的目标用户较近的区域(例如:”(US) East US”)。
    • Performance (性能): 选择 Standard
    • Redundancy (冗余): 选择 LRS (Locally-redundant storage) 进行入门测试,成本较低。
  4. 可以跳过 “Advanced”、”Networking”、”Data protection”、”Encryption”、”Tags” 这些选项,使用默认设置即可入门。
  5. 点击底部的 Review + Create 按钮。
  6. 系统会验证你的配置。验证通过后,点击 Create
  7. 部署过程需要几分钟。部署完成后,你会看到 “Your deployment is complete” 的消息。点击 Go to resource 前往新创建的存储帐户页面。

步骤 3:创建容器

  1. 在你的存储帐户页面(你刚创建的那个),在左侧菜单的 “Data storage” 部分,点击 Containers
  2. 点击页面顶部的 + Container 按钮。
  3. 在 “New container” 弹出窗口中:
    • Name (名称): 输入容器的名称(例如:myfirstcontainer)。容器名称必须是小写字母、数字和连字符,不能以连字符开头或结尾,不能有两个连续的连字符。
    • Public access level (公共访问级别): 选择 Private (no anonymous access)。这是最安全的默认选项。
  4. 点击 Create
  5. 现在你应该在容器列表中看到你刚刚创建的容器。

步骤 4:上传 Blob

  1. 在容器列表页面,点击你刚刚创建的容器(例如:myfirstcontainer)的名称。
  2. 你将进入该容器的页面,当前应该是空的。点击页面顶部的 Upload 按钮。
  3. 在 “Upload blob” 弹出窗口中:
    • Files (文件): 点击文件夹图标或将文件拖放到此区域。选择一个你想要上传的小文件(例如一张图片或一个文本文件)。
    • Overwrite if files already exist (如果文件已存在则覆盖): 默认勾选。
    • Upload to folder (上传到文件夹): 你可以指定一个虚拟文件夹路径来组织 Blob(例如:images/)。Blob Storage 本身没有文件夹结构,但这提供了一种模拟层次结构的方式。这里我们先不填写,直接上传到根目录。
    • Blob type (Blob 类型): 默认是 Block blob,保持默认即可。
    • Access tier (访问层): 默认是 Hot,保持默认即可。
  4. 点击底部的 Upload
  5. 上传完成后,你会在容器页面看到你刚刚上传的文件作为一个 Blob 列出。

步骤 5:查看和访问 Blob

  1. 在容器页面,点击你刚刚上传的 Blob 的名称。
  2. 你将进入该 Blob 的概览页面。在这里你可以看到 Blob 的属性,包括:
    • URL: 这是访问该 Blob 的完整 URL。例如:https://myblobaccount12345xyz.blob.core.windows.net/myfirstcontainer/myuploadedfile.txt
    • Type (类型): Block blob。
    • Access tier (访问层): Hot。
    • Size (大小)。
    • Last modified (最后修改时间)。
  3. 如果你将容器设置为 Private,直接访问这个 URL 将会收到授权错误(例如 409 或 403)。要访问私人 Blob,你需要授权机制(如 SAS)。
  4. 下载 Blob: 在 Blob 概览页面,点击顶部的 Download 按钮,可以将文件下载到本地。

步骤 6:删除 Blob

  1. 返回到容器页面(点击面包屑导航中的容器名称)。
  2. 在 Blob 列表中,勾选你想要删除的 Blob 前面的复选框。
  3. 点击页面顶部的 Delete 按钮。
  4. 在确认删除的弹出窗口中,输入 yes 确认,然后点击 Delete
  5. Blob 将会被删除。

步骤 7:删除容器 (可选)

  1. 返回到存储帐户页面(点击面包屑导航中的存储帐户名称)。
  2. 在左侧菜单中点击 Containers
  3. 在容器列表中,勾选你想要删除的容器前面的复选框。
  4. 点击页面顶部的 Delete 按钮。
  5. 在确认删除的弹出窗口中,输入容器的名称进行确认,然后点击 Delete
  6. 容器将被删除。请注意,删除容器会同时删除容器内的所有 Blob,且不可恢复(除非启用了软删除功能,我们稍后会提到)。

步骤 8:删除存储帐户 (可选,清理资源)

  1. 返回到存储帐户页面。
  2. 点击页面顶部的 Delete 按钮。
  3. 在确认删除的弹出窗口中,输入存储帐户的名称进行确认,然后点击 Delete
  4. 删除存储帐户将删除该帐户下的所有数据(Blob、文件、队列、表)和所有相关配置。这是一个不可逆的操作(除非启用了容器软删除,但删除帐户本身是不可逆的)。删除存储帐户是清理本教程创建的所有资源的最佳方式,以避免产生不必要的费用。

通过以上步骤,你已经在 Azure 门户中完成了 Blob Storage 的基本创建、上传、查看和删除操作。

5. Blob Storage 的其他重要功能

除了上述基本操作,Azure Blob Storage 还提供了许多强大的功能:

5.1. 共享访问签名 (SAS – Shared Access Signature)

SAS 是一种授权访问存储帐户中资源(如 Blob、容器)的 URI。使用 SAS,你可以授权客户端对存储对象拥有特定权限(例如读取、写入、删除),并在指定的时间段内有效。这是一种精细控制访问的方式,而无需共享存储帐户密钥。SAS 是在不希望公开 Blob 但又需要临时或受限地授予访问权限时非常常用的机制。

SAS 可以分为几种类型:

  • 服务 SAS: 授予对存储帐户中特定服务(Blob、队列、表、文件)中的资源的访问权限。
  • 帐户 SAS: 授予对存储帐户中所有服务的资源的访问权限。权限范围更广。
  • 用户委托 SAS: 使用 Azure AD 凭据进行保护的 SAS。这是推荐的方式,提供了更高的安全性。

创建 SAS 时,你需要指定:

  • 允许的资源类型: 服务、容器、对象(Blob)。
  • 允许的权限: 读取、写入、删除、列表、添加、创建、更新、处理等。
  • 开始和结束时间: SAS 的有效期。
  • 允许的 IP 地址或 IP 范围: 限制只有来自指定 IP 的请求才能使用此 SAS。
  • 允许的协议: HTTPS 或 HTTP 和 HTTPS。强烈建议只允许 HTTPS。

示例场景: 你想让用户可以在你的网站上查看一个图片,但又不希望任何人都能随意访问你的存储帐户或列出所有文件。你可以为这张图片生成一个只读权限的 SAS,有效期设置几分钟或几小时,然后在你的网站上使用包含这个 SAS 的 URL 来加载图片。

5.2. 生命周期管理 (Lifecycle Management)

生命周期管理策略允许你定义规则,根据 Blob 的创建时间或上次修改时间自动将 Blob 在访问层之间移动(例如从热层移动到冷层,再移动到归档层),或者在特定时间后将其删除。这是一种自动化优化存储成本和管理数据保留策略的强大工具。

示例规则:

  • 创建 30 天后,将块 Blob 从热层移动到冷层。
  • 创建 180 天后,将块 Blob 从冷层移动到归档层。
  • 创建 365 天后,删除归档层的块 Blob。

5.3. 软删除 (Soft Delete)

Blob 软删除功能可以保护你的数据免受意外删除。启用软删除后,当你删除一个 Blob 或容器时,Blob 会被标记为已删除状态,但会保留指定的天数(可配置)。在此保留期内,你可以恢复已删除的 Blob 及其版本。软删除提高了数据的耐用性,但会产生额外的存储成本。对于重要的生产数据,强烈建议启用软删除。

5.4. 版本控制 (Versioning)

Blob 版本控制允许你在每次修改或删除 Blob 时自动维护其先前版本。这提供了一种额外的数据保护层,可以轻松回滚到旧版本。版本控制也会产生额外的存储成本。

5.5. 静态网站托管 (Static Website Hosting)

你可以将一个 Blob 容器配置为托管静态网站。只需指定默认文档(例如 index.html)和可选的错误文档,然后将你的静态网站文件上传到该容器。Azure Storage 会提供一个特定的终结点(URL),通过该终结点可以直接访问你的静态网站。这是一种快速、简单且成本效益高的方式来托管单页应用 (SPA) 或纯静态网站。

5.6. Azure CDN 集成

通过将 Blob Storage 与 Azure Content Delivery Network (CDN) 集成,你可以将 Blob 内容缓存在全球分布的 CDN 节点上。当用户请求内容时,请求会路由到离用户最近的 CDN 节点,从而显著降低延迟,加快内容加载速度,并减轻存储帐户的负载。这对于分发静态资源(图片、CSS、JS 文件)或流媒体内容非常有用。

5.7. 数据加密

Azure Blob Storage 提供了多层加密:

  • 静止加密 (Encryption at Rest): 数据在存储到磁盘时会自动加密。Azure Storage 使用服务管理的密钥进行默认加密,你也可以选择使用客户管理的密钥以获得更多控制。
  • 传输加密 (Encryption in Transit): 当数据在客户端和 Azure Storage 之间传输时,可以通过 HTTPS 协议进行加密,确保数据在网络中的安全。

5.8. Azure Active Directory 集成 (Azure AD)

你可以使用 Azure AD 通过基于角色的访问控制 (RBAC) 来授权对 Blob Storage 资源的访问。这允许你为特定的用户、组或服务主体分配精细的权限,例如只读、写入等,而无需使用存储帐户密钥或 SAS。这是企业环境中管理访问权限的首选方法,提供了更高的安全性和可管理性。

6. 如何以编程方式访问 Blob Storage?

除了 Azure 门户,你还可以通过多种方式以编程方式或使用工具与 Blob Storage 交互:

  • Azure Storage Explorer: 一个免费的独立 GUI 工具,适用于 Windows, macOS 和 Linux。它提供了一个图形界面来管理存储帐户中的 Blob、文件、队列和表,功能比 Azure 门户更丰富。对于日常管理和调试,这是一个非常有用的工具。
  • Azure CLI (Command-Line Interface): Azure 的命令行工具,可以用来执行各种 Azure 资源的命令,包括 Blob Storage。适合自动化和脚本化操作。例如,使用 az storage blob upload 命令上传文件。
  • Azure PowerShell: 适用于 Windows 用户的命令行工具,功能类似于 Azure CLI。
  • Azure Storage SDKs: Microsoft 为多种编程语言(如 .NET, Java, Python, Node.js, Go 等)提供了成熟的 SDK。你可以在自己的应用程序中使用这些 SDK 来上传、下载、管理 Blob,或者构建更复杂的存储解决方案。
  • REST API: 所有与 Azure Storage 的交互最终都是通过 REST API 完成的。如果你使用的语言没有官方 SDK,或者需要进行非常底层的控制,可以直接调用 REST API。

对于初学者,建议先熟悉 Azure 门户Azure Storage Explorer。一旦开始开发应用程序,就可以转向使用 SDKs

7. Blob Storage 的定价

Azure Blob Storage 的定价主要基于以下几个因素:

  • 存储容量: 根据你存储的数据量(以 GB 为单位)以及数据所在的访问层(热、冷、归档)计费。归档层存储成本最低,热层最高。
  • 数据操作: 对 Blob 进行的各种操作(读取、写入、删除、列出等)会产生费用。不同操作类型的费用不同,访问层也会影响操作成本(例如,归档层的读取操作成本很高)。
  • 数据传输:
    • 数据从 Azure 传输到互联网(出口流量)会产生费用。通常是按 GB 计费。前几个 GB 通常是免费的。
    • 数据在 Azure 区域之间传输(例如使用 GRS 进行复制)会产生费用。
    • 数据在同一个区域内不同服务之间传输通常是免费的。
  • 数据冗余选项: 不同冗余选项(LRS, GRS, RA-GRS 等)的成本不同。冗余级别越高,成本越高。
  • 提前删除/移动: 如果在冷层或归档层的数据未达到最低保留期限(冷层 30 天,归档层 180 天)就被删除或移动到其他层,会收取提前删除/移动费用。
  • 数据检索(从归档层): 从归档层检索数据到热层或冷层需要支付额外的数据检索费用。

要获取最准确和最新的定价信息,请务必查阅 Azure Blob Storage 定价页面 并使用 Azure 定价计算器 根据你的具体需求进行估算。

8. 总结与后续步骤

通过本教程,你应该对 Azure Blob Storage 有了全面的了解:

  • 它是 Azure 的对象存储服务,用于存储非结构化数据。
  • 它提供了极高的可伸缩性、耐用性和成本效益。
  • 核心概念包括存储帐户(命名空间)、容器(组织 Blob 的逻辑分组)和Blob(实际数据对象)。
  • 访问层(热、冷、归档)帮助优化成本。
  • 你可以通过 Azure 门户方便地进行创建、上传、查看和删除等基本操作。
  • SAS、生命周期管理、软删除、版本控制、静态网站托管、CDN 集成、加密和 Azure AD 集成是其强大的附加功能。
  • 可以通过 Storage Explorer、CLI、PowerShell、SDKs 和 REST API 进行编程访问。
  • 定价主要取决于存储容量、操作、数据传输和冗余选项。

后续步骤:

  1. 实践操作: 按照本教程的步骤在 Azure 门户中创建自己的存储帐户和容器,并尝试上传不同类型的文件。
  2. 探索 Storage Explorer: 下载并安装 Azure Storage Explorer,连接到你的存储帐户,尝试使用它来管理 Blob。
  3. 了解 SAS: 深入研究如何生成和使用共享访问签名,并在一个简单的应用程序中尝试使用 SAS 来访问 Blob。
  4. 学习 SDK: 选择一种你熟悉的编程语言,下载对应的 Azure Storage SDK,编写代码来实现 Blob 的上传和下载功能。
  5. 探索其他功能: 尝试启用 Blob 软删除,配置生命周期管理策略,或者尝试托管一个简单的静态网站。
  6. 阅读官方文档: Azure 文档是学习 Azure 服务的最佳资源。查阅 Azure Blob Storage 文档 以获取更详细的信息和高级主题。

Azure Blob Storage 是 Azure 云中非常基础且强大的服务,熟练掌握它将为你构建各种云应用程序奠定坚实的基础。祝你在 Azure 的学习之旅中取得成功!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部