.NET を使用して Azure Files 用に開発するDevelop for Azure Files with .NET

このチュートリアルでは、ファイル データの格納に Azure Files を使うアプリケーションを開発するための .NET の基本的な使い方を示します。This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. このチュートリアルでは、シンプルなコンソール アプリケーションを作成し、.NET と Azure Files で次のような基本的な操作を行います。This tutorial creates a simple console application to do basic actions with .NET and Azure Files:

  • ファイルの内容を取得するGet the contents of a file.
  • ファイル共有の最大サイズ (クォータ) を設定するSet the maximum size or quota for the file share.
  • 共有で定義されている保存されたアクセス ポリシーを使用するファイルの Shared Access Signature (SAS キー) を作成するCreate a shared access signature (SAS key) for a file that uses a stored access policy defined on the share.
  • ファイルを、同じストレージ アカウント内の別のファイルにコピーするCopy a file to another file in the same storage account.
  • ファイルを、同じストレージ アカウント内の BLOB にコピーするCopy a file to a blob in the same storage account.
  • トラブルシューティングに Azure Storage メトリックを使用するUse Azure Storage Metrics for troubleshooting.

Azure Files の詳細については、「Azure Files とは」を参照してください。To learn more about Azure Files, see What is Azure Files?

ヒント

Azure Storage コード サンプル レポジトリを参照してくださいCheck out the Azure Storage code samples repository

ダウンロードして実行できる、使いやすいエンド ツー エンドの Azure Storage コード サンプルについては、Azure Storage のサンプルの一覧を確認してください。For easy-to-use end-to-end Azure Storage code samples that you can download and run, please check out our list of Azure Storage Samples.

.NET API についてUnderstanding the .NET APIs

Azure Files は、クライアント アプリケーションに対して、サーバー メッセージ ブロック (SMB) と REST という 2 つの幅広いアプローチを提供します。Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. .NET 内では、これらのアプローチは System.IO および WindowsAzure.Storage API によって抽象化されています。Within .NET, the System.IO and WindowsAzure.Storage APIs abstract these approaches.

APIAPI 使用する場合When to use メモNotes
System.IOSystem.IO アプリケーションが次のような場合。Your application:
  • SMB を使用してファイルの読み取り/書き込みをする必要があるNeeds to read/write files by using SMB
  • ポート 445 経由で Azure Files アカウントにアクセスするデバイスで実行しているIs running on a device that has access over port 445 to your Azure Files account
  • ファイル共有のどの管理設定も管理する必要がないDoesn't need to manage any of the administrative settings of the file share
SMB 経由の Azure Files によるファイル I/O の実装は、通常、ネットワーク ファイル共有またはローカル ストレージ デバイスでの I/O と同じです。File I/O implemented with Azure Files over SMB is generally the same as I/O with any network file share or local storage device. ファイル I/O など、.NET のさまざまな機能の概要については、「コンソール アプリケーション」のチュートリアルを参照してください。For an introduction to a number of features in .NET, including file I/O, see the Console Application tutorial.
Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File アプリケーションが次のような場合。Your application:
  • ファイアウォールや ISP の制約のため、ポート 445 で SMB を使用して Azure Files にアクセスできないCan't access Azure Files by using SMB on port 445 because of firewall or ISP constraints
  • ファイル共有のクォータを設定したり共有アクセス署名を作成したりする管理機能を必要としているRequires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
この記事では、SMB の代わりに REST を使用するファイル I/O のため、およびファイル共有の管理のために、Microsoft.Azure.Storage.File を使用する方法について説明します。This article demonstrates the use of Microsoft.Azure.Storage.File for file I/O using REST instead of SMB and management of the file share.

コンソール アプリケーションの作成とアセンブリの取得Create the console application and obtain the assembly

