ある時点で、安価で効率的なファイルの保存ソリューションが必要になるかもしれませんが、そのようなソリューションはどこで見つけることができるのでしょうか? Microsoft Azureのバイナリ ラージ オブジェクト (blob) ストレージを調べてみてください! Blob ストレージは、Azure ストレージ サービスの1つであり、大量のテキストおよびバイナリ データ ファイル、ストリーミング コンテンツ、または配布用の静的コンテンツを保存することができます。
このチュートリアルでは、一般的な例を通じて Azure の Blob ストレージの使用方法について学びます。
続けて読んで、始めましょう!
前提条件
このチュートリアルは、実際のデモンストレーション形式で行われます。一緒に進める場合、以下のものがインストールされているか利用可能であることを確認してください。
- PowerShell 7がインストールされていること。
- Az PowerShell モジュールが PowerShell 7 環境にインストールされていること。
- AzCopy 実行ファイルがダウンロードされ、アクセス可能であること。
- Azure サブスクリプション – 特定の Azure リソースをほとんどまたはまったくコストをかけずに使用する方法が複数あります。
Azure環境の構築
ファイルを保存するためにblobストレージを使用する前に、まずPowerShell Coreモジュールをインポートし、Azureサブスクリプションに接続し、Azure環境を構築する必要があります。
1. PowerShell 7を起動し、以下のコマンドを実行して、blobストレージにファイルを保存するために使用するモジュールをインポートします。

2. 次に、Azure Active Directory (AD) テナントにログインし、以下のコマンドを実行して、ウェブブラウザでの対話型認証を完了します。
このチュートリアルの範囲を超えて、他の認証方法もあります。たとえば、サービス プリンシパルを使用する方法や、アクセストークンを使用する方法などがあります。

ログイン後に表示されるテナントとサブスクリプションが意図したものであることを常に確認してください。必要に応じて、コンテキストを変更することができます。
3. 次のコマンドを実行して、demo
という名前の新しいリソース グループを作成し、5桁のランダムな数字が追加されます(Get-Random -Maximum 99999
)。リソース グループは階層的にサブスクリプションの下にあり、より細かい管理が可能なリソースを含んでいます。
この例では、リソース グループの-Location
はCentral US
に設定されています。コマンドが完了すると、結果は$resourceGroup
変数に格納されます。

以下のコマンドを実行して、次のタスクを実行し、新しいAzureストレージアカウントを作成します。この例では、ストレージアカウントの名前は”storage”であり、5つのランダムな数字(Get-Random -Maximum 99999
)が追加されます。コマンドが完了した後、$storageAccount
変数に返されたオブジェクトが保存されます。

以下のコマンドを実行して、Azure ADロールの割り当てに対していくつかのタスクを実行します。
-SignInName
の値は、Get-AzAccessToken
コマンドレットによって返されるUserID
プロパティを介して現在ログインしているアカウントを使用します。-RoleDefinitionName
の値は、割り当てる組み込みの Storage Blob Data Contributor ロールです。-Scope
の値は、作成したストレージアカウント(以下に示す storage10029)のロール割り当てのスコープを設定します。これは$storageAccount
変数のId
プロパティです。
必要に応じて、個々のコンテナに対してより詳細なロール割り当てを行うこともできます。

6. 最後に、以下のコマンドを実行して、ローカルシステムに temp.dat という名前のファイルを作成します。これは後のセクションでブロブストレージの動作を示すため、ストレージアカウントにファイルをアップロードおよびダウンロードします。

PowerShell を使用したファイルのアップロード
Azure環境を構築し、サンプルファイルを作成したら、ファイルをBlobストレージにアップロードしましょう。Blobストレージは、標準のファイルシステムとは異なる方法で動作します。Blobストレージ内の各ファイルはオブジェクトとして扱われ、コンテナ内に保管されます。
Blobsの主な機能は他のファイルシステムと似ていますが、どちらがより適したケースもあります。Blobsは仮想ファイルシステム(例:BlobFuse)のバックエンドにもなることがあります。
Microsoftは、PowerShell、AzCopy、およびAzure Portalを介してストレージアカウントにファイルをアップロードするための複数の方法を提供しています。しかし、まずはPowerShellを使用してサンプルファイル(temp.dat)をBlobストレージにアップロードしましょう。PowerShellを使用すると、Azureストレージアカウントとの作業を一貫した体験で行うことができます。
このデモを実行するためには、必要なアクションによってコストが発生します。使用しなくなったリソースは削除し、消費量を監視してください。
以下のコマンドを実行して新しいコンテナを作成し、temp.datファイル($file
)をオブジェクトとしてアップロードします。この例ではコンテナの名前をdemoとしていますが、好みに応じて異なる名前を付けることができます。

AzCopyを使用したファイルのアップロード
おそらく、より複雑なユースケース(例:コンテンツの同期、異なるアカウント間のコンテンツのコピーなど)があるかもしれません。その場合は、AzCopyコマンドラインツールが必要です。
以下のコマンドを実行して、Azureテナントにログインし、ローカルファイル($file
)をコンテナのURLエンドポイントにコピーします。AzCopyはPowerShellで使用している資格情報を認識していないため、Azureテナントにログインする必要があります。

アップロードする代わりに、AzCopyを使用してファイルをダウンロードすることもできます。その場合、以下のコマンドを実行して指定したファイル(temp.dat)をコンテナから現在のローカルディレクトリに
copy
します:& .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat
Azureポータルを介したファイルのアップロード
ファイルをアップロードするためのGUIメソッドをお好みの場合、Azure Storage Explorerが便利です。Azure Storage Explorerは、Blobストレージを管理するための最高のグラフィカルメソッドの一つです。Azureポータルのストレージアカウントリソースからストレージエクスプローラにアクセスできます。
1. 好きなウェブブラウザを開き、Azureポータルのストレージエクスプローラに移動します。
2. BLOB CONTAINERSの下にあるdemoコンテナをクリックし、次にアップロードをクリックしてブロブのアップロードブレード(右パネル)にアクセスします。
3. 次に、ブロブのアップロードパネルのフォルダアイコンをクリックして、アップロードするファイル(temp.dat)を選択します。
4. 最後に、ファイルをアップロードするためのアップロード(青いボタン)をクリックします。

