ローカルでの Azure Storage の開発に Azurite エミュレーターを使用する

Azurite オープンソース エミュレーターには、Azure BLOB、キュー ストレージ、テーブル ストレージ アプリケーションをテストするための無料のローカル環境が用意されています。 ローカルでのアプリケーションの動作に満足できたら、クラウドでの Azure Storage アカウントの使用に切り替えることができます。 エミュレーターは、Windows、Linux、および macOS でのクロスプラットフォーム サポートを提供します。

Azurite は今後のストレージ エミュレーター プラットフォームです。 Azurite は Azure ストレージ エミュレーターよりも優先されます。 Azurite は、最新バージョンの Azure Storage API をサポートするために引き続き更新されます。

Azurite をローカル システムにインストールし、そのシステム上で実行する方法は複数あります。 これらのタブのいずれかを選択してください。

Azurite をインストールする

Azurite は Visual Studio 2022 で自動的に使用できるようになります。 以前のバージョンの Visual Studio を実行している場合は、Node パッケージ マネージャーの使用、DockerHub の使用、または Azurite GitHub リポジトリのクローンのいずれかの方法で Azurite をインストールする必要があります。

Azurite を実行する

いくつかの構成では、Azure Functions または ASP.NET プロジェクトで Azurite が自動的に開始されます。 他のすべての種類のプロジェクトでは、コマンド ラインから Azurite を開始する必要があります。

コマンド ラインからの Azurite の実行

Azurite 実行可能ファイルは、Visual Studio インストールの extensions フォルダーにあります。 特定の場所は、インストールされている Visual Studio のバージョンによって異なる場合があります。 たとえば、Windows コンピューターまたは仮想マシン (VM) に Visual Studio 2022 Professional エディションをインストールした場合、C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\Extensions\Microsoft\Azure Storage Emulator という場所に Azurite 実行可能ファイルがあります。

実行可能ファイルを実行すると、Azurite は接続をリッスンします。

Azurite command-line output

Azure Functions プロジェクトからの Azurite の実行

Visual Studio 2022 で、Azure Functions プロジェクトを作成します。 プロジェクトを作成したら、[ストレージ エミュレーター] を選択します。

Storage emulator option in Azure Functions project

プロジェクトを作成すると、Azurite が自動的に開始されます。

Azurite command-line output in Azure Functions project

ASP.NET プロジェクトからの Azurite の実行

Visual Studio 2022 で、ASP.NET Core Web アプリ プロジェクトを作成します。 [接続済みサービス] ダイアログ ボックスを開き、[サービス依存関係の追加] を選択し、[ストレージ Azurite エミュレーター] を選択します。

Connected services dialog box in ASP.NET Core Web App project

[Configure Storage Azurite emulator](ストレージ Azurite エミュレーターの構成) ダイアログ ボックスで、[接続文字列名] フィールドを StorageConnectionString に設定し、[完了] を選択します。

Configure Storage Azurite emulator dialog box

構成が完了したら、[閉じる] を選択します。 Azurite エミュレーターが自動的に起動します。

Azurite command-line output in ASP.NET project

コマンド ライン オプション

このセクションでは、Azurite を起動するときに使用できるコマンド ライン スイッチについて詳しく説明します。

Help

オプション - -h または --help スイッチを使用してコマンド ラインのヘルプを取得します。

azurite -h
azurite --help

BLOB リスニング ホスト

オプション - 既定では、Azurite はローカル サーバーとして 127.0.0.1 をリッスンします。 要件に合わせてアドレスを設定するには、--blobHost スイッチを使用します。

ローカル コンピューターの要求のみを受け入れる:

azurite --blobHost 127.0.0.1

リモート要求を許可する:

azurite --blobHost 0.0.0.0

注意事項

リモート要求を許可すると、システムが外部からの攻撃に対して脆弱になる可能性があります。

BLOB リスニング ポートの構成

オプション - 既定では、Azurite は Blob service をポート 10000 でリッスンします。 必要なリスニング ポートを指定するには、--blobPort スイッチを使用します。

Note

カスタマイズされたポートを使用した後、Azure Storage ツールまたは SDK で、接続文字列または対応する構成を更新する必要があります。

Blob service のリスニング ポートをカスタマイズする:

azurite --blobPort 8888

使用可能なポートをシステムに自動選択させる:

azurite --blobPort 0

使用中のポートは Azurite の起動時に表示されます。

キュー リスニング ホスト

オプション - 既定では、Azurite はローカル サーバーとして 127.0.0.1 をリッスンします。 要件に合わせてアドレスを設定するには、--queueHost スイッチを使用します。

ローカル コンピューターの要求のみを受け入れる:

azurite --queueHost 127.0.0.1

リモート要求を許可する:

azurite --queueHost 0.0.0.0

注意事項