Visual Studio で、新しい Windows コンソール アプリケーションを作成します。In Visual Studio, create a new Windows console application. 次の手順では、Visual Studio 2019 でコンソール アプリケーションを作成する方法を説明します。The following steps show you how to create a console application in Visual Studio 2019. この手順は Visual Studio の他のバージョンでも同様です。The steps are similar in other versions of Visual Studio.

  1. Visual Studio を起動し、 [新しいプロジェクトの作成] を選択します。Start Visual Studio and select Create a new project.
  2. [新しいプロジェクトの作成] で、C# の [コンソール アプリ (.NET Framework)] を選択してから、 [次へ] を選択します。In Create a new project, choose Console App (.NET Framework) for C#, and then select Next.
  3. [新しいプロジェクトの構成] で、アプリの名前を入力し、 [作成] を選択します。In Configure your new project, enter a name for the app, and select Create.

このチュートリアルのすべてのコード例は、コンソール アプリケーションの Main() ファイルの Program.cs メソッドに追加できます。You can add all the code examples in this tutorial to the Main() method of your console application's Program.cs file.

Azure Storage クライアント ライブラリは、すべての種類の .NET アプリケーションで使用できます。You can use the Azure Storage client library in any type of .NET application. Azure クラウド サービスまたは Web アプリ、デスクトップ アプリケーション、モバイル アプリケーションなどの種類があります。These types include an Azure cloud service or web app, and desktop and mobile applications. このガイドでは、わかりやすくするためにコンソール アプリケーションを使用します。In this guide, we use a console application for simplicity.

NuGet を使用した必要なパッケージのインストールUse NuGet to install the required packages

このチュートリアルを完了するには、プロジェクトの次のパッケージを参照してください。Refer to these packages in your project to complete this tutorial:

NuGet を使って両方のパッケージを取得できます。You can use NuGet to obtain both packages. 次の手順に従います。Follow these steps:

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。In Solution Explorer, right-click your project and choose Manage NuGet Packages.

  2. NuGet パッケージ マネージャーで、 [参照] を選択します。In NuGet Package Manager, select Browse. 次に、Microsoft.Azure.Storage.Blob を検索して選択し、 [インストール] を選択します。Then search for and choose Microsoft.Azure.Storage.Blob, and then select Install.

    この手順により、パッケージとその依存関係がインストールされます。This step installs the package and its dependencies.

  3. それらのパッケージを検索してインストールします。Search for and install these packages:

    • Microsoft.Azure.Storage.CommonMicrosoft.Azure.Storage.Common
    • Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File
    • Microsoft.Azure.ConfigurationManagerMicrosoft.Azure.ConfigurationManager

ストレージ アカウントの資格情報を App.config ファイルに保存Save your storage account credentials to the App.config file

次に、プロジェクトの App.config ファイルに資格情報を保存します。Next, save your credentials in your project's App.config file. ソリューション エクスプローラーApp.config をダブルクリックし、次の例のようにファイルを編集します。In Solution Explorer, double-click App.config and edit the file so that it is similar to the following example. myaccount を実際のストレージ アカウント名に置き換え、mykey を実際のストレージ アカウント キーに置き換えます。Replace myaccount with your storage account name and mykey with your storage account key.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <appSettings>
        <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=StorageAccountKeyEndingIn==" />
    </appSettings>
</configuration>

注意

最新バージョンの Azure ストレージ エミュレーターでは、Azure Files はサポートされません。 Azure Files を操作するには、接続文字列がクラウド内の Azure ストレージ アカウントを対象とする必要があります。Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

using ディレクティブを追加するAdd using directives

ソリューション エクスプローラーProgram.cs ファイルを開き、次の using ディレクティブをファイルの先頭に追加します。In Solution Explorer, open the Program.cs file, and add the following using directives to the top of the file.

using Microsoft.Azure; // Namespace for Azure Configuration Manager
using Microsoft.Azure.Storage; // Namespace for Storage Client Library
using Microsoft.Azure.Storage.Blob; // Namespace for Azure Blobs
using Microsoft.Azure.Storage.File; // Namespace for Azure Files

.NET 用 Microsoft Azure Configuration Manager ライブラリ には、構成ファイルの接続文字列を解析するためのクラスが用意されています。The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. CloudConfigurationManager クラスで構成の設定を解析します。The CloudConfigurationManager class parses configuration settings. デスクトップ、モバイル デバイス、Azure 仮想マシン、または Azure クラウド サービスで実行されるクライアント アプリケーションの設定を解析します。It parses settings for client applications that run on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

