使用 SDK 和工具连接到 Azurite

可以从 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 存储资源交互,可以实例化或BlobContainerClientBlobServiceClient实例化 BlobClientBlob 存储资源。

以下示例演示如何使用三种不同的授权机制授权 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:

  1. 选择“ 管理帐户 ”图标
  2. 选择 “添加帐户”
  3. 选择“附加到本地模拟器”
  4. 选择“下一步”
  5. 将 “显示名称 ”字段编辑为所选名称
  6. 再次选择 “下一步 ”
  7. 选择 “连接”

使用 HTTPS 连接到 Azurite

默认情况下,存储资源管理器不会打开使用自签名证书的 HTTPS 终结点。 如果使用 HTTPS 运行 Azurite,则可能使用的是自签名证书。 在存储资源管理器中,通过 “编辑 ->SSL 证书 ->导入证书 ”对话框导入 SSL 证书。

将证书导入存储资源管理器

  1. 在本地计算机上查找证书。
  2. 在存储资源管理器中,转到 “编辑 ->SSL 证书 ”->导入证书 并导入证书。

如果未导入证书,则会收到错误:

unable to verify the first certificate 或 self signed certificate in chain

通过 HTTPS 连接字符串添加 Azurite

按照以下步骤将 Azurite HTTPS 添加到存储资源管理器:

  1. 选择 切换资源管理器
  2. 选择 “本地”和“附加”
  3. 右键单击 存储帐户 ,然后选择“ 连接到 Azure 存储”。
  4. 选择“使用连接字符串”
  5. 选择“下一步”。
  6. 在 “显示名称 ”字段中输入一个值。
  7. 输入本文档上一部分中的 HTTPS 连接字符串
  8. 选择“下一步”
  9. 选择 “连接”

后续步骤