リモート要求を許可すると、システムが外部からの攻撃に対して脆弱になる可能性があります。

キュー リスニング ポートの構成

オプション - 既定では、Azurite は Queue サービスをポート 10001 でリッスンします。 必要なリスニング ポートを指定するには、--queuePort スイッチを使用します。

Note

カスタマイズされたポートを使用した後、Azure Storage ツールまたは SDK で、接続文字列または対応する構成を更新する必要があります。

Queue サービスのリスニング ポートをカスタマイズします。

azurite --queuePort 8888

使用可能なポートをシステムに自動選択させる:

azurite --queuePort 0

使用中のポートは Azurite の起動時に表示されます。

テーブル リスニング ホスト

オプション - 既定では、Azurite はローカル サーバーとして 127.0.0.1 をリッスンします。 要件に合わせてアドレスを設定するには、--tableHost スイッチを使用します。

ローカル コンピューターの要求のみを受け入れる:

azurite --tableHost 127.0.0.1

リモート要求を許可する:

azurite --tableHost 0.0.0.0

注意事項

リモート要求を許可すると、システムが外部からの攻撃に対して脆弱になる可能性があります。

テーブル リスニング ポートの構成

オプション - 既定では、Azurite は Table service をポート 10002 でリッスンします。 必要なリスニング ポートを指定するには、--tablePort スイッチを使用します。

Note

カスタマイズされたポートを使用した後、Azure Storage ツールまたは SDK で、接続文字列または対応する構成を更新する必要があります。

Table service のリスニング ポートをカスタマイズします。

azurite --tablePort 11111

使用可能なポートをシステムに自動選択させる:

azurite --tablePort 0

使用中のポートは Azurite の起動時に表示されます。

ワークスペース パス

オプション - Azurite は、実行中にデータをローカル ディスクに格納します。 ワークスペースの場所としてパスを指定するには、-l または --location スイッチを使用します。 既定では、現在のプロセスの作業ディレクトリが使用されます。 小文字の "l" であることに注意してください。

azurite -l c:\azurite
azurite --location c:\azurite

アクセス ログ

オプション - 既定では、アクセス ログはコンソール ウィンドウに表示されます。 -s または --silent スイッチを使用すると、アクセス ログの表示が無効になります。

azurite -s
azurite --silent

デバッグ ログ

オプション - デバッグ ログにはすべての要求と例外スタック トレースに関する詳細情報が含まれます。 -d または --debug スイッチに有効なローカル ファイル パスを指定すると、デバッグ ログが有効になります。

azurite -d path/debug.log
azurite --debug path/debug.log

ルーズ モード

オプション - Azurite では、既定で、サポートされていない要求ヘッダーとパラメーターをブロックするために厳格モードが適用されます。 -L または --loose スイッチを使用すると、厳格モードが無効になります。 大文字の "L" であることに注意してください。

azurite -L
azurite --loose

Version

オプション - -v または --version スイッチを使用して、インストールされている Azurite のバージョン番号を表示します。

azurite -v
azurite --version

証明書の構成 (HTTPS)

オプション - 既定では、Azurite は HTTP プロトコルを使用します。 HTTPS モードを有効にするには、Privacy Enhanced Mail (.pem) または Personal Information Exchange (.pfx) 証明書ファイルへのパスを --cert スイッチに指定します。

PEM ファイルに --cert が指定されている場合、対応する --key スイッチを指定する必要があります。

azurite --cert path/server.pem --key path/key.pem

PFX ファイルに --cert が指定されている場合、対応する --pwd スイッチを指定する必要があります。

azurite --cert path/server.pfx --pwd pfxpassword

PEM および PFX ファイルの作成の詳細については、「HTTPS セットアップ」を参照してください。

OAuth 構成

オプション - --oauth スイッチを使用して、Azurite の OAuth 認証を有効にします。

azurite --oauth basic --cert path/server.pem --key path/key.pem

Note

OAuth には HTTPS エンドポイントが必須です。 --oauth スイッチと共に --cert スイッチを指定することで、HTTPS を確実に有効にしてください。

Azurite は、--oauth スイッチに basic パラメーターを指定することによって基本認証をサポートします。 Azurite は、受信ベアラー トークンの検証や、発行者、対象ユーザー、有効期限の確認などの基本認証を行います。 Azurite は、トークンの署名およびアクセス許可を確認しません。

API のバージョン チェックをスキップする

省略可能 -起動時に、Azurite では、要求された API バージョンが有効であることが確認されます。 次のコマンドを使用すると、API のバージョン チェックがスキップされます。

azurite --skipApiVersionCheck

ツールと SDK の認証