CloudConfigurationManager パッケージを参照するには、次の using ディレクティブを追加します。To reference the CloudConfigurationManager package, add the following using directives:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

構成ファイルから接続文字列を取得する方法の例を次に示します。Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

Azure Configuration Manager の使用はオプションです。Using the Azure Configuration Manager is optional. また、.NET Framework の ConfigurationManager クラスなどの API を使用することもできます。You can also use an API such as the .NET Framework's ConfigurationManager Class.

プログラムによるファイル共有へのアクセスAccess the file share programmatically

次に、前に示したコードの後にある Main() メソッドに次のコードを追加し、接続文字列を取得します。Next, add the following content to the Main() method, after the code shown above, to retrieve the connection string. このコードでは、前の手順で作成したファイルへの参照を取得し、その内容を出力します。This code gets a reference to the file we created earlier and outputs its contents.

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile file = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the file exists.
        if (file.Exists())
        {
            // Write the contents of the file to the console window.
            Console.WriteLine(file.DownloadTextAsync().Result);
        }
    }
}

コンソール アプリケーションを実行して、出力結果を確認します。Run the console application to see the output.

ファイル共有の最大サイズの設定Set the maximum size for a file share

Azure Storage クライアント ライブラリのバージョン 5.x 以降では、ファイル共有のクォータ (最大サイズ) を設定できます。Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (maximum size) for a file share. また、共有に現在格納されているデータの量も確認できます。You can also check to see how much data is currently stored on the share.

共有のクォータを設定することにより、共有に格納するファイルの合計サイズを制限します。Setting the quota for a share limits the total size of the files stored on the share. 共有上のファイルの合計サイズが、共有に設定されているクォータを超えると、クライアントは既存のファイルのサイズを増やすことができません。If the total size of files on the share exceeds the quota set on the share, clients can't increase the size of existing files. それらのファイルが空でない限り、クライアントは新しいファイルを作成できません。Clients can't create new files, unless those files are empty.

次の例では、共有の現在の使用状況を確認する方法と、共有のクォータを設定する方法を示します。The example below shows how to check the current usage for a share and how to set the quota for the share.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Check current usage stats for the share.
    // Note that the ShareStats object is part of the protocol layer for the File service.
    Microsoft.Azure.Storage.File.Protocol.ShareStats stats = share.GetStats();
    Console.WriteLine("Current share usage: {0} GB", stats.Usage.ToString());

    // Specify the maximum size of the share, in GB.
    // This line sets the quota to be 10 GB greater than the current usage of the share.
    share.Properties.Quota = 10 + stats.Usage;
    share.SetProperties();

    // Now check the quota for the share. Call FetchAttributes() to populate the share's properties.
    share.FetchAttributes();
    Console.WriteLine("Current share quota: {0} GB", share.Properties.Quota);
}

ファイルまたはファイル共有の Shared Access Signature の生成Generate a shared access signature for a file or file share

Azure Storage クライアント ライブラリのバージョン 5.x 以降、ファイル共有または個々のファイルの Shared Access Signature (SAS) を生成できます。Beginning with version 5.x of the Azure Storage Client Library, you can generate a shared access signature (SAS) for a file share or for an individual file. また、保存されているアクセス ポリシーをファイル共有に作成して、Shared Access Signature を管理することもできます。You can also create a stored access policy on a file share to manage shared access signatures. 保存されているアクセス ポリシーを使用すると、SAS が危害を受けた場合に SAS を失効させることができるため、保存されているアクセス ポリシーを作成することをお勧めします。We recommend creating a stored access policy because it lets you revoke the SAS if it becomes compromised.

