Azure Files を使用してデータを格納する .NET アプリケーションを開発する方法について説明します。 Azure Files は、クラウド内のマネージド ファイル共有サービスです。 業界標準のサーバー メッセージ ブロック (SMB) プロトコルとネットワーク ファイル システム (NFS) プロトコルを介してアクセスできるフル マネージドのファイル共有を提供します。 Azure Files には、ファイル共有へのプログラムによるアクセスのための REST API も用意されています。
この記事では、.NET で Azure Files を使用して開発するためのさまざまな方法と、アプリのニーズに最も適したアプローチを選択する方法について説明します。 また、Azure Files リソースと対話する基本的なコンソール アプリを作成する方法についても説明します。
適用対象
管理モデル | 課金モデル | メディア レベル | 冗長性 | 中小企業 | ネットワークファイルシステム |
---|---|---|---|---|---|
Microsoft.Storage | プロビジョニング済み v2 | HDD (標準) | ローカル (LRS) |
![]() |
![]() |
Microsoft.Storage | プロビジョニング済み v2 | HDD (標準) | ゾーン (ZRS) |
![]() |
![]() |
Microsoft.Storage | プロビジョニング済み v2 | HDD (標準) | geo (GRS) |
![]() |
![]() |
Microsoft.Storage | プロビジョニング済み v2 | HDD (標準) | ジオゾーン (GZRS) |
![]() |
![]() |
Microsoft.Storage | プロビジョニング済み v1 | SSD (プレミアム) | ローカル (LRS) |
![]() |
![]() |
Microsoft.Storage | プロビジョニング済み v1 | SSD (プレミアム) | ゾーン (ZRS) |
![]() |
![]() |
Microsoft.Storage | 従量課金制 | HDD (標準) | ローカル (LRS) |
![]() |
![]() |
Microsoft.Storage | 従量課金制 | HDD (標準) | ゾーン (ZRS) |
![]() |
![]() |
Microsoft.Storage | 従量課金制 | HDD (標準) | geo (GRS) |
![]() |
![]() |
Microsoft.Storage | 従量課金制 | HDD (標準) | ジオゾーン (GZRS) |
![]() |
![]() |
Azure Files を使用した .NET アプリ開発について
Azure Files には、.NET 開発者が Azure Files のデータにアクセスしてリソースを管理するためのいくつかの方法が用意されています。 次の表に、アプローチの一覧を示し、その動作を要約し、各アプローチを使用するタイミングに関するガイダンスを示します。
方法 | しくみ | 使用する場合 |
---|---|---|
標準ファイル I/O ライブラリ | SMB または NFS を使用してマウントされた Azure ファイル共有を介して OS レベルの API 呼び出しを使用します。 SMB/NFS を使用してファイル共有をマウントする場合は、.NET 用の System.IO などのプログラミング言語またはフレームワークにファイル I/O ライブラリを使用できます。 |
標準ファイル I/O を使用する既存のコードを含む基幹業務アプリがあり、アプリが Azure ファイル共有で動作するようにコードを書き換える必要はありません。 |
FileREST API | HTTPS エンドポイントを直接呼び出して、Azure Files に格納されているデータと対話します。 ファイル共有リソースをプログラムで制御できます。 Azure SDK には、FileREST API 上に構築されたファイル共有クライアント ライブラリ (Azure.Storage.Files.Shares ) が用意されており、使い慣れた .NET プログラミング言語パラダイムを使用して FileREST API 操作を操作できます。 |
顧客向けに付加価値の高いクラウド サービスとアプリを構築しており、 System.IO では利用できない高度な機能を使用する必要があります。 |
ストレージ リソース プロバイダー REST API | Azure Resource Manager (ARM) を使用して、ストレージ アカウントとファイル共有を管理します。 さまざまなリソース管理操作のために REST API エンドポイントを呼び出します。 | アプリまたはサービスは、ストレージ アカウントやファイル共有の作成、削除、更新などのリソース管理タスクを実行する必要があります。 |
これらの方法の一般的な情報については、「 Azure Files を使用したアプリケーション開発の概要」を参照してください。
この記事では、次の方法を使用して Azure Files リソースを操作することに重点を置いています。
-
System.IO を使用して Azure Files を操作する: SMB または NFS を使用してファイル共有をマウントし、
System.IO
名前空間を使用して共有内のファイルとディレクトリを操作します。 - .NET 用のファイル共有クライアント ライブラリを使用して Azure Files を操作する: .NET 用の Azure Storage ファイル共有クライアント ライブラリを使用して、ファイル共有内のファイルとディレクトリを操作します。 このクライアント ライブラリは、FileREST API 上に構築されています。
- Azure Storage 管理ライブラリを使用して Azure Files リソースを管理する: Azure Storage 管理ライブラリを使用して、ストレージ アカウント内のファイル共有やその他のリソースを管理します。 管理ライブラリは、Azure Storage リソース プロバイダー REST API 上に構築されています。
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- Azure Storage アカウント - ストレージ アカウントを作成する
- オペレーティング システム用の最新 の .NET SDK (ランタイムではなく SDK を取得する)
環境を設定する
このセクションでは、Azure Files で動作するように .NET コンソール アプリを準備する手順について説明します。
プロジェクトを作成する
.NET アプリがまだない場合は、Visual Studio または .NET CLI を使用して作成します。 この記事では、わかりやすくするためにコンソール アプリを作成します。
- Visual Studio を起動し、 [新しいプロジェクトの作成] を選択します。 または、Visual Studio を使用している場合は、 File>New>Project に移動します。
- ダイアログ ウィンドウで、[C# 用 コンソール アプリ ] を選択し、[ 次へ] を選択します。
- プロジェクトの名前を入力し、既定値のままにして、[ 次へ] を選択します。
- Framework の場合は、インストールされている最新バージョンの .NET を選択します。 他の既定値のままにして、[ 作成] を選択します。
パッケージをインストールする
System.IO
名前空間を使用して Azure Files と対話する場合は、追加のパッケージをインストールする必要はありません。
System.IO
名前空間は.NET SDK に含まれています。 .NET 用のファイル共有クライアント ライブラリまたは .NET 用 Azure Storage 管理ライブラリを使用する場合は、NuGet を使用してパッケージをインストールします。
ソリューション エクスプローラーでプロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。
NuGet パッケージ マネージャーで、 [参照] を選択します。 次に、適切なパッケージを検索して選択し、[インストール] を選択 します。 ファイル共有クライアント ライブラリの場合は、[ Azure.Storage.Files.Shares] を選択します。 Azure Storage 管理ライブラリの場合は、 Azure.ResourceManager.Storage を選択します。 パスワードなしの接続に必要な Azure ID ライブラリの場合は、 Azure.Identity を選択します。
この手順により、パッケージとその依存関係がインストールされます。
using ディレクティブを追加する
System.IO
名前空間を使用する場合は、Program.cs ファイルの先頭に次の using ディレクティブを追加します。
using System.IO;
.NET 用のファイル共有クライアント ライブラリを使用する場合は、 Program.cs ファイルの先頭に次の using ディレクティブを追加します。
using Azure.Storage.Files.Shares;
.NET 用 Azure Storage 管理ライブラリを使用する場合は、 Program.cs ファイルの 先頭に次の using ディレクティブを追加します。
using Azure.ResourceManager;
Azure サービスへのパスワードレス接続に Azure ID ライブラリを使用するには、 Program.cs ファイルの先頭に次の using ディレクティブを追加します。
using Azure.Identity;
System.IO を使用して Azure Files を操作する
Standard ファイル I/O ライブラリは、Azure Files リソースにアクセスして操作する最も一般的な方法です。 SMB または NFS を使用してファイル共有をマウントすると、オペレーティング システムによってローカル ファイル システムの API 要求がリダイレクトされます。 この方法では、 System.IO
などの標準ファイル I/O ライブラリを使用して、共有内のファイルとディレクトリを操作できます。
アプリで必要な場合は、 System.IO
の使用を検討してください。
-
アプリの互換性:
System.IO
を既に使用している既存のコードを使用する基幹業務アプリに最適です。 アプリが Azure ファイル共有を操作するためにコードを書き換える必要はありません。 -
使いやすさ:
System.IO
は開発者によく知られており、使いやすいです。 Azure Files の重要な価値提案は、SMB と NFS を介してネイティブ ファイル システム API を公開することです。
このセクションでは、 System.IO
を使用して Azure Files リソースを操作する方法について説明します。
詳細と例については、次のリソースを参照してください。
ファイル共有をマウントする
System.IO
を使用するには、まずファイル共有をマウントする必要があります。 SMB または NFS を使用してファイル共有をマウントする方法のガイダンスについては、次のリソースを参照してください。
この記事では、次のパスを使用して、Windows でマウントされた SMB ファイル共有を参照します。
string fileSharePath = @"Z:\file-share";
例: ファイル共有に接続し、System.IO を使用してディレクトリを列挙する
次のコード例は、ファイル共有に接続し、共有内のディレクトリを一覧表示する方法を示しています。
using System.IO;
string fileSharePath = @"Z:\file-share";
EnumerateDirectories(@"Z:\file-share");
static void EnumerateDirectories(string path)
{
try
{
List<string> dirs = new List<string>(Directory.EnumerateDirectories(path));
foreach (var dir in dirs)
{
Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
}
Console.WriteLine($"{dirs.Count} directories found.");
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine(ex.Message);
}
catch (PathTooLongException ex)
{
Console.WriteLine(ex.Message);
}
}
例: System.IO を使用してファイル共有内のファイルに書き込む
次のコード例は、 File
クラスでテキストを記述および追加する方法を示しています。
using System.IO;
string fileSharePath = @"Z:\file-share";
WriteToFile(fileSharePath, "test.txt");
static void WriteToFile(string fileSharePath, string fileName)
{
string textToWrite = "First line" + Environment.NewLine;
string filePath = Path.Combine(fileSharePath, fileName);
File.WriteAllText(filePath, textToWrite);
string[] textToAppend = { "Second line", "Third line" };
File.AppendAllLines(filePath, textToAppend);
}
例: System.IO を使用してファイル共有内のファイルをロックする
ファイル共有をマウントする SMB クライアントは、ファイル システムのロック メカニズムを使用して共有ファイルへのアクセスを管理できます。
次のコード例は、共有モードが None
に設定されたファイル共有内のファイルをロックする方法を示しています。 この共有モードでは、ファイルが閉じられるまで、現在のファイルの共有が拒否されます。
using System.IO;
string fileSharePath = @"Z:\file-share";
LockFile(Path.Combine(fileSharePath, "test.txt"));
static void LockFile(string filePath)
{
try
{
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
Console.WriteLine("File locked.");
// Do something with file, press Enter to close the stream and release the lock
Console.ReadLine();
fs.Close();
Console.WriteLine("File closed.");
}
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
}
}
SMB と FileREST API の両方を使用する場合、FileREST API はファイル ロックの管理に リース を使用し、SMB はオペレーティング システムによって管理されるファイル システム ロックを使用することに注意してください。 SMB と FileREST API の間のファイル ロック操作の管理の詳細については、「 ファイル ロックの管理」を参照してください。
例: System.IO を使用してファイル ACL を列挙する
次のコード例は、ファイルのアクセス制御リスト (ACL) を列挙する方法を示しています。
using System.IO;
using System.Security.AccessControl;
string fileSharePath = @"Z:\file-share";
string fileName = "test.txt";
string filePath = Path.Combine(fileSharePath, fileName);
EnumerateFileACLs(filePath);
static void EnumerateFileACLs(string filePath)
{
FileInfo fileInfo = new FileInfo(filePath);
// For directories, use DirectorySecurity instead of FileSecurity
FileSecurity fSecurity = FileSystemAclExtensions.GetAccessControl(fileInfo);
// List all access rules for the file
foreach (FileSystemAccessRule rule in fSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
Console.WriteLine($"Identity: {rule.IdentityReference.Value}");
Console.WriteLine($"Access Control Type: {rule.AccessControlType}");
Console.WriteLine($"File System Rights: {rule.FileSystemRights}");
Console.WriteLine();
}
}
.NET 用ファイル共有クライアント ライブラリを使用して Azure Files データを操作する
FileREST API は、Azure Files へのプログラムによるアクセスを提供します。 これにより、HTTPS エンドポイントを呼び出して、ファイル共有、ディレクトリ、ファイルに対する操作を実行できます。 FileREST API は、ネイティブ プロトコルでは使用できない可能性がある高いスケーラビリティと高度な機能のために設計されています。 Azure SDK には、FileREST API 上に構築された .NET 用のファイル共有クライアント ライブラリなどのクライアント ライブラリが用意されています。
アプリケーションで次のものが必要な場合は、FileREST API とファイル共有クライアント ライブラリの使用を検討してください。
- 高度な機能: ネイティブ プロトコルでは使用できない操作と機能にアクセスします。
- カスタム クラウド統合: Azure Files と直接やり取りする、バックアップ、ウイルス対策、データ管理などのカスタム付加価値サービスを構築します。
- パフォーマンスの最適化: データ プレーン操作を使用する大規模なシナリオでは、パフォーマンスの利点を活用できます。
FileREST API は、Azure Files をリソースの階層としてモデル化し、 ディレクトリ または ファイル レベルで実行される操作に推奨されます。 ファイル サービスまたはファイル共有レベルで実行される操作には、ストレージ リソース プロバイダー REST API を使用することをお勧めします。
このセクションでは、ファイル共有クライアント ライブラリを使用して Azure Files リソースを操作する方法について説明します。
詳細と例については、次のリソースを参照してください。
アクセスの認可とクライアントの作成
アプリを Azure Files に接続するには、 ShareClient
オブジェクトを作成します。 このオブジェクトは、Azure Files リソースを操作するための開始点です。 次のコード例は、さまざまな承認メカニズムを使用して ShareClient
オブジェクトを作成する方法を示しています。
Microsoft Entra ID を使用して認可するには、セキュリティ プリンシパルを使用する必要があります。 必要なセキュリティ プリンシパルの種類は、アプリが実行される場所によって異なります。 次の表を参考にしてください。
アプリが実行される場所 | セキュリティ プリンシパル | 指導 |
---|---|---|
ローカル コンピューター (開発とテスト) | サービス プリンシパル | アプリの登録、Microsoft Entra グループの設定、ロールの割り当て、環境変数の構成の方法を確認するには、開発者サービス プリンシパルを使用してアクセスを認可する方法に関する記事を参照してください |
ローカル コンピューター (開発とテスト) | ユーザー ID | Microsoft Entra グループを設定し、ロールを割り当て、Azure にサインインする方法については、開発者資格情報を使用してアクセスを認可する方法に関する記事を参照してください |
Azure 上でホストされています | マネージド ID | マネージド ID を有効にしてロールを割り当てる方法については、マネージド ID を使用して Azure でホストされるアプリからのアクセスを承認する方法に関する記事を参照してください |
Azure の外部でホストされる (オンプレミス アプリなど) | サービス プリンシパル | アプリを登録し、ロールを割り当て、環境変数を構成する方法については、アプリケーション サービス プリンシパルを使用してオンプレミス アプリからのアクセスを承認する方法に関する記事を参照してください |
この記事のコード例を使用するには、Azure RBAC 組み込みロール Storage File Data Privileged Contributor をセキュリティ プリンシパルに割り当てます。 このロールは、設定されているファイル/ディレクトリ レベルの NTFS アクセス許可に関係なく、構成されているすべてのストレージ アカウントの共有内のすべてのデータに対する完全な読み取り、書き込み、ACL の変更、および削除アクセスを提供します。 詳細については、「 Rest 経由の Azure Files OAuth で Microsoft Entra ID を使用して Azure ファイル共有にアクセスする」を参照してください。
DefaultAzureCredential を使用してアクセスを承認する
Azure Files へのアクセスを承認して接続するための簡単で安全な方法は、 DefaultAzureCredential インスタンスを作成して OAuth トークンを取得することです。 その後、その資格情報を使用して、ShareClient
オブジェクトを作成できます。
次の例では、ShareClient
を使用して承認されたDefaultAzureCredential
オブジェクトを作成し、共有内のディレクトリを操作するShareDirectoryClient
オブジェクトを作成します。
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
// ...
string accountName = "<account-name>";
string shareName = "<share-name>";
ShareClientOptions options = new()
{
AllowSourceTrailingDot = true,
AllowTrailingDot = true,
ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareClient shareClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{shareName}"),
new DefaultAzureCredential(),
options);
ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient("sample-directory");
ユーザーの認証に使用する資格情報の種類が正確にわかっている場合は、.NET 用 Azure ID クライアント ライブラリの他のクラスを使用して OAuth トークンを取得できます。 これらのクラスは TokenCredential クラスから取得されます。
これらの各承認メカニズムの詳細については、「 ファイル データへのアクセスを承認する方法を選択する」を参照してください。
例: ファイル共有クライアント ライブラリを使用してファイルをコピーする
次の方法を使用して、ファイル共有内またはファイル共有間でファイルをコピーできます。
BlobClient
オブジェクトから次のメソッドを使用して、ファイルをコピー先 BLOB にコピーできます。
次のコード例は、ファイルを別のファイル共有内のファイルにコピーする方法を示しています。
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
string accountName = "<account-name>";
string srcShareName = "src-file-share";
string destShareName = "dest-file-share";
string srcFilePath = "src/path/to/file";
string destFilePath = "dest/path/to/file";
TokenCredential tokenCredential = new DefaultAzureCredential();
ShareClientOptions options = new()
{
ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareFileClient srcShareFileClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{srcShareName}/{srcFilePath}"),
tokenCredential,
options);
ShareFileClient destShareFileClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{destShareName}/{destFilePath}"),
tokenCredential,
options);
// Copy the file from the source share to the destination share
await destShareFileClient.StartCopyAsync(srcShareFileClient.Uri);
例: ファイル共有クライアント ライブラリを使用してファイルをリースする
リースは、リース ID を介して Azure によって管理されるファイルに対するロックを作成します。 リースは、分散システム内の複数のクライアント間でファイルへのアクセスを調整するメカニズムを提供します。 ファイルのリースは、排他的な書き込みと削除のアクセスを提供します。 リースの状態とアクションの詳細については、「 リース ファイル」を参照してください。
次のコード例は、リース クライアントを作成し、ファイルで無限期間のリースを取得し、リースを解放する方法を示しています。
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
using Azure.Storage.Files.Shares.Specialized;
string accountName = "<account-name>";
string shareName = "sample-file-share";
string filePath = "path/to/file";
TokenCredential tokenCredential = new DefaultAzureCredential();
ShareClientOptions options = new()
{
ShareTokenIntent = ShareTokenIntent.Backup,
};
ShareFileClient fileClient = new(
new Uri($"https://{accountName}.file.core.windows.net/{shareName}/{filePath}"),
tokenCredential,
options);
ShareLeaseClient leaseClient = fileClient.GetShareLeaseClient();
// Acquire a lease on the source file
await leaseClient.AcquireAsync(duration: ShareLeaseClient.InfiniteLeaseDuration);
// Do something with the file
// Release the lease
await leaseClient.ReleaseAsync();
SMB と FileREST API の両方を使用する場合、FileREST API はファイル ロックの管理に リース を使用し、SMB はオペレーティング システムによって管理されるファイル システム ロックを使用することに注意してください。 SMB と FileREST API の間のファイル ロック操作の管理の詳細については、「 ファイル ロックの管理」を参照してください。
例: ファイル共有クライアント ライブラリを使用して共有スナップショットを作成および一覧表示する
共有スナップショットは、ある時点でのファイル共有の読み取り専用コピーです。 ファイル共有のスナップショットを作成し、スナップショットを使用して、スナップショットの作成時に共有内のデータにアクセスできます。 ファイル共有内のすべてのスナップショットを一覧表示したり、共有スナップショットを削除したりすることもできます。
次のコード例は、共有スナップショットの作成、ファイル共有内のスナップショットの一覧表示、および共有スナップショット内のディレクトリ ツリーの走査を行う方法を示しています。
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
string connectionString = "<connection-string>";
ShareServiceClient shareServiceClient = new ShareServiceClient(connectionString);
ShareClient shareClient = shareServiceClient.GetShareClient("sample-file-share");
// Create a snapshot
ShareSnapshotInfo snapshotInfo = await shareClient.CreateSnapshotAsync();
Console.WriteLine($"Snapshot created: {snapshotInfo.Snapshot}");
// List snapshots in a share
await foreach (ShareItem shareItem in shareServiceClient.GetSharesAsync(ShareTraits.All, ShareStates.Snapshots))
{
if (shareItem.Snapshot != null)
{
Console.WriteLine($"Share: {shareItem.Name} (Snapshot: {shareItem.Snapshot})");
}
}
// List directories and files in a share snapshot
string snapshotTimestamp = snapshotInfo.Snapshot.ToString();
ShareClient shareSnapshot = shareClient.WithSnapshot(snapshotTimestamp);
ShareDirectoryClient rootDir = shareSnapshot.GetRootDirectoryClient();
await ListDirectoryTreeAsync(rootDir);
static async Task ListDirectoryTreeAsync(ShareDirectoryClient directory)
{
await foreach (ShareFileItem fileItem in directory.GetFilesAndDirectoriesAsync())
{
if (fileItem.IsDirectory)
{
Console.WriteLine($"Directory: {fileItem.Name}");
await ListDirectoryTreeAsync(directory.GetSubdirectoryClient(fileItem.Name));
}
else
{
Console.WriteLine($"File: {fileItem.Name}");
}
}
}
注釈
DefaultAzureCredential
の使用時に取得した OAuth トークンは、ファイル共有レベルでのデータ プレーン操作には許可されません。 共有スナップショットを操作するには、アカウント キーを使用してクライアント オブジェクトを承認する必要があります。 このコード例で作成した ShareClient
オブジェクトは、アカウント キーを含む接続文字列を使用します。
アカウント キーまたは接続文字列を格納すると、セキュリティ上のリスクが伴います。 Microsoft Entra 認証が利用できない場合にのみ使用してください。 Azure Key Vault にアカウント キーを安全に格納する方法の詳細については、「 Azure Key Vault マネージド ストレージ アカウント キーについて」を参照してください。
Azure Storage 管理ライブラリを使用して Azure Files リソースを管理する
Azure Storage 管理ライブラリは、Azure Storage リソース プロバイダー REST API 上に構築されています。 Azure Storage リソース プロバイダーは 、Azure Resource Manager に基づくサービスであり、宣言型 (テンプレート) メソッドと命令型 (直接 API 呼び出し) メソッドの両方をサポートします。 Azure Storage リソース プロバイダー REST API は、ファイル共有を含む Azure Storage リソースへのプログラムによるアクセスを提供します。 Azure SDK には、Azure Storage リソース プロバイダー REST API 上に構築された管理ライブラリが用意されています。
管理ライブラリは、 ファイル サービス または ファイル共有 レベルで実行される操作に推奨されます。 このセクションでは、Azure Storage 管理ライブラリを使用して Azure Files リソースを管理する方法について説明します。
例: Azure Storage 管理ライブラリを使用してファイル共有を作成する
次のコード例は、最上位の ArmClient
オブジェクトを作成し、ストレージ リソース プロバイダーをサブスクリプションに登録し、Azure Storage 管理ライブラリを使用してファイル共有を作成する方法を示しています。
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
// Create a resource identifier, then get the subscription resource
ResourceIdentifier resourceIdentifier = new($"/subscriptions/<subscription-id>");
SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);
ResourceProviderResource resourceProvider =
await subscription.GetResourceProviderAsync("Microsoft.Storage");
// Check the registration state of the resource provider and register, if needed
if (resourceProvider.Data.RegistrationState == "NotRegistered")
resourceProvider.Register();
// Get a resource group
ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync("<resource-group-name>");
// Get a collection of storage account resources
StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();
// Get a specific storage account resource
StorageAccountResource storageAccount = await accountCollection.GetAsync("<storage-account-name>");
// Get a file service resource for the storage account
FileServiceResource fileService = storageAccount.GetFileService();
// Create a new file share (or update if it already exists)
ArmOperation <FileShareResource> fileShareOperation = await fileService
.GetFileShares()
.CreateOrUpdateAsync(WaitUntil.Completed, "sample-file-share", new FileShareData()
{
ShareQuota = 1024,
// Add file share properties here
});
// Get the file share resource
FileShareResource fileShare = fileShareOperation.Value;
FileShareData クラスを使用して、ファイル共有プロパティを構成できます。 前の例では、 ShareQuota
プロパティを設定する方法を示します。
注釈
登録操作を実行するには、次の Azure RBAC アクション (Microsoft.Storage/register/action) のアクセス許可が必要です。 このアクセス許可は、寄稿者ロールと所有者の組み込みロールに含まれています。
例: Azure Storage 管理ライブラリを使用してファイル共有とスナップショットを一覧表示する
次のコード例は、ストレージ アカウント内のファイル共有とスナップショットを一覧表示する方法を示しています。
// Iterate over a collection of file shares and list them along with any snapshots
string expand = "snapshots";
await foreach (FileShareResource shareResource in fileService.GetFileShares().GetAllAsync(expand: expand))
{
// Call operations on the file share resource
// For this demo, print out the resource name and snapshot information
FileShareData resourceData = shareResource.Data;
Console.WriteLine($"Resource name: {resourceData.Name}");
if (resourceData.SnapshotOn.HasValue)
{
Console.WriteLine($"Snapshot: {resourceData.SnapshotOn}");
}
}
関連コンテンツ
Azure Files を使用した開発の詳細については、次のリソースを参照してください。