Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Anlık görüntü, bir blobun belirli bir noktada alınan salt okunur bir sürümüdür. Bu makalede ,.NET için Azure Depolama istemci kitaplığını kullanarak blob anlık görüntülerinin nasıl oluşturulacağı ve yönetileceğini gösterilmektedir.
Azure Depolama'daki blob anlık görüntüleri hakkında daha fazla bilgi için bkz. Blob anlık görüntüleri.
Prerequisites
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- İşletim sisteminiz için en son .NET SDK'sı . Çalışma zamanını değil, SDK'yi aldığınızdan emin olun.
Ortamınızı ayarlama
Var olan bir projeniz yoksa, bu bölümde bir projenin .NET için Azure Blob Depolama istemci kitaplığıyla çalışacak şekilde nasıl ayarlanacağı gösterilir. Adımlar arasında paket yükleme, yönergeler ekleme using ve yetkili istemci nesnesi oluşturma yer alır. Ayrıntılar için bkz. Azure Blob Depolama ve .NET'i kullanmaya başlama.
Paketleri yükleme
Proje dizininizden komutunu kullanarak dotnet add package Azure Blob Depolama ve Azure Identity istemci kitaplıkları için paketleri yükleyin. Azure hizmetlerine parolasız bağlantılar için Azure.Identity paketi gereklidir.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
using yönergeleri ekle
Kod dosyanızın en üstüne şu using yönergeleri ekleyin:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Bu makaledeki bazı kod örnekleri için ek using yönergeler gerekebilir.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun. Aşağıdaki örnekte yetkilendirme için kullanarak DefaultAzureCredential bir istemci nesnesinin nasıl oluşturulacağı gösterilmektedir:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Bir .NET uygulamasına bağımlılık ekleme için bir hizmet istemcisi kaydedebilirsiniz.
Ayrıca, belirli kapsayıcılar veya bloblar için istemci nesneleri de oluşturabilirsiniz. İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.
Authorization
Yetkilendirme mekanizması, blob anlık görüntüleriyle çalışmak için gerekli izinlere sahip olmalıdır. Microsoft Entra ID ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Veri Katkıcısı veya üzeri gerekir. Daha fazla bilgi edinmek için Anlık Görüntü Blobu yetkilendirme kılavuzuna bakın.
Anlık görüntü oluşturma
Blok blobunun anlık görüntüsünü oluşturmak için aşağıdaki yöntemlerden birini kullanın:
Aşağıdaki kod örneğinde anlık görüntü oluşturma gösterilmektedir. Hizmete yönelik istekleri yetkilendirmek için Microsoft Entra kimlik bilgilerinizi kullanabilmek üzere Azure.Identity kitaplığına bir referans ekleyin. Yönetilen kimliği Azure Depolama'ya erişim yetkisi vermek için DefaultAzureCredential sınıfını kullanma hakkında daha fazla bilgi için bkz. .NET için Azure Identity istemci kitaplığı.
private static async Task CreateBlockBlobSnapshot(
string accountName,
string containerName,
string blobName,
Stream data)
{
const string blobServiceEndpointSuffix = ".blob.core.windows.net";
Uri containerUri =
new Uri("https://" + accountName + blobServiceEndpointSuffix + "/" + containerName);
// Get a container client object and create the container.
BlobContainerClient containerClient = new BlobContainerClient(containerUri,
new DefaultAzureCredential());
await containerClient.CreateIfNotExistsAsync();
// Get a blob client object.
BlobClient blobClient = containerClient.GetBlobClient(blobName);
try
{
// Upload text to create a block blob.
await blobClient.UploadAsync(data);
// Add blob metadata.
IDictionary<string, string> metadata = new Dictionary<string, string>
{
{ "ApproxBlobCreatedDate", DateTime.UtcNow.ToString() },
{ "FileType", "text" }
};
await blobClient.SetMetadataAsync(metadata);
// Sleep 5 seconds.
System.Threading.Thread.Sleep(5000);
// Create a snapshot of the base blob.
// You can specify metadata at the time that the snapshot is created.
// If no metadata is specified, then the blob's metadata is copied to the snapshot.
await blobClient.CreateSnapshotAsync();
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
Anlık görüntüleri silme
Bir blobu silmek için önce bu blobun anlık görüntülerini silmeniz gerekir. Anlık görüntüyü tek tek silebilir veya kaynak blob silindiğinde tüm anlık görüntülerin silineceğini belirtebilirsiniz. Hala anlık görüntüleri olan bir blobu silmeye çalışırsanız, bir hata oluşur.
Blobu ve anlık görüntülerini silmek için aşağıdaki yöntemlerden birini kullanın ve DeleteSnapshotsOption enum'u ekleyin.
Aşağıdaki kod örneğinde blobClient türünde bir nesne olan .NET'te bir blobun ve anlık görüntülerinin nasıl silineceği gösterilmektedir:
await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, default);
Blob anlık görüntüsünü ana blobun üzerine kopyalama
Temel blob çevrimiçi katmanda (sık erişimli veya seyrek erişimli) olduğu sürece, bir anlık görüntüyü temel blobun yerine geçirmek için kopyalama işlemi yapabilirsiniz. Anlık görüntü kalır, ancak hedefinin üzerine okunabilir ve yazılabilir bir kopya yazılır.
Aşağıdaki kod örneğinde blob anlık görüntüsünün temel blob üzerinden nasıl kopyalanması gösterilmektedir:
public static async Task<BlockBlobClient> CopySnapshotOverBaseBlobAsync(
BlockBlobClient client,
string snapshotTimestamp)
{
// Instantiate BlockBlobClient with identical URI and add snapshot timestamp
BlockBlobClient snapshotClient = client.WithSnapshot(snapshotTimestamp);
// Restore the specified snapshot by copying it over the base blob
await client.SyncUploadFromUriAsync(snapshotClient.Uri, overwrite: true);
// Return the client object after the copy operation
return client;
}
Resources
.NET için Azure Blob Depolama istemci kitaplığını kullanarak blob anlık görüntülerini yönetme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kullanım dışı bırakılan .NET sürüm 11.x SDK'larını kullanan ilgili kod örnekleri için bkz. .NET sürüm 11.x kullanan kod örnekleri.