Kaynak dosyalarını oluşturma ve kullanma

Azure Batch görevi genellikle bir veri biçiminin işlenmesini gerektirir. Kaynak dosyaları, bu verileri batch sanal makinenize (VM) bir görev aracılığıyla sağlamanın yoludur. Tüm görev türleri kaynak dosyalarını destekler: görevler, başlangıç görevleri, iş hazırlama görevleri, iş yayın görevleri vb. Bu makalede, kaynak dosyaları oluşturma ve bunları bir VM'ye yerleştirmeye yönelik birkaç yaygın yöntem yer alır.

Kaynak dosyaları Batch'te bir VM'ye veri koyar, ancak veri türü ve nasıl kullanıldığı esnektir. Ancak bazı yaygın kullanım örnekleri vardır:

  • Başlangıç görevindeki kaynak dosyalarını kullanarak her VM'de ortak dosyalar sağlayın.
  • Görevler tarafından işlenecek giriş verilerini sağlama.

Yaygın dosyalar, örneğin, görevlerinizin çalıştıracağı uygulamaları yüklemek için kullanılan bir başlangıç görevindeki dosyalar olabilir. Giriş verileri ham görüntü veya video verileri ya da Batch tarafından işlenecek herhangi bir bilgi olabilir.

Kaynak dosya türleri

Her biri kendi yöntemlerine sahip kaynak dosyaları oluşturmak için kullanabileceğiniz birkaç farklı seçenek vardır. Kaynak dosyaları için oluşturma işlemi, özgün verilerin nerede depolandığına ve birden çok dosya oluşturulup oluşturulmayacağına bağlı olarak değişir.

  • kapsayıcı URL'sini Depolama: Azure'daki herhangi bir depolama kapsayıcısından kaynak dosyaları oluşturur.
  • Depolama kapsayıcı adı: Batch hesabınıza (otomatik fırtına hesabı) bağlı Azure depolama hesabındaki bir kapsayıcının adından kaynak dosyaları oluşturur.
  • Web uç noktasından tek kaynak dosyası: Geçerli herhangi bir HTTP URL'sinden tek bir kaynak dosyası oluşturur.

kapsayıcı URL'sini Depolama

Depolama kapsayıcısı URL'si kullanmak, doğru izinlerle Azure'daki herhangi bir depolama kapsayıcısında bulunan dosyalara erişebileceğiniz anlamına gelir.

Bu C# örneğinde dosyalar zaten blob depolama olarak bir Azure depolama kapsayıcısına yüklenmiştir. Kaynak dosyası oluşturmak için gereken verilere erişmek için öncelikle depolama kapsayıcısına erişmemiz gerekir. Bu işlem çeşitli yollarla yapılabilir.

Paylaşılan Erişim İmzası

Depolama kapsayıcısına erişmek için doğru izinlere sahip bir paylaşılan erişim imzası (SAS) URI'sini oluşturun. SAS için süre sonu süresini ve izinlerini ayarlayın. Bu durumda başlangıç zamanı belirtilmediğinden SAS hemen geçerli olur ve oluşturulduktan iki saat sonra sona erer.

SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
    Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List
};

Not

Kapsayıcı erişimi için hem hem de Read List izinlere sahip olmanız gerekirken blob erişiminde yalnızca izin gerekir Read .

İzinler yapılandırıldıktan sonra SAS belirtecini oluşturun ve depolama kapsayıcısına erişim için SAS URL'sini biçimlendirin. Depolama kapsayıcısı için biçimlendirilmiş SAS URL'sini kullanarak From Depolama ContainerUrl ile bir kaynak dosyası oluşturun.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

string sasToken = container.GetSharedAccessSignature(sasConstraints);
string containerSasUrl = String.Format("{0}{1}", container.Uri, sasToken);

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl);

İsterseniz blobPrefix özelliğini kullanarak indirmeleri yalnızca adı belirtilen ön ekle başlayan bloblarla sınırlandırabilirsiniz:

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl, blobPrefix = yourPrefix);

Yönetilen kimlik

Kullanıcı tarafından atanan bir yönetilen kimlik oluşturun ve Azure Storage Blob Data Reader Depolama kapsayıcınız için bu kimliği atayın. Ardından, vm'lerinizin kimliğe erişebilmesi için yönetilen kimliği havuzunuza atayın. Son olarak, kullanılacak Batch kimliğini belirterek kapsayıcınızdaki dosyalara erişebilirsiniz.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(container.Uri, identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" });

Genel erişim

SAS URL'si oluşturmanın veya yönetilen kimlik kullanmanın bir alternatifi, Azure Blob depolamada bir kapsayıcıya ve bloblarına anonim, genel okuma erişimini etkinleştirmektir. Bunu yaparak, hesap anahtarınızı paylaşmadan ve SAS gerektirmeden bu kaynaklara salt okunur erişim sağlayabilirsiniz. Genel erişim genellikle belirli blobların anonim okuma erişimi için her zaman kullanılabilir olmasını istediğiniz senaryolar için kullanılır. Bu senaryo çözümünüz için uygunsa blob verilerinize erişimi yönetme hakkında daha fazla bilgi edinmek için bkz . Kapsayıcılar ve bloblar için anonim genel okuma erişimini yapılandırma.

Depolama kapsayıcı adı (otomatik fırtınası)