任意の認証方法を使用して、Azure Storage の SDK またはツール (Azure Storage Explorer など) から Azurite に接続します。 認証が必要です。 Azurite は、OAuth、共有キー、および Shared Access Signature (SAS) を使用した認証をサポートしています。 Azurite ではパブリック コンテナーへの匿名アクセスもサポートされています。

Azure SDK を使用している場合は、--oauth basic and --cert --key/--pwd オプションを使用して Azurite を開始します。

既知のストレージ アカウントとキー

Azurite は、従来の Azure ストレージ エミュレーターで使用されるものと同じ既知のアカウントとキーを受け入れます。

  • アカウント名: devstoreaccount1
  • アカウント キー: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

カスタム ストレージ アカウントとキー

Azurite では、AZURITE_ACCOUNTS 環境変数を次の形式で設定することにより、カスタム ストレージ アカウント名とキーがサポートされます: account1:key1[:key2];account2:key1[:key2];...

たとえば、1 つのキーを持つカスタム ストレージ アカウントを使用する場合は、次のように指定します。

set AZURITE_ACCOUNTS="account1:key1"
export AZURITE_ACCOUNTS="account1:key1"

それぞれ 2 つのキーを持つ複数のストレージ アカウントを使用する場合は、次のように指定します。

set AZURITE_ACCOUNTS="account1:key1:key2;account2:key1:key2"
export AZURITE_ACCOUNTS="account1:key1:key2;account2:key1:key2"

Azurite では、既定で、1 分ごとにカスタム アカウント名とキーが環境変数から更新されます。 この機能により、アカウント キーを動的にローテーションしたり、Azurite を再起動することなく新しいストレージ アカウントを追加したりできます。

Note

カスタム ストレージ アカウントを設定すると、既定の devstoreaccount1 ストレージ アカウントは無効になります。

Connection strings

アプリケーションから Azurite に接続する最も簡単な方法は、ショートカット UseDevelopmentStorage=true を参照するアプリケーションの構成ファイル内で接続文字列を構成することです。 たとえば、app.config ファイル内の接続文字列は次のようになります。

<appSettings>
  <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

HTTP 接続文字列

次の接続文字列は、Azure SDK またはツール (Azure CLI 2.0 や Storage Explorer など) に渡すことができます。

完全な接続文字列は次のとおりです。

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

Blob service にのみ接続する場合、接続文字列は次のようになります。

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;

Queue サービスにのみ接続する場合、接続文字列は次のようになります。

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;QueueEndpoint=http://127.0.0.1:10001/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;

Blob service のみを使用する場合、HTTPS 接続文字列は次のようになります。

DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:10000/devstoreaccount1;

Queue サービスのみを使用する場合、HTTPS 接続文字列は次のようになります。

DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;QueueEndpoint=https://127.0.0.1:10001/devstoreaccount1;

dotnet dev-certs を使用して自己署名証明書を生成した場合は、次の接続文字列を使用します。

DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://localhost:10000/devstoreaccount1;QueueEndpoint=https://localhost:10001/devstoreaccount1;

カスタム ストレージ アカウントとキーを使用する場合は、接続文字列を更新します。

詳細については、「Azure Storage の接続文字列を構成する」を参照してください。

Azure SDK

Azure SDK で Azurite を使用するには、 OAuth と HTTPS のオプションを使用します。

azurite --oauth basic --cert certname.pem --key certname-key.pem

Azure Blob Storage

続いて、BlobContainerClient、BlobServiceClient、または BlobClient をインスタンス化できます。

// 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;QueueEndpoint=https://127.0.0.1:10001/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 Queue Storage

QueueClient または QueueServiceClient をインスタンス化することもできます。

// With queue URL and DefaultAzureCredential
var client = new QueueClient(
    new Uri("https://127.0.0.1:10001/devstoreaccount1/queue-name"), new DefaultAzureCredential()
  );

// With connection string
var client = new QueueClient(
    "DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=https://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=https://127.0.0.1:10001/devstoreaccount1;", "queue-name"
  );

// With account name and key
var client = new QueueClient(
    new Uri("https://127.0.0.1:10001/devstoreaccount1/queue-name"),
    new StorageSharedKeyCredential("devstoreaccount1", "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==")
  );

Microsoft Azure Storage Explorer

Storage Explorer を使用すると、Azurite に格納されているデータを表示できます。

HTTP を使用して Azurite に接続する

Storage Explorer で、次の手順に従って Azurite に接続します。

  1. [アカウントの管理] アイコンを選択します
  2. [アカウントの追加] を選択します
  3. [ローカル エミュレーターにアタッチする] を選択します
  4. [次へ] を選択します
  5. [表示名] フィールドを編集して、任意の名前にします
  6. もう一度 [次へ] を選択します
  7. [接続] を選択します

HTTPS を使用して Azurite に接続する

