Nesne çoğaltma, blok bloblarını bir kaynak depolama hesabıyla hedef hesap arasında zaman uyumsuz olarak kopyalar. Nesne çoğaltmayı yapılandırırken, kaynak depolama hesabını ve hedef hesabı belirten bir çoğaltma ilkesi oluşturursunuz. Çoğaltma ilkesi, kaynak kapsayıcıyı ve hedef kapsayıcıyı belirten ve kaynak kapsayıcıdaki hangi blok bloblarının çoğaltılacağını belirten bir veya daha fazla kural içerir. Nesne çoğaltma hakkında daha fazla bilgi için bkz . Blok blobları için nesne çoğaltma.
Bu makalede, Azure portalı, PowerShell veya Azure CLI kullanılarak nesne çoğaltma ilkesinin nasıl yapılandırıldığı açıklanmaktadır. Nesne çoğaltmayı yapılandırmak için Azure Depolama kaynak sağlayıcısı istemci kitaplıklarından birini de kullanabilirsiniz.
Önkoşullar
Nesne çoğaltmayı yapılandırmadan önce, henüz yoksa kaynak ve hedef depolama hesaplarını oluşturun. Kaynak ve hedef hesaplar genel amaçlı v2 depolama hesapları veya premium blok blob hesapları olabilir. Daha fazla bilgi için bkz. Azure Depolama hesabı oluşturma.
Nesne çoğaltma, hem kaynak hem de hedef hesap için blob sürümü oluşturmanın etkinleştirilmesini ve bu blob değişiklik akışının kaynak hesap için etkinleştirilmesini gerektirir. Blob sürümü oluşturma hakkında daha fazla bilgi edinmek için bkz . Blob sürümü oluşturma. Değişiklik akışı hakkında daha fazla bilgi edinmek için bkz. Azure Blob Depolama'de değişiklik akışı desteği. Bu özellikleri etkinleştirmenin ek maliyetlere neden olabileceğini unutmayın.
Hiyerarşik ad alanı etkinleştirilmiş hesaplarda nesne çoğaltması henüz desteklenmiyor.
Her iki depolama hesabına da erişimle nesne çoğaltmayı yapılandırma
Hem kaynak hem de hedef depolama hesaplarına erişiminiz varsa, her iki hesapta da nesne çoğaltma ilkesini yapılandırabilirsiniz. Aşağıdaki örneklerde Azure portalı, PowerShell veya Azure CLI ile nesne çoğaltmanın nasıl yapılandırılır gösterilmektedir.
Azure portalında nesne çoğaltmayı yapılandırırken, ilkeyi yalnızca kaynak hesapta yapılandırmanız gerekir. Kaynak hesap için yapılandırdıktan sonra Azure portalı hedef hesapta ilkeyi otomatik olarak oluşturur.
Azure portalında çoğaltma ilkesi oluşturmak için şu adımları izleyin:
Azure portalında kaynak depolama hesabına gidin.
Veri yönetimi'nin altında Nesne çoğaltma'yı seçin.
Çoğaltma kuralları oluştur'u seçin.
Hedef aboneliği ve depolama hesabını seçin.
Kapsayıcı çifti ayrıntıları bölümünde, kaynak hesaptan bir kaynak kapsayıcı ve hedef hesaptan bir hedef kapsayıcı seçin. Azure portalından çoğaltma ilkesi başına en fazla 10 kapsayıcı çifti oluşturabilirsiniz. 10'dan fazla kapsayıcı çifti (en çok 1000) yapılandırmak için bkz . JSON dosyası kullanarak nesne çoğaltmayı yapılandırma.
Aşağıdaki görüntüde bir dizi çoğaltma kuralı gösterilmektedir.
İsterseniz, yalnızca ön ek deseni ile eşleşen blobları kopyalamak için bir veya daha fazla filtre belirtin. Örneğin, bir ön ek bbelirtirseniz, yalnızca adı bu harfle başlayan bloblar çoğaltılır. Ön ekin bir parçası olarak bir sanal dizin belirtebilirsiniz. En fazla beş ön ek eşleşmesi ekleyebilirsiniz. Ön ek dizesi joker karakterleri desteklemez.
Aşağıdaki görüntüde, bir çoğaltma kuralının parçası olarak kopyalanan blobları kısıtlayan filtreler gösterilmektedir.
Varsayılan olarak, kopyalama kapsamı yalnızca yeni nesneleri kopyalanacak şekilde ayarlanır. Kapsayıcıdaki tüm nesneleri kopyalamak veya özel bir tarih ve saatten başlayarak nesneleri kopyalamak için, değişiklik bağlantısını seçin ve kapsayıcı çiftinin kopyalama kapsamını yapılandırın.
Aşağıdaki görüntüde, nesneleri belirtilen tarih ve saatten sonra kopyalayan özel bir kopyalama kapsamı gösterilmektedir.
Kaydet ve uygula'yı seçerek çoğaltma ilkesini oluşturun ve verileri çoğaltmaya başlayın.
Nesne çoğaltmayı yapılandırdıktan sonra, Azure portalı aşağıdaki görüntüde gösterildiği gibi çoğaltma ilkesini ve kurallarını görüntüler.
PowerShell ile çoğaltma ilkesi oluşturmak için önce Az.Depolama PowerShell modülünün 2.5.0 veya sonraki bir sürümünü yükleyin. Azure PowerShell'i yükleme hakkında daha fazla bilgi için bkz . PowerShellGet ile Azure PowerShell yükleme.
Aşağıdaki örnekte, önce hedef hesapta, ardından kaynak hesapta çoğaltma ilkesinin nasıl oluşturulacağı gösterilmektedir. Açılı ayraçlardaki değerleri kendi değerlerinizle değiştirmeyi unutmayın:
# Sign in to your Azure account.
Connect-AzAccount
# Set variables.
$rgName = "<resource-group>"
$srcAccountName = "<source-storage-account>"
$destAccountName = "<destination-storage-account>"
$srcContainerName1 = "source-container1"
$destContainerName1 = "dest-container1"
$srcContainerName2 = "source-container2"
$destContainerName2 = "dest-container2"
# Enable blob versioning and change feed on the source account.
Update-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName `
-EnableChangeFeed $true `
-IsVersioningEnabled $true
# Enable blob versioning on the destination account.
Update-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $destAccountName `
-IsVersioningEnabled $true
# List the service properties for both accounts.
Get-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName
Get-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $destAccountName
# Create containers in the source and destination accounts.
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $srcAccountName |
New-AzStorageContainer $srcContainerName1
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $destAccountName |
New-AzStorageContainer $destContainerName1
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $srcAccountName |
New-AzStorageContainer $srcContainerName2
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $destAccountName |
New-AzStorageContainer $destContainerName2
# Define replication rules for each container.
$rule1 = New-AzStorageObjectReplicationPolicyRule -SourceContainer $srcContainerName1 `
-DestinationContainer $destContainerName1 `
-PrefixMatch b
$rule2 = New-AzStorageObjectReplicationPolicyRule -SourceContainer $srcContainerName2 `
-DestinationContainer $destContainerName2 `
-MinCreationTime 2021-09-01T00:00:00Z
# Create the replication policy on the destination account.
$destPolicy = Set-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $destAccountName `
-PolicyId default `
-SourceAccount $srcAccountName `
-Rule $rule1,$rule2
# Create the same policy on the source account.
Set-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName `
-InputObject $destPolicy
Azure CLI ile çoğaltma ilkesi oluşturmak için önce Azure CLI sürüm 2.11.1 veya sonraki bir sürümü yükleyin. Daha fazla bilgi için bkz . Azure CLI ile çalışmaya başlama.
Ardından, az storage account blob-service-properties update komutunu çağırarak kaynak ve hedef depolama hesaplarında blob sürümü oluşturmayı etkinleştirin ve kaynak hesapta değişiklik akışını etkinleştirin. Açılı ayraçlardaki değerleri kendi değerlerinizle değiştirmeyi unutmayın:
az login
az storage account blob-service-properties update \
--resource-group <resource-group> \
--account-name <source-storage-account> \
--enable-versioning \
--enable-change-feed
az storage account blob-service-properties update \
--resource-group <resource-group> \
--account-name <dest-storage-account> \
--enable-versioning
Kaynak ve hedef kapsayıcıları ilgili depolama hesaplarında oluşturun.
Azure Depolama, yeni ilke oluşturulduğunda ilke kimliğini ayarlar. İlkeye ek kurallar eklemek için az storage account or-policy rule add komutunu çağırın ve ilke kimliğini sağlayın.
Ardından, ilke kimliğini kullanarak kaynak hesapta ilkeyi oluşturun.
az storage account or-policy show \
--resource-group <resource-group> \
--account-name <dest-storage-account> \
--policy-id <policy-id> |
az storage account or-policy create --resource-group <resource-group> \
--account-name <source-storage-account> \
--policy "@-"
JSON dosyası kullanarak nesne çoğaltmayı yapılandırma
Kaynak depolama hesabı üzerinde izinleriniz yoksa veya 10'dan fazla kapsayıcı çifti kullanmak istiyorsanız, hedef hesapta nesne çoğaltmayı yapılandırabilir ve kaynak hesapta aynı ilkeyi oluşturmak için başka bir kullanıcıya ilke tanımını içeren bir JSON dosyası sağlayabilirsiniz. Örneğin, kaynak hesap hedef hesaptan farklı bir Microsoft Entra kiracısındaysa, nesne çoğaltmayı yapılandırmak için bu yaklaşımı kullanabilirsiniz.
İlke tanımını içeren bir JSON dosyası yazma hakkında bilgi için bkz . İlke tanımı dosyası.
Dekont
Bir depolama hesabı için kiracılar arası nesne çoğaltmaya varsayılan olarak izin verilir. Kiracılar arasında çoğaltmayı önlemek için AllowCrossTenantReplication özelliğini, depolama hesaplarınız için kiracılar arası nesne çoğaltmasına izin vermeyecek şekilde ayarlayabilirsiniz. Daha fazla bilgi için bkz . Microsoft Entra kiracıları arasında nesne çoğaltmayı engelleme.
Bu bölümdeki örneklerde hedef hesapta nesne çoğaltma ilkesini yapılandırma ve ardından başka bir kullanıcının kaynak hesapta ilkeyi yapılandırmak için kullanabileceği bu ilke için JSON dosyasını alma işlemi gösterilmektedir.
Azure portalında JSON dosyasıyla hedef hesapta nesne çoğaltmayı yapılandırmak için şu adımları izleyin:
Hedef hesapta çoğaltma ilkesini tanımlayan yerel bir JSON dosyası oluşturun. policyId alanını varsayılan olarak ayarlayarak Azure Depolama ilke kimliğini tanımlamasını sağlayın.
Çoğaltma ilkesini tanımlayan bir JSON dosyası oluşturmanın kolay bir yolu, önce Azure portalında iki depolama hesabı arasında bir test çoğaltma ilkesi oluşturmaktır. Ardından çoğaltma kurallarını indirebilir ve JSON dosyasını gerektiği gibi değiştirebilirsiniz.
Azure portalında hedef hesabın Nesne çoğaltma ayarlarına gidin.
Çoğaltma kurallarını karşıya yükle'yi seçin.
JSON dosyasını karşıya yükleyin. Azure portalı, aşağıdaki görüntüde gösterildiği gibi oluşturulacak ilkeyi ve kuralları görüntüler.
Hedef hesapta çoğaltma ilkesi oluşturmak için Karşıya Yükle'yi seçin.
Ardından, kaynak hesabı yapılandırmak için başka bir kullanıcıya sağlayabileceğiniz ilke tanımını içeren bir JSON dosyasını indirebilirsiniz. Bu JSON dosyasını indirmek için şu adımları izleyin:
Azure portalında hedef hesabın Nesne çoğaltma ayarlarına gidin.
İndirmek istediğiniz ilkenin yanındaki Diğer düğmesini ve ardından aşağıdaki görüntüde gösterildiği gibi Kuralları indir'i seçin.
İlkeyi kaynak hesapta yapılandırmak üzere başka bir kullanıcıyla paylaşmak üzere JSON dosyasını yerel bilgisayarınıza kaydedin.
İndirilen JSON dosyası, Azure Depolama hedef hesapta ilke için oluşturduğu ilke kimliğini içerir. Kaynak hesapta nesne çoğaltmayı yapılandırmak için aynı ilke kimliğini kullanmanız gerekir.
Azure portalı aracılığıyla hedef hesap için çoğaltma ilkesi oluşturmak üzere bir JSON dosyasını karşıya yüklemenin kaynak hesapta otomatik olarak aynı ilkeyi oluşturmadığını unutmayın. Azure Depolama nesneleri çoğaltmaya başlamadan önce başka bir kullanıcının kaynak hesapta ilkeyi oluşturması gerekir.
PowerShell'den hedef hesabın çoğaltma ilkesi tanımını içeren bir JSON dosyası indirmek için Get-Az Depolama ObjectReplicationPolicy komutunu çağırarak ilkeyi döndürin. Ardından ilkeyi JSON'a dönüştürün ve aşağıdaki örnekte gösterildiği gibi yerel dosya olarak kaydedin. Açılı köşeli ayraçlardaki değerleri ve dosya yolunu kendi değerlerinizle değiştirmeyi unutmayın:
PowerShell ile kaynak hesapta çoğaltma ilkesini tanımlamak üzere JSON dosyasını kullanmak için yerel dosyayı alın ve JSON'dan bir nesneye dönüştürün. Ardından aşağıdaki örnekte gösterildiği gibi kaynak hesapta ilkeyi yapılandırmak için Set-Az Depolama ObjectReplicationPolicy komutunu çağırın.
Örneği çalıştırırken, parametresini kaynak hesabın -ResourceGroupName kaynak grubuna, parametresini -StorageAccountName ise kaynak hesabın adına ayarladığınızdan emin olun. Ayrıca, açılı köşeli ayraçlardaki değerleri ve dosya yolunu kendi değerlerinizle değiştirmeyi unutmayın:
Hedef hesabın çoğaltma ilkesi tanımını Azure CLI'dan bir JSON dosyasına yazmak için az storage account or-policy show komutunu çağırın ve bir dosyaya çıkış yapın.
Aşağıdaki örnek ilke tanımını policy.json adlı bir JSON dosyasına yazar. Açılı köşeli ayraçlardaki değerleri ve dosya yolunu kendi değerlerinizle değiştirmeyi unutmayın:
az storage account or-policy show \
--account-name <dest-account-name> \
--policy-id <policy-id> > policy.json
Azure CLI ile kaynak hesapta çoğaltma ilkesini yapılandırmak üzere JSON dosyasını kullanmak için az storage account or-policy create komutunu çağırın ve policy.json dosyasına başvurun. Açılı köşeli ayraçlardaki değerleri ve dosya yolunu kendi değerlerinizle değiştirmeyi unutmayın:
Azure portalını, PowerShell'i veya Azure CLI'yı kullanarak kaynak hesaptaki bir blob için çoğaltma durumunu de kontrol edebilirsiniz. Çoğaltma tamamlanana veya başarısız olana kadar nesne çoğaltma özellikleri doldurulamaz.
Azure portalındaki kaynak hesaptaki bir blob için çoğaltma durumunu denetlemek için şu adımları izleyin:
Azure portalında kaynak hesaba gidin.
Kaynak blobu içeren kapsayıcıyı bulun.
Özelliklerini görüntülemek için blobu seçin. Blob başarıyla çoğaltıldıysa, Nesne çoğaltma bölümünde durumun Tamamlandı olarak ayarlandığını görürsünüz. Bu kapsayıcı için nesne çoğaltmasını yöneten kuralın çoğaltma ilkesi kimliği ve kimliği de listelenir.
PowerShell ile kaynak hesaptaki bir blobun çoğaltma durumunu denetlemek için, aşağıdaki örnekte gösterildiği gibi replication ReplicationStatus özelliğinin değerini alın. Açılı ayraçlardaki değerleri kendi değerlerinizle değiştirmeyi unutmayın:
Azure CLI ile kaynak hesaptaki bir blobun çoğaltma durumunu denetlemek için, aşağıdaki örnekte gösterildiği gibi nesne çoğaltma durumu özelliğinin değerini alın:
Kaynak hesaptaki bir blob için çoğaltma durumu başarısız olduğunu gösteriyorsa aşağıdaki olası nedenleri araştırın:
Nesne çoğaltma ilkesinin hedef hesapta yapılandırıldığından emin olun.
Hedef kapsayıcının hala var olduğunu doğrulayın.
Kaynak blob, yazma işleminin bir parçası olarak müşteri tarafından sağlanan bir anahtarla şifrelendiyse nesne çoğaltma başarısız olur. Müşteri tarafından sağlanan anahtarlar hakkında daha fazla bilgi için bkz . Blob depolama isteğinde şifreleme anahtarı sağlama.
Çoğaltma ilkesini kaldırma
Çoğaltma ilkesini ve ilişkili kurallarını kaldırmak için Azure portalını, PowerShell'i veya CLI'yı kullanın.