SAS URL'sini yapılandırmak ve oluşturmak yerine Azure depolama kapsayıcınızın adını kullanarak blob verilerinize erişebilirsiniz. Kullandığınız depolama kapsayıcısı, Batch hesabınıza bağlı azure depolama hesabında olmalıdır ve bazen otomatik fırtına hesabı olarak da adlandırılır. Otomatik fırtına kapsayıcısını kullanmak, depolama kapsayıcısına erişmek için SAS URL'si yapılandırmayı ve oluşturmayı atlamanızı sağlar. Bunun yerine, bağlı depolama hesabınızdaki depolama kapsayıcısının adını sağlarsınız.

Henüz bir otomatik fırtınası hesabınız yoksa, depolama hesabı oluşturma ve bağlama hakkında ayrıntılı bilgi için Batch hesabı oluşturma başlığı altında yer alan adımlara bakın.

Aşağıdaki örnekte autostorage hesabındaki verilerden dosya oluşturmak için Auto Depolama Container kullanılır.

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);

Depolama kapsayıcısı URL'sinde olduğu gibi blobPrefix özelliğini kullanarak hangi blobların indirileceğini belirtebilirsiniz:

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName, blobPrefix = yourPrefix);

Web uç noktasından tek kaynak dosyası

Tek bir kaynak dosyası oluşturmak için giriş verilerinizi içeren geçerli bir HTTP URL'si belirtebilirsiniz. URL Batch API'sine sağlanır ve ardından veriler bir kaynak dosyası oluşturmak için kullanılır. Bu yöntem, kaynak dosyanızı oluşturmak için verilerin Azure Depolama'da veya GitHub uç noktası gibi başka bir web konumunda olması fark eder.

Aşağıdaki örnek, geçerli bir URL içeren bir dizeden dosyayı almak için FromUrl kullanır ve ardından göreviniz tarafından kullanılacak bir kaynak dosyası oluşturur. Bu senaryo için hiçbir kimlik bilgisi gerekmez. (Blob kapsayıcıda genel okuma erişimi etkinleştirilmediği sürece blob depolama kullanılıyorsa kimlik bilgileri gereklidir.)

ResourceFile inputFile = ResourceFile.FromUrl(yourURL, filePath);

Url olarak tanımladığınız bir dizeyi (veya birlikte dosyanızın tam URL'sini oluşturan dizelerin birleşimini) de kullanabilirsiniz.

ResourceFile inputFile = ResourceFile.FromUrl(yourDomain + yourFile, filePath);

Dosyanız Azure Depolama'deyse, kaynak dosyası için Paylaşılan Erişim İmzası oluşturmak yerine yönetilen kimlik kullanabilirsiniz.

ResourceFile inputFile = ResourceFile.FromUrl(yourURLFromAzureStorage, 
    identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name"},
    filePath: filepath
);

Not

Yönetilen kimlik kimlik doğrulaması yalnızca Azure Depolama'daki dosyalarla çalışır. Nanaged kimliği, dosyanın içinde olduğu kapsayıcı için rol atamasına ihtiyaç duyar Storage Blob Data Reader ve ayrıca Batch havuzuna atanmalıdır.

İpuçları ve öneriler

Azure Batch görevleri dosyaları birçok şekilde kullanabilir. Bu nedenle Batch, görevlerdeki dosyaları yönetmek için çeşitli seçenekler sunar. Aşağıdaki senaryoların kapsamlı olması amaçlanmamıştır, ancak birkaç yaygın durumu kapsar ve öneriler sağlar.

Birçok kaynak dosyası

Batch işinizdeki birçok görev arasında ortak görev dosyaları paylaşılıyorsa, bu dosyaları içerecek bir uygulama paketi kullanmak isteyebilirsiniz. Uygulama paketleri indirme hızı için iyileştirme sağlar ve uygulama paketlerindeki veriler görevler arasında önbelleğe alınır. Uygulama paketleriyle, Azure Depolama'daki dosyalara erişmek için birkaç kaynak dosyasını el ile yönetmeniz veya SAS URL'leri oluşturmanız gerekmez. Batch, uygulama paketlerini depolamak ve işlem düğümlerine dağıtmak için Azure Depolama ile arka planda çalışır. Görev dosyalarınız sık sık değişmiyorsa, uygulama paketleri çözümünüz için uygun olabilir.

Buna karşılık, görevlerinizin her birinde bu göreve özgü birçok dosya varsa, kaynak dosyaları büyük olasılıkla en iyi seçenektir. Benzersiz dosyalar kullanan görevlerin genellikle güncelleştirilmesi veya değiştirilmesi gerekir; bu, uygulama paketi içeriğiyle yapmak o kadar kolay değildir. Kaynak dosyaları tek tek dosyaları güncelleştirmek, eklemek veya düzenlemek için ek esneklik sağlar.

Görev başına kaynak dosyası sayısı

Bir görev çok sayıda kaynak dosyası belirttiğinde, Batch görevi çok büyük olarak reddedebilir. Bu, göreve eklenen tüm dosyalar için dosya adlarının veya URL'lerin (kimlik başvurusunun) toplam uzunluğuna bağlıdır. Görevdeki kaynak dosyalarının sayısını en aza indirerek görevlerinizi küçük tutmak en iyisidir.

Görevinizin ihtiyaç duyduğu dosya sayısını en aza indirmenin bir yolu yoksa, kaynak dosyalarının depolama kapsayıcısına başvuran tek bir kaynak dosyası oluşturarak görevi iyileştirebilirsiniz. Bunu yapmak için kaynak dosyalarınızı bir Azure Depolama kapsayıcısına yerleştirin ve gerektiğinde kaynak dosyaları oluşturmak için yukarıda açıklanan yöntemlerden birini kullanın.

Sonraki adımlar