Java ile kaynak nesne URL'sinden blob kopyalama
Bu makalede, Java için Azure Depolama istemci kitaplığını kullanarak kaynak nesne URL'sinden blob kopyalama işlemi gösterilmektedir. Blobu aynı depolama hesabındaki bir kaynaktan, farklı bir depolama hesabındaki bir kaynaktan veya belirli bir URL'deki HTTP GET isteği aracılığıyla alınan erişilebilir nesnelerden kopyalayabilirsiniz.
Bu makalede ele alınan istemci kitaplığı yöntemleri, Blobu URL'den Yerleştir ve URL'den Blok Koy REST API işlemlerini kullanır. Bu yöntemler, verileri bir depolama hesabına taşımak istediğiniz ve kaynak nesnenin URL'sine sahip olmak istediğiniz kopyalama senaryoları için tercih edilir. Zaman uyumsuz zamanlama istediğiniz kopyalama işlemleri için bkz . Java kullanarak zaman uyumsuz zamanlama ile blob kopyalama.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Java Development Kit (JDK) sürüm 8 veya üzeri (en iyi deneyim için sürüm 17'yi öneririz)
- Apache Maven bu örnekte proje yönetimi için kullanılır
Ortamınızı ayarlama
Mevcut bir projeniz yoksa, bu bölümde Java için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Daha fazla bilgi için bkz. Azure Blob Depolama ve Java'yı kullanmaya başlama.
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Not
Bu makalede, örnek kodu derlemek ve çalıştırmak için Maven derleme aracı kullanılmaktadır. Gradle gibi diğer derleme araçları da Java için Azure SDK ile çalışır.
Paketleri yükleme
pom.xml
Dosyayı metin düzenleyicinizde açın. Bom dosyasını ekleyerek veya doğrudan bağımlılık ekleyerek paketleri yükleyin.
İçeri aktarma deyimleri ekleme
Aşağıdaki import
deyimlerini ekleyin:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Yetkilendirme
Yetkilendirme mekanizması, kopyalama işlemini gerçekleştirmek için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Verileri Katkıda Bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Url'den Blob Koyma (REST API) veya Url'den Blok Koy (REST API) yetkilendirme kılavuzu.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun.
Aşağıdaki örnek kullanarak bir BlobServiceClient
nesne DefaultAzureCredential
oluşturmak için BlobServiceClientBuilder'ı kullanır ve gerekirse kapsayıcı ve blob istemcilerinin nasıl oluşturulacağını gösterir:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
İ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.
Kaynak nesne URL'sinden blob kopyalama hakkında
İşlem, Put Blob From URL
blobun içeriğinin belirli bir URL'den okunduğu yeni bir blok blobu oluşturur. İşlem zaman uyumlu olarak tamamlar.
Kaynak, belirtilen URL'de standart bir HTTP GET isteği aracılığıyla alınabilir herhangi bir nesne olabilir. Buna blok blobları, ekleme blobları, sayfa blobları, blob anlık görüntüleri, blob sürümleri veya Azure içindeki veya dışındaki erişilebilir nesneler dahildir.
Kaynak nesne bir blok blobu olduğunda, işlenen tüm blob içeriği kopyalanır. Ancak, blok listesi korunmaz ve kaydedilmemiş bloklar kopyalanmamıştır. Hedef blobun içeriği kaynağın içeriğiyle aynıdır, ancak işlenen blok listesi korunmaz.
Hedef her zaman bir blok blobu, var olan bir blok blobu veya işlem tarafından oluşturulan yeni bir blok blobudur. Var olan bir blobun içeriğinin üzerine yeni blobun içeriği yazılır.
İşlem Put Blob From URL
her zaman kaynak blob'un tamamını kopyalar. Bayt aralığının veya blok kümesinin kopyalanması desteklenmez. Kaynak URL kullanarak blok blobunun içeriğinde kısmi güncelleştirmeler gerçekleştirmek için, Blok Listesini Koy ile birlikte URL'den Blok Koy API'sini kullanın.
Blob boyutu sınırlamaları ve faturalama konuları dahil olmak üzere işlem hakkında Put Blob From URL
daha fazla bilgi edinmek için bkz . URL'den Blob Ekleme açıklamaları.
Kaynak nesne URL'sinden blob kopyalama
Bu bölümde, kaynak nesne URL'sinden kopyalama işlemi gerçekleştirmek üzere Java için Azure Depolama istemci kitaplığı tarafından sağlanan yöntemlere genel bir bakış sunulmaktadır.
Aşağıdaki yöntemler Blobu URL'den Yerleştir REST API işlemini sarmalar ve blobun içeriğinin belirli bir URL'den okunduğu yeni bir blok blobu oluşturur:
Bu yöntemler, verileri bir depolama hesabına taşımak istediğiniz ve kaynak nesnenin URL'sine sahip olmak istediğiniz senaryolar için tercih edilir.
Büyük nesneler için tek tek bloklarla çalışabilirsiniz. Aşağıdaki yöntem, URL'den Blok Koy REST API işlemini sarmalar. Bu yöntem, içeriklerinin kaynak URL'den okunduğu bir blobun parçası olarak işlenecek yeni bir blok oluşturur:
Azure'da bir kaynaktan blob kopyalama
Azure'da bir kaynaktan blob kopya ediyorsanız, kaynak bloba erişim Microsoft Entra Kimliği, paylaşılan erişim imzası (SAS) veya hesap anahtarı aracılığıyla yetkilendirilebilir.
Aşağıdaki örnekte, Azure içindeki bir kaynak blobdan kopyalamaya yönelik bir senaryo gösterilmektedir. uploadFromUrl yöntemi, örnekte gösterildiği gibi mevcut blobun üzerine yazılıp yazılmayacağını belirtmek için isteğe bağlı olarak bir Boole parametresi kabul edebilir.
public void copyFromSourceInAzure(BlobClient sourceBlob, BlockBlobClient destinationBlob) {
// Get the source blob URL and create the destination blob
// set overwrite param to true if you want to overwrite an existing blob
destinationBlob.uploadFromUrl(sourceBlob.getBlobUrl(), false);
}
uploadFromUrlWithResponse yöntemi, işlem için diğer seçenekleri belirtmek üzere blobUploadFromUrlOptions parametresini de kabul edebilir.
Dış kaynaktan blob kopyalama
Azure dışındaki erişilebilir nesneler de dahil olmak üzere belirli bir URL'de HTTP GET isteği aracılığıyla alınabilen herhangi bir kaynak nesne üzerinde kopyalama işlemi gerçekleştirebilirsiniz. Aşağıdaki örnekte, erişilebilir bir kaynak nesne URL'sinden blob kopyalamaya yönelik bir senaryo gösterilmektedir.
public void copyFromExternalSource(String sourceURL, BlockBlobClient destinationBlob) {
// Create the destination blob from the source URL
// set overwrite param to true if you want to overwrite an existing blob
destinationBlob.uploadFromUrl(sourceURL, false);
}
Kaynaklar
Java için Azure Blob Depolama istemci kitaplığını kullanarak blobları kopyalama hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
REST API işlemleri
Java için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Java paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Bu makalede ele alınan istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:
İstemci kitaplığı kaynakları
İlgili içerik
- Bu makale, Java için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Java uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.