Azurite 开源模拟器提供了一个免费的本地环境,用于测试基于云的应用程序。 如果对应用程序在本地工作方式感到满意,请切换到在云中使用 Azure 存储帐户。
Azurite 是一种以 JavaScript 编写的轻型存储模拟器,在模拟 Azure 存储服务进行本地开发的 Node.js 上运行。 它支持 Blob、队列和表存储服务,并在 Windows、Linux 和 macOS 上提供跨平台支持。 有关安装和运行 Azurite 的帮助,请参阅 安装和运行 Azurite 模拟器。
Azurite 还允许开发人员针对本地存储环境运行测试,模拟 Azure 的行为,这对集成和端到端测试至关重要。 若要详细了解如何使用 Azurite 进行自动测试,请参阅 使用 Azurite 运行自动测试。
Azurite 取代 了 Azure 存储模拟器,并继续更新以支持最新版本的 Azure 存储 API。
Azurite 与 Azure 存储之间的差异
Azurite 的本地实例与云中的 Azure 存储帐户之间存在功能差异。
重要
Azurite 仅支持 Blob、队列和表存储服务。 它不支持 Azure 文件存储或 Azure Data Lake Storage Gen2,但在 Windows、Linux 和 macOS 上提供跨平台支持。
终结点和连接 URL
Azurite 的服务终结点不同于 Azure 存储帐户的终结点。 本地计算机不执行域名解析,要求 Azurite 终结点是本地地址。
在 Azure 存储帐户中处理资源时,帐户名称是 URI 主机名的一部分。 要寻址的资源是 URI 路径的一部分:
<http|https>://<account-name>.<service-name>.core.chinacloudapi.cn/<resource-path>
以下 URI 是 Azure 存储帐户中 Blob 的有效地址:
https://myaccount.blob.core.chinacloudapi.cn/mycontainer/myblob.txt
IP 样式 URL
由于本地计算机不解析域名,因此帐户名称是 URI 路径的一部分,而不是主机名。 对 Azurite 中的资源使用以下 URI 格式:
http://<local-machine-address>:<port>/<account-name>/<resource-path>
以下地址可用于访问 Azurite 中的 Blob:
http://127.0.0.1:10000/myaccount/mycontainer/myblob.txt
生产样式 URL
(可选)可以修改主机文件,以访问具有 生产样式 URL 的帐户。
首先,向主机文件添加一行或多行。 例如:
127.0.0.1 account1.blob.localhost
127.0.0.1 account1.queue.localhost
127.0.0.1 account1.table.localhost
接下来,设置环境变量以启用自定义存储帐户和密钥:
set AZURITE_ACCOUNTS="account1:key1:key2"
可以添加更多帐户。 请参阅“连接到 Azurite”一文的“自定义存储帐户和密钥”部分。
启动 Azurite 并使用自定义连接字符串访问帐户。 在以下示例中,连接字符串假定使用默认端口。
DefaultEndpointsProtocol=http;AccountName=account1;AccountKey=key1;BlobEndpoint=http://account1.blob.localhost:10000;QueueEndpoint=http://account1.queue.localhost:10001;TableEndpoint=http://account1.table.localhost:10002;
不要以这种方式使用 Azure 存储资源管理器访问默认帐户。 存储资源管理器始终在 URL 路径中添加帐户名称,导致失败。
默认情况下,将 Azurite 与生产样式 URL 一起使用时,帐户名称应为完全限定域名中的主机名,例如 http://devstoreaccount1.blob.localhost:10000/container
。 若要在 URL 路径 http://foo.bar.com:10000/devstoreaccount1/container
中使用具有帐户名称的生产样式 URL,请确保在启动 Azurite 时使用 --disableProductStyleUrl
参数。
如果使用 host.docker.internal
请求 URI 主机(例如: http://host.docker.internal:10000/devstoreaccount1/container
),Azurite 将从请求 URI 路径获取帐户名称。 无论在启动 Azurite 时是否使用 --disableProductStyleUrl
参数,此行为都是真实的。
可扩展性和性能
Azurite 不支持大量连接的客户端。 无法保证性能。 Azurite 用于开发和测试目的。
错误处理
Azurite 与 Azure 存储错误处理逻辑保持一致,但存在差异。 例如,错误消息可能有所不同,而错误状态代码则保持一致。
RA-GRS
Azurite 支持读取访问异地冗余复制(RA-GRS)。 对于存储资源,通过追加 -secondary
到帐户名称来访问辅助位置。 例如,以下地址可用于使用 Azurite 中的只读辅助数据库访问 Blob:
http://127.0.0.1:10000/devstoreaccount1-secondary/mycontainer/myblob.txt
表支持
对 Azurite 中的表的支持目前为预览版。 有关详细信息,请参阅 Azurite V3 表 项目。
对持久函数的支持需要表。
重要
对表存储的 Azurite 支持目前为 预览版。
Azurite 是开源的
欢迎对阿祖利的贡献和建议。 转到 Azurite GitHub 项目 页或 GitHub 问题 ,获取要跟踪的里程碑和工作项,以获取即将推出的功能和 bug 修复。 GitHub 中还会跟踪详细的工作项。
工作区结构
初始化 Azurite 时,可能会在工作区位置创建以下文件和文件夹。
-
__blobstorage__
- 包含 Azurite blob 服务持久化二进制数据的目录 -
__queuestorage__
- 包含 Azurite 队列服务持久化二进制数据的目录 -
__tablestorage__
- 包含 Azurite 表服务持久化二进制数据的目录 -
__azurite_db_blob__.json
- Azurite Blob 服务元数据文件 -
__azurite_db_blob_extent__.json
- Azurite Blob 服务盘区元数据文件 -
__azurite_db_queue__.json
- Azurite 队列服务元数据文件 -
__azurite_db_queue_extent__.json
- Azurite 队列服务范围元数据文件 -
__azurite_db_table__.json
- Azurite 表服务元数据文件 -
__azurite_db_table_extent__.json
- Azurite 表服务盘区元数据文件
若要清理 Azurite,请删除文件和文件夹并重启模拟器。
后续步骤
- 安装和运行 Azurite 模拟器 介绍如何在本地计算机上安装和运行 Azurite。
- 使用 SDK 和工具连接到 Azurite 介绍了如何使用各种 Azure 存储 SDK 和工具连接到 Azurite。
- 使用 Azure 存储模拟器开发和测试 文档,旧版 Azure 存储模拟器被 Azurite 取代。