可以从 Azure 存储 SDK 或 Azure 存储资源管理器等工具连接到 Azurite。 需要身份验证,Azurite 支持使用 OAuth、共享密钥和共享访问签名(SAS)进行授权。 Azurite 还支持匿名访问公共容器。
本文介绍如何使用 Azure 存储 SDK 和工具连接到 Azurite 模拟器。 有关如何安装和运行 Azurite 的信息,请参阅 安装和运行 Azurite。若要详细了解如何将 Azurite 与 Azure SDK 配合使用,请参阅 Azure SDK。
将应用程序或工具连接到 Azurite
若要将应用程序或工具连接到 Azurite,可以使用以下方法:
使用已知的存储帐户和密钥
Azurite 接受旧版 Azure 存储模拟器使用的同一已知帐户和密钥。
- 帐户名称:
devstoreaccount1
- 帐户密钥:
Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
使用自定义存储帐户和密钥
Azurite 通过以下方式设置AZURITE_ACCOUNTS
环境变量,支持自定义存储帐户名称和密钥: account1:key1[:key2];account2:key1[:key2];...
例如,使用具有一个密钥的自定义存储帐户:
set AZURITE_ACCOUNTS="account1:key1"
export AZURITE_ACCOUNTS="account1:key1"
注释
帐户密钥必须是 base64 编码的字符串。
或使用具有两个密钥的多个存储帐户:
set AZURITE_ACCOUNTS="account1:key1:key2;account2:key1:key2"
export AZURITE_ACCOUNTS="account1:key1:key2;account2:key1:key2"
默认情况下,Azurite 会每隔一分钟刷新环境变量中的自定义帐户名称和密钥。 使用此功能,可以动态轮换帐户密钥,或添加新的存储帐户,而无需重启 Azurite。
注释
设置自定义存储帐户时,将禁用默认 devstoreaccount1
存储帐户。 如果要在启用自定义存储帐户后继续使用 devstoreaccount1
,需要将其添加到环境变量中的 AZURITE_ACCOUNTS
自定义帐户和密钥列表。
帐户密钥必须是 base64 编码的字符串。
使用连接字符串
从应用程序连接到 Azurite 的最简单方法是在应用程序的配置文件中配置连接字符串,以引用快捷方式 UseDevelopmentStorage=true。 下面是 app.config 文件中连接字符串的示例:
<appSettings>
<add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>
HTTP 连接字符串
可以将以下连接字符串传递给 Azure SDK 或工具,例如 Azure CLI 2.0 或存储资源管理器。
完整的连接字符串为:
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
若要连接到特定服务,可以使用以下连接字符串:
若要仅连接到 Blob 存储,连接字符串为:
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
HTTPS 连接字符串
完整的 HTTPS 连接字符串为:
DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=https://127.0.0.1:10001/devstoreaccount1;TableEndpoint=https://127.0.0.1:10002/devstoreaccount1;
若要连接到特定服务,可以使用以下连接字符串:
若要仅使用 Blob 服务,HTTPS 连接字符串为:
DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:10000/devstoreaccount1;
如果用于 dotnet dev-certs
生成自签名证书,请使用以下连接字符串。
DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://localhost:10000/devstoreaccount1;QueueEndpoint=https://localhost:10001/devstoreaccount1;TableEndpoint=https://localhost:10002/devstoreaccount1;
使用 自定义存储帐户和密钥时更新连接字符串。
有关详细信息,请参阅 配置 Azure 存储连接字符串。
使用 Azure SDK 进行连接
若要使用 Azure SDK 连接到 Azurite,请执行以下步骤:
- 通过
--oauth
交换机为 Azurite 启用 OAuth 身份验证。 若要了解详细信息,请参阅 OAuth 配置。 - 通过
--cert
和--key
/--pwd
选项使用自签名证书启用 HTTPS。 若要详细了解如何生成证书,请参阅 证书配置(HTTPS) 和 HTTPS 设置。
证书到位后,使用以下命令行选项启动 Azurite:
azurite --oauth basic --cert cert-name.pem --key cert-name-key.pem
cert-name.pem
替换为certname-key.pem
证书和密钥文件的名称。 如果使用 PFX 证书,请使用选项 --pwd
而不是 --key
选项。
若要与 Blob 存储资源交互,可以实例化或BlobContainerClient
BlobServiceClient
实例化 BlobClient
Blob 存储资源。
以下示例演示如何使用三种不同的授权机制授权 BlobContainerClient
对象: DefaultAzureCredential、连接字符串和共享密钥。
DefaultAzureCredential
提供基于持有者令牌的身份验证机制,并使用用于身份验证的凭据类型链。 身份验证后,此凭据将 OAuth 令牌作为客户端实例化的一部分提供。 若要了解详细信息,请参阅 DefaultAzureCredential 类参考。
// With container URL and DefaultAzureCredential
var client = new BlobContainerClient(
new Uri("https://127.0.0.1:10000/devstoreaccount1/container-name"), new DefaultAzureCredential()
);
// With connection string
var client = new BlobContainerClient(
"DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:10000/devstoreaccount1;", "container-name"
);
// With account name and key
var client = new BlobContainerClient(
new Uri("https://127.0.0.1:10000/devstoreaccount1/container-name"),
new StorageSharedKeyCredential("devstoreaccount1", "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==")
);
连接 Azure 存储资源管理器
可以使用存储资源管理器通过 HTTP 或 HTTPS 协议查看 Azurite 中存储的数据。
使用 HTTP 连接到 Azurite
在存储资源管理器中,按照以下步骤连接到 Azurite:
- 选择“ 管理帐户 ”图标
- 选择 “添加帐户”
- 选择“附加到本地模拟器”
- 选择“下一步”
- 将 “显示名称 ”字段编辑为所选名称
- 再次选择 “下一步 ”
- 选择 “连接”
使用 HTTPS 连接到 Azurite
默认情况下,存储资源管理器不会打开使用自签名证书的 HTTPS 终结点。 如果使用 HTTPS 运行 Azurite,则可能使用的是自签名证书。 在存储资源管理器中,通过 “编辑 ->SSL 证书 ->导入证书 ”对话框导入 SSL 证书。
将证书导入存储资源管理器
- 在本地计算机上查找证书。
- 在存储资源管理器中,转到 “编辑 ->SSL 证书 ”->导入证书 并导入证书。
如果未导入证书,则会收到错误:
unable to verify the first certificate
或 self signed certificate in chain
通过 HTTPS 连接字符串添加 Azurite
按照以下步骤将 Azurite HTTPS 添加到存储资源管理器:
- 选择 切换资源管理器
- 选择 “本地”和“附加”
- 右键单击 存储帐户 ,然后选择“ 连接到 Azure 存储”。
- 选择“使用连接字符串”
- 选择“下一步”。
- 在 “显示名称 ”字段中输入一个值。
- 输入本文档上一部分中的 HTTPS 连接字符串
- 选择“下一步”
- 选择 “连接”
后续步骤
- 配置 Azure 存储连接字符串 说明如何组装有效的 Azure 存储连接字符串。
- 使用 Azurite 运行自动测试 介绍了如何使用 Azurite 存储模拟器编写自动测试。
- 使用 Azure 存储模拟器开发和测试 文档,旧版 Azure 存储模拟器被 Azurite 取代。