次の例では、共有に対して保存されているアクセス ポリシーを作成します。The following example creates a stored access policy on a share. この例では、そのポリシーを使用して、共有内のファイルの SAS に制約を指定しています。The example uses that policy to provide the constraints for a SAS on a file in the share.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    string policyName = "sampleSharePolicy" + DateTime.UtcNow.Ticks;

    // Create a new stored access policy and define its constraints.
    SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy()
        {
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write
        };

    // Get existing permissions for the share.
    FileSharePermissions permissions = share.GetPermissions();

    // Add the stored access policy to the share's policies. Note that each policy must have a unique name.
    permissions.SharedAccessPolicies.Add(policyName, sharedPolicy);
    share.SetPermissions(permissions);

    // Generate a SAS for a file in the share and associate this access policy with it.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");
    CloudFile file = sampleDir.GetFileReference("Log1.txt");
    string sasToken = file.GetSharedAccessSignature(null, policyName);
    Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken);

    // Create a new CloudFile object from the SAS, and write some text to the file.
    CloudFile fileSas = new CloudFile(fileSasUri);
    fileSas.UploadText("This write operation is authorized via SAS.");
    Console.WriteLine(fileSas.DownloadText());
}

Shared Access Signature の作成方法と使用方法の詳細については、「Shared Access Signature の機能」を参照してください。For more information about creating and using shared access signatures, see How a shared access signature works.

ファイルのコピーCopy files

Azure Storage クライアント ライブラリのバージョン 5.x 以降では、ファイルを別のファイルにコピーしたり、ファイルを BLOB にコピーしたり、BLOB をファイルにコピーしたりすることができます。Beginning with version 5.x of the Azure Storage Client Library, you can copy a file to another file, a file to a blob, or a blob to a file. 次のセクションでは、プログラムを使用してこれらのコピー操作を行う方法を示します。In the next sections, we demonstrate how to do these copy operations programmatically.

また、AzCopy を使用してあるファイルを別のファイルにコピーしたり、BLOB をファイルにコピーしたり、その反対の操作をしたりすることもできます。You can also use AzCopy to copy one file to another or to copy a blob to a file or the other way around. AzCopy の作業開始に関するページを参照してください。See Get started with AzCopy.

注意

BLOB をファイルにコピーしたり、ファイルを BLOB にコピーしたりする場合は、同じストレージ アカウント内でコピーする場合でも、Shared Access Signature (SAS) を使用してソース オブジェクトへのアクセスを承認する必要があります。If you are copying a blob to a file, or a file to a blob, you must use a shared access signature (SAS) to authorize access to the source object, even if you are copying within the same storage account.

別のファイルへのファイルのコピーCopy a file to another file

次の例では、同じ共有内の別のファイルに、ファイルをコピーします。The following example copies a file to another file in the same share. このコピー操作では同じストレージ アカウント内のファイル間でコピーされるため、共有キー認証を使用してコピーを行うことができます。Because this copy operation copies between files in the same storage account, you can use Shared Key authentication to do the copy.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile sourceFile = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the source file exists.
        if (sourceFile.Exists())
        {
            // Get a reference to the destination file.
            CloudFile destFile = sampleDir.GetFileReference("Log1Copy.txt");

            // Start the copy operation.
            destFile.StartCopy(sourceFile);

            // Write the contents of the destination file to the console window.
            Console.WriteLine(destFile.DownloadText());
        }
    }
}

BLOB へのファイルのコピーCopy a file to a blob

次の例では、ファイルを作成し、同じストレージ アカウント内の BLOB にそれをコピーします。The following example creates a file and copies it to a blob within the same storage account. この例では、ソース ファイルの SAS を作成します。サービスはこれを使用してコピー操作中にソース ファイルへのアクセスを承認します。The example creates a SAS for the source file, which the service uses to authorize access to the source file during the copy operation.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Create a new file share, if it does not already exist.
CloudFileShare share = fileClient.GetShareReference("sample-share");
share.CreateIfNotExists();

// Create a new file in the root directory.
CloudFile sourceFile = share.GetRootDirectoryReference().GetFileReference("sample-file.txt");
sourceFile.UploadText("A sample file in the root directory.");

// Get a reference to the blob to which the file will be copied.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("sample-container");
container.CreateIfNotExists();
CloudBlockBlob destBlob = container.GetBlockBlobReference("sample-blob.txt");

// Create a SAS for the file that's valid for 24 hours.
// Note that when you are copying a file to a blob, or a blob to a file, you must use a SAS
// to authorize access to the source object, even if you are copying within the same
// storage account.
string fileSas = sourceFile.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
    // Only read permissions are required for the source file.
    Permissions = SharedAccessFilePermissions.Read,
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});