既定では、Storage Explorer は、自己署名証明書を使用する HTTPS エンドポイントを開きません。 HTTPS で Azurite を実行している場合は、自己署名証明書を使用している可能性があります。 Storage Explorer で、[編集] ->[SSL 証明書] ->[証明書のインポート] ダイアログを使用して SSL 証明書をインポートします。

証明書を Storage Explorer にインポートする
  1. ローカル コンピューターで証明書を検索します。
  2. Storage Explorer で、[編集] ->[SSL 証明書] ->[証明書のインポート] の順に移動して、証明書をインポートします。

証明書をインポートしないと、次のエラーが表示されます。

unable to verify the first certificate または self signed certificate in chain

HTTPS 接続文字列を使用して Azurite を追加する

Storage Explorer に Azurite HTTPS を追加するには、次の手順に従います。

  1. [エクスプローラーの切り替え] を選択します
  2. [Local & Attached](ローカルで接続済み) を選択します
  3. [ストレージ アカウント] を右クリックし、 [Connect to Azure Storage](Azure Storage に接続する) を選択します
  4. [Use a connection string](接続文字列を使用する) を選択します
  5. [次へ] を選択します。
  6. [表示名] フィールドに値を入力します
  7. このドキュメントの前のセクションに示した HTTPS 接続文字列を入力します
  8. [次へ] を選択します
  9. [接続] を選択します

ワークスペースの構造

Azurite を初期化するときに、次のファイルとフォルダーがワークスペースの場所に作成されることがあります。

  • __blobstorage__ - Azurite Blob service の永続化されたバイナリ データを格納しているディレクトリ
  • __queuestorage__ - Azurite Queue サービスの永続化されたバイナリ データを格納しているディレクトリ
  • __azurite_db_blob__.json - Azurite Blob service のメタデータ ファイル
  • __azurite_db_blob_extent__.json - Azurite Blob service のエクステント メタデータ ファイル
  • __azurite_db_queue__.json - Azurite Queue サービスのメタデータ ファイル
  • __azurite_db_queue_extent__.json - Azurite Queue サービスのエクステント メタデータ ファイル

Azurite をクリーンアップするには、上記のファイルとフォルダーを削除し、エミュレーターを再起動します。

Azurite と Azure Storage の違い

Azurite のローカル インスタンスとクラウドの Azure Storage アカウントには機能上の違いがあります。

エンドポイントおよび接続 URL

Azurite のサービス エンドポイントは、Azure Storage アカウントのエンドポイントとは異なります。 ローカル コンピューターはドメイン名の解決を行わず、Azurite エンドポイントをローカル アドレスにする必要があります。

Azure Storage アカウントのリソースをアドレス指定する場合、アカウント名は URI ホスト名の一部になります。 アドレス指定されるリソースは、URI パスの一部です。

<http|https>://<account-name>.<service-name>.core.windows.net/<resource-path>

以下の URI は、Azure Storage アカウント内の BLOB の有効なアドレスです。

https://myaccount.blob.core.windows.net/mycontainer/myblob.txt

ローカル コンピューターがドメイン名の解決を実行しないため、アカウント名は、ホスト名ではなく URI パスの一部になります。 Azurite のリソースには、次の URI 形式を使用します。

http://<local-machine-address>:<port>/<account-name>/<resource-path>

Azurite の BLOB にアクセスするには次のアドレスを使用できます。

http://127.0.0.1:10000/myaccount/mycontainer/myblob.txt

スケーリングとパフォーマンス

Azurite は、多数の接続されたクライアントをサポートしていません。 パフォーマンスの保証はありません。 Azurite は開発とテストを目的としています。

エラー処理

Azurite は Azure Storage エラー処理ロジックに合わせて調整されていますが、違いがあります。 たとえば、エラー メッセージは異なる場合がありますが、エラー状態コードは調整されています。

RA-GRS

Azurite は、読み取りアクセス geo 冗長レプリケーション (RA-GRS) をサポートしています。 ストレージ リソースの場合、2 次拠点にアクセスするにはアカウント名に -secondary を付加します。 たとえば、Azurite で読み取り専用の 2 次拠点を使用して BLOB にアクセスするには、次のアドレスを使用します。

http://127.0.0.1:10000/devstoreaccount1-secondary/mycontainer/myblob.txt

テーブル サポート

Azurite 内でのテーブルのサポートは、現在プレビュー段階です。 詳細については、Azurite V3 Table プロジェクトをご覧ください。

持続的関数のサポートにはテーブルが必要です。

重要

Table Storage の Azurite サポーは、現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Azurite はオープンソースです

Azurite への参加や提案をお待ちしています。 近日公開される機能やバグ修正のために追跡しているマイルストーンと作業項目については、Azurite の GitHub プロジェクト ページまたは GitHub の課題を参照してください。 GitHub では詳細な作業項目も追跡されています。

次のステップ