我水也

われみずなり

Azurite( Azure Storage Emulator )を使う

Azure Storageを使うタイミングがあり、パイプラインでテストするときのためにエミュレーターないかな?と探していたらあったので、自分が試したことを備忘録で残す。

docs.microsoft.com

2020.07.08時点でPreviewなので、正確な情報については、ドキュメントを見てください。
ただ、以下のように今後メインのエミュレーターになるみたいなので、こっちを使っていった方が良さげ

Azurite is the future storage emulator platform. Azurite supersedes the Azure Storage Emulator. Azurite will continue to be updated to support the latest versions of Azure Storage APIs.

(追記)
Azurite自体は前からあったけど、V3が新しくなってプレビューってことなのかな。V2ならTableまで使えるらしいです。

Githubリポジトリはこちら

github.com

簡単な概略

  • Azure Storage APIと互換性のあるサーバー(エミュレーター
    • TypeScript製
    • BlobとQueueが使える
    • 利用方法は4つ
      • VSCode Extension
      • npm
      • docker
      • manual

公式Dockerイメージの利用方法

docker-composeで使う場合

  • Azurite用のコンテナ設定を追加する
  • 他のコンテナから http://azurite:10000/devstoreaccount1 で接続出来るようになる
  • テストする際に、次で説明するクレデンシャルとカスタムエンドポイントを設定してあげればOK
  • ホスト側からも http://localhost:10000/devstoreaccount1 で接続出来ます
  azurite:
    image: mcr.microsoft.com/azure-storage/azurite:latest
    restart: always
    ports:
      - 10000:10000
    command: azurite-blob --blobHost 0.0.0.0 --blobPort 10000

ストレージアカウントとストレージアカウントキーについて

  • デフォルトで、以下のアカウントが有効になる
    • Account name: devstoreaccount1
    • Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
  • 自分で設定したい場合は、環境変数に設定することで変更可能
    • AZURITE_ACCOUNTS="account1:key1[:key2];account2:key1[:key2];..."
    • 1分毎に環境変数を読み込み直すので、動的に追加も可能
    • 設定するとデフォルトのアカウントは使えなくなる

Azure Storage Explorerで確認する

  • みなさんご存知、Azureポータルに行かなくても、ストレージの中身を確認したり触ったり出来る
  • Local & Attached の中に Emulator というのがあり、そこから中身が確認できる
  • 普通に通常のBlobストレージと同じように使えます

まだどこまでの機能が使えるか全部試していないですが、ひとまずアップロードしたりダウンロードしたりのテストでは問題なかったです。