Compartir a través de

使用 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 certificateself signed certificate in chain

通过 HTTPS 连接字符串添加 Azurite

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

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

后续步骤