アップロードが完了すると、アップロード blobブレードを閉じて、以下の画像のようにアップロードされた blob を確認できます。

Azure Portalを介してファイルをダウンロードする
Blob ストレージへのコンテンツのアップロードと同様に、Azure はさまざまな方法でコンテンツのダウンロードをサポートしています。ただし、Azure Portalを介して(temp.dat)ファイルをアップロードしたばかりなので、Azure Storage Explorerを使用して同じファイルをダウンロードしましょう。
Azure Storage Explorerでダウンロードするファイル(temp.dat)を選択し、次に示すようにダウンロードボタンをクリックします。これにより、次のステップで確認ダイアログボックスが開きます。

次に、選択したファイルをダウンロードするためのダウンロードの開始はこちらをクリックボタンをクリックします。

PowerShellを使用したファイルのダウンロード
ファイルのアップロードと同様に、PowerShellを実行してブロブストレージからファイルをダウンロードするオプションもあります。PowerShellを使用すると、コンテナ内のオブジェクトをリストし、それらをダウンロードすることができます。
以下のコマンドを実行して、コンテナ内のすべてのオブジェクトをリストし、temp.datをローカルディレクトリにダウンロードします。

ファイルのダウンロードに一時的な一意のリンクを使用する場合、共有アクセス署名(SAS)トークンを使用して事前認証されたダウンロードリンクを作成できます。これらのトークンは一意でプライベートな認証トークンであり、アクセスを確認するために使用できます。
以下のコマンドを実行して、ダウンロードしたいファイル(temp.dat
)の新しいダウンロードリンクを作成します。生成されたダウンロードリンクは10秒後に期限切れになり、そのリンクを使用してコンテンツをダウンロード(Invoke-WebRequest $uri
)し、$temp
変数に保存します。

ブロブストレージからパブリックインターネット上でウェブページをホストする
これまで、認証されたユーザーによるファイルのダウンロードの使用例を見てきました。しかし、ブロブストレージはパブリックコンテンツの優れたオプションを提供できることをご存知でしょうか?例えば、このデモでは、ウェブページのコンテンツをホストするためにブロブを使用します。
ウェブページのコンテンツが移動中および静止中に暗号化されていても、パブリックアクセスが設定されている場合は誰でもそのコンテンツにアクセスできます。
異なるユースケースを設定しているため、パブリッククラウドの主な利点の1つであるスケーラビリティと弾力性を活用します。特定のユースケースに対して新しいストレージアカウントをプロビジョニングし、パブリックコンテナの使用リスクを制限できます。
1. 以下のコマンドを実行して、Azure環境の「Azure環境の構築」セクションのステップ4と同じように新しいストレージアカウントを作成します。ただし、今回は返されたオブジェクトを$publicStorageAccount
変数に渡します。

これで、パブリックコンテンツ用の専用のストレージアカウントが作成されました。次のコマンドを使用して、静的なウェブコンテンツをホストするためにこのストレージアカウントを構成できます。
2. 次に、Enable-AzStorageStaticWebsite
コマンドレットを実行して、新しいユースケースのためのストレージアカウント($publicStorageAccount
)を構成します。 -IndexDocument
はユーザーに表示するデフォルトのウェブページを設定します。 -Context
は、さきほど作成した新しいストレージアカウントになります。

3. 以下のコマンドを実行して、現在のディレクトリに新しいHTMLドキュメントを作成し、ウェブコンテンツのホスティング用のコンテナにそのドキュメントをアップロードします。コンテンツタイプはHTML(ContentType="text/html"
)に設定されているため、ウェブブラウザがドキュメントを適切に解釈できます。
ウェブブラウザでドキュメントにアクセスすると、Hello from <storage account name> のメッセージが表示されます。

4. 以下のコマンドを実行して、ユーザーがコンテンツにアクセスできるURLを取得します。

5. 最後に、URLをブラウザで開くと、以下のスクリーンショットに似たものが表示されます。

リソースのクリーンアップ
blobストレージの新しいコンセプトをテストしたので、リソースをクリーンアップする必要があります。なぜなら、それによってサブスクリプションを清潔に保つことができるからです。さらに重要なことは、追加の料金が発生しなくなります。
このチュートリアルで使用したすべてのリソースが単一のリソースグループにあるため、リソースグループを削除することですべてのリソースをクリーンアップできます。
リソースは常に単一のリソースグループ内に含まれるわけではありませんが、特に頻繁にテストや反復を行う場合には、論理的なセグメントの自由な使用が有益であることが示されます。
以下のコードを実行して、リソースグループとその内部のすべてのリソースを削除するために、$resourceGroup
変数の ResourceGroupName
プロパティを指定して、Remove-AzResourceGroup
コマンドレットを実行します。

結論
このチュートリアルでは、さまざまなプラットフォームでクラウドストレージのブロブにファイルをアップロードおよびダウンロードする方法について触れました。また、ブロブストレージからウェブページをホストし、ユーザーが公開でアクセスできることも学びました。
blobストレージや他のストレージタイプを使用すると、さまざまなことができます。これらの概念を活用する方法は、ファイルストレージアカウントを使用したり、サーバーレスのファイルシステムを提供したり、Azure仮想マシンでの仮想ハードディスクとしてページBlobを使用したりすることです。