// Construct the URI to the source file, including the SAS token.
Uri fileSasUri = new Uri(sourceFile.StorageUri.PrimaryUri.ToString() + fileSas);

// Copy the file to the blob.
destBlob.StartCopy(fileSasUri);

// Write the contents of the file to the console window.
Console.WriteLine("Source file contents: {0}", sourceFile.DownloadText());
Console.WriteLine("Destination blob contents: {0}", destBlob.DownloadText());

同じ方法で、ファイルに BLOB をコピーできます。You can copy a blob to a file in the same way. ソース オブジェクトが BLOB である場合、SAS を作成して、コピー操作中にその BLOB へのアクセスを承認します。If the source object is a blob, then create a SAS to authorize access to that blob during the copy operation.

共有スナップショットShare snapshots

Azure Storage クライアント ライブラリのバージョン 8.5 以降では、共有スナップショットを作成できます。Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. また、共有スナップショットを一覧表示または参照したり、削除したりすることもできます。You can also list or browse share snapshots and delete share snapshots. 共有スナップショットは読み取り専用であるため、共有スナップショットに対する書き込み操作は許可されていません。Share snapshots are read-only so no write operations are allowed on share snapshots.

共有スナップショットを作成するCreate share snapshots

次の例では、ファイル共有スナップショットを作成します。The following example creates a file share snapshot.

storageAccount = CloudStorageAccount.Parse(ConnectionString); 
fClient = storageAccount.CreateCloudFileClient(); 
string baseShareName = "myazurefileshare"; 
CloudFileShare myShare = fClient.GetShareReference(baseShareName); 
var snapshotShare = myShare.Snapshot();

共有スナップショットの一覧表示List share snapshots

次の例では、共有上の共有スナップショットを一覧表示します。The following example lists the share snapshots on a share.

var shares = fClient.ListShares(baseShareName, ShareListingDetails.All);

共有スナップショット内のファイルとディレクトリを参照するBrowse files and directories within share snapshots

次の例では、共有スナップショット内のファイルとディレクトリを参照します。The following example browses files and directory within share snapshots.

CloudFileShare mySnapshot = fClient.GetShareReference(baseShareName, snapshotTime); 
var rootDirectory = mySnapshot.GetRootDirectoryReference(); 
var items = rootDirectory.ListFilesAndDirectories();

共有と共有スナップショットを一覧表示し、共有スナップショットからファイル共有またはファイルを復元するList shares and share snapshots and restore file shares or files from share snapshots

ファイル共有のスナップショットを取得すると、将来的に個々のファイルまたはファイル共有全体を復旧できます。Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

ファイル共有の共有スナップショットを照会することで、ファイル共有スナップショットからファイルを復元できます。You can restore a file from a file share snapshot by querying the share snapshots of a file share. その後、特定の共有スナップショットに属するファイルを取得できます。You can then retrieve a file that belongs to a particular share snapshot. そのバージョンを使用して、直接読み取って比較するか、復元します。Use that version to either directly read and compare or to restore.

CloudFileShare liveShare = fClient.GetShareReference(baseShareName);
var rootDirOfliveShare = liveShare.GetRootDirectoryReference();
var dirInliveShare = rootDirOfliveShare.GetDirectoryReference(dirName);
var fileInliveShare = dirInliveShare.GetFileReference(fileName);

CloudFileShare snapshot = fClient.GetShareReference(baseShareName, snapshotTime);
var rootDirOfSnapshot = snapshot.GetRootDirectoryReference();
var dirInSnapshot = rootDirOfSnapshot.GetDirectoryReference(dirName);
var fileInSnapshot = dir1InSnapshot.GetFileReference(fileName);

string sasContainerToken = string.Empty;
SharedAccessFilePolicy sasConstraints = new SharedAccessFilePolicy();
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24);
sasConstraints.Permissions = SharedAccessFilePermissions.Read;

//Generate the shared access signature on the container, setting the constraints directly on the signature.
sasContainerToken = fileInSnapshot.GetSharedAccessSignature(sasConstraints);

string sourceUri = (fileInSnapshot.Uri.ToString() + sasContainerToken + "&" + fileInSnapshot.SnapshotTime.ToString()); ;
fileInliveShare.StartCopyAsync(new Uri(sourceUri));

共有スナップショットを削除するDelete share snapshots

次の例では、ファイル共有スナップショットを削除します。The following example deletes a file share snapshot.

CloudFileShare mySnapshot = fClient.GetShareReference(baseShareName, snapshotTime); mySnapshot.Delete(null, null, null);

メトリックを使用した Azure Files のトラブルシューティングTroubleshoot Azure Files by using metrics

Azure ストレージ分析で Azure Files のメトリックがサポートされるようになりました。Azure Storage Analytics now supports metrics for Azure Files. メトリック データを使用すると、要求のトレースや問題の診断ができます。With metrics data, you can trace requests and diagnose issues.

Azure portal から Azure Files のメトリックを有効にすることができます。You can enable metrics for Azure Files from the Azure portal. REST API またはストレージ クライアント ライブラリの類似のものをどれか使用して、Set File Service Properties 操作を呼び出すことによって、プログラムでメトリックを有効にすることも可能です。You can also enable metrics programmatically by calling the Set File Service Properties operation with the REST API or one of its analogs in the Storage Client Library.

次のコード例では、.NET 用ストレージ クライアント ライブラリを使用して、Azure Files のメトリックを有効にする方法を示します。The following code example shows how to use the Storage Client Library for .NET to enable metrics for Azure Files.

まず、using ファイルで、先ほど追加したディレクティブと共に、次の Program.cs ディレクティブを追加します。First, add the following using directives to your Program.cs file, along with the ones you added above:

using Microsoft.Azure.Storage.File.Protocol;
using Microsoft.Azure.Storage.Shared.Protocol;

Azure BLOB、Azure テーブル、Azure キューでは ServiceProperties 名前空間の共有 Microsoft.Azure.Storage.Shared.Protocol 型が使用されますが、Azure Files ではその独自の型である、FileServiceProperties 名前空間の Microsoft.Azure.Storage.File.Protocol 型が使用されます。Although Azure Blobs, Azure Tables, and Azure Queues use the shared ServiceProperties type in the Microsoft.Azure.Storage.Shared.Protocol namespace, Azure Files uses its own type, the FileServiceProperties type in the Microsoft.Azure.Storage.File.Protocol namespace. ただし、次のコードをコンパイルするためには、ご自身のコードから両方の名前空間を参照する必要があります。You must reference both namespaces from your code, however, for the following code to compile.

// Parse your storage connection string from your application's configuration file.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
        Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the File service client.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Set metrics properties for File service.
// Note that the File service currently uses its own service properties type,
// available in the Microsoft.Azure.Storage.File.Protocol namespace.
fileClient.SetServiceProperties(new FileServiceProperties()
{
    // Set hour metrics
    HourMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 14,
        Version = "1.0"
    },
    // Set minute metrics
    MinuteMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 7,
        Version = "1.0"
    }
});

// Read the metrics properties we just set.
FileServiceProperties serviceProperties = fileClient.GetServiceProperties();
Console.WriteLine("Hour metrics:");
Console.WriteLine(serviceProperties.HourMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.HourMetrics.RetentionDays);
Console.WriteLine(serviceProperties.HourMetrics.Version);
Console.WriteLine();
Console.WriteLine("Minute metrics:");
Console.WriteLine(serviceProperties.MinuteMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.MinuteMetrics.RetentionDays);
Console.WriteLine(serviceProperties.MinuteMetrics.Version);

問題が発生した場合は、「Windows での Azure Files に関する問題のトラブルシューティング」を参照してください。If you encounter any problems, you can refer to Troubleshoot Azure Files problems in Windows.

次のステップNext steps

Azure Files の詳細については、次のリソースを参照してください。For more information about Azure Files, see the following resources:

概念に関する記事とビデオConceptual articles and videos

File Storage 用のツールのサポートTooling support for File storage

リファレンスReference

ブログ記事Blog posts