Sdílet prostřednictvím


Vytváření a používání souborů prostředků

Úloha Azure Batch často vyžaduje zpracování určité formy dat. Soubory prostředků představují způsob, jak tato data poskytnout virtuálnímu počítači Batch prostřednictvím úlohy. Všechny typy úkolů podporují soubory zdrojů: úkoly, zahájení úkolů, úkoly přípravy úloh, úkoly uvolnění úloh atd. Tento článek popisuje několik běžných metod vytváření souborů prostředků a jejich umístění na virtuální počítač.

Soubory prostředků umísťuje data na virtuální počítač ve službě Batch, ale typ dat a způsob jejich použití je flexibilní. Existují však některé běžné případy použití:

  • Zřiďte společné soubory na každém virtuálním počítači pomocí souborů prostředků při spouštěcí úloze.
  • Zřiďte vstupní data, která budou zpracována úkoly.

Běžné soubory můžou být například soubory na spouštěcí úloze sloužící k instalaci aplikací, které vaše úlohy spouští. Vstupní data můžou být nezpracovaná data obrázku nebo videa nebo jakékoli informace, které má služba Batch zpracovat.

Typy souborů prostředků

Pro generování souborů prostředků existuje několik různých možností, z nichž každá má vlastní metody. Proces vytváření souborů prostředků se liší v závislosti na tom, kde jsou uložena původní data a jestli se má vytvořit více souborů.

  • Adresa URL kontejneru úložiště: Generuje soubory prostředků z libovolného kontejneru úložiště v Azure.
  • Název kontejneru úložiště: Vygeneruje soubory prostředků z názvu kontejneru v účtu úložiště Azure propojeném s vaším účtem Batch (účet automatického úložiště).
  • Jeden soubor prostředku z webového koncového bodu: Vygeneruje jeden soubor prostředku z libovolné platné adresy URL PROTOKOLU HTTP.

Adresa URL kontejneru úložiště

Použití adresy URL kontejneru úložiště znamená, že se správnými oprávněními můžete přistupovat k souborům v libovolném kontejneru úložiště v Azure.

V tomto příkladu jazyka C# se soubory už nahrály do kontejneru úložiště Azure jako úložiště objektů blob. Abychom získali přístup k datům potřebným k vytvoření souboru prostředků, musíme nejprve získat přístup k kontejneru úložiště. To lze provést několika způsoby.

Sdílený přístupový podpis

Vytvořte identifikátor URI sdíleného přístupového podpisu (SAS) se správnými oprávněními pro přístup ke kontejneru úložiště. Nastavte čas vypršení platnosti a oprávnění sas. V tomto případě není zadán žádný počáteční čas, takže SAS se okamžitě stane platným a vyprší dvě hodiny po jeho vygenerování.

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

Poznámka:

Pro přístup ke kontejneru musíte mít oprávnění i Read List oprávnění, zatímco s přístupem k objektům blob potřebujete Read jenom oprávnění.

Po nakonfigurování oprávnění vytvořte token SAS a naformátujte adresu URL SAS pro přístup k kontejneru úložiště. Pomocí formátované adresy URL SAS pro kontejner úložiště vygenerujte soubor prostředku pomocí FromStorageContainerUrl.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

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

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl);

V případě potřeby můžete pomocí vlastnosti blobPrefix omezit stahování pouze na objekty blob, jejichž název začíná zadanou předponou:

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

Spravovaná identita

Vytvořte spravovanou identitu přiřazenou uživatelem a přiřaďte jí Storage Blob Data Reader roli kontejneru Azure Storage. Dále přiřaďte spravovanou identitu k vašemu fondu, aby vaše virtuální počítače mohly získat přístup k identitě. Nakonec můžete přistupovat k souborům ve vašem kontejneru zadáním identity, kterou má služba Batch použít.

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" });

Veřejný přístup

Alternativou k vygenerování adresy URL SAS nebo použití spravované identity je povolení anonymního, veřejného přístupu pro čtení ke kontejneru a jeho objektům blob ve službě Azure Blob Storage. Tímto způsobem můžete udělit přístup jen pro čtení k těmto prostředkům bez sdílení klíče účtu a bez vyžadování sdíleného přístupového podpisu. Veřejný přístup se obvykle používá ve scénářích, ve kterých chcete, aby určité objekty blob byly vždy dostupné pro anonymní přístup pro čtení. Pokud tento scénář vyhovuje vašemu řešení, přečtěte si téma Konfigurace anonymního veřejného přístupu pro čtení kontejnerů a objektů blob, kde najdete další informace o správě přístupu k datům objektů blob.

Název kontejneru úložiště (autostorage)

Místo konfigurace a vytvoření adresy URL SAS můžete pro přístup k datům objektů blob použít název kontejneru úložiště Azure. Kontejner úložiště, který použijete, musí být v účtu úložiště Azure, který je propojený s vaším účtem Batch, někdy označovaný jako účet automatického úložiště. Pomocí kontejneru autostorage můžete obejít konfiguraci a vytvoření adresy URL SAS pro přístup ke kontejneru úložiště. Místo toho do propojeného účtu úložiště zadáte název kontejneru úložiště.

Pokud ještě nemáte účet autostorage, přečtěte si kroky v části Vytvoření účtu Batch, kde najdete podrobnosti o tom, jak vytvořit a propojit účet úložiště.

Následující příklad používá AutoStorageContainer k vygenerování souboru z dat v účtu autostorage.

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);

Stejně jako u adresy URL kontejneru úložiště můžete pomocí vlastnosti blobPrefix určit, které objekty blob se stáhnou :

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

Jeden soubor prostředků z webového koncového bodu

Pokud chcete vytvořit jeden soubor prostředků, můžete zadat platnou adresu URL HTTP obsahující vaše vstupní data. Adresa URL se poskytne rozhraní API služby Batch a pak se data použijí k vytvoření souboru prostředků. Tuto metodu můžete použít bez ohledu na to, jestli jsou data k vytvoření souboru prostředků ve službě Azure Storage nebo v jakémkoli jiném webovém umístění, jako je koncový bod GitHubu.

Následující příklad používá FromUrl k načtení souboru z řetězce, který obsahuje platnou adresu URL, a poté vygeneruje soubor prostředku, který bude používán vaším úkolem. Pro tento scénář nejsou potřeba žádné přihlašovací údaje. (Přihlašovací údaje se vyžadují, pokud není v kontejneru objektů blob povolen veřejný přístup pro čtení.)

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

Můžete také použít řetězec, který definujete jako adresu URL (nebo kombinaci řetězců, které společně vytvoří úplnou adresu URL souboru).

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

Pokud je váš soubor ve službě Azure Storage, můžete použít spravovanou identitu místo generování sdíleného přístupového podpisu pro soubor prostředků.

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

Poznámka:

Ověřování spravované identity bude fungovat jenom se soubory ve službě Azure Storage. Nanaged identita potřebuje Storage Blob Data Reader přiřazení role pro kontejner, ve které je soubor, a musí být také přiřazena k fondu Batch.

Tipy a návrhy

Úlohy Služby Azure Batch můžou soubory používat mnoha způsoby, což je důvod, proč batch poskytuje různé možnosti pro správu souborů v úkolech. Následující scénáře nemají být komplexní, ale pokrývají několik běžných situací a poskytují doporučení.

Mnoho souborů prostředků

Pokud jsou běžné soubory úkolů sdíleny mezi mnoha úkoly v úloze Batch, můžete k zahrnutí těchto souborů použít balíček aplikace. Balíčky aplikací poskytují optimalizaci rychlosti stahování a data v balíčcích aplikací se ukládají do mezipaměti mezi úlohami. S balíčky aplikací nemusíte ručně spravovat několik souborů prostředků ani generovat adresy URL SAS pro přístup k souborům ve službě Azure Storage. Služba Batch funguje na pozadí se službou Azure Storage pro ukládání a nasazování balíčků aplikací do výpočetních uzlů. Pokud se soubory úkolů často nemění, můžou být balíčky aplikací vhodné pro vaše řešení.

Naopak pokud mají vaše úkoly mnoho souborů jedinečných pro daný úkol, jsou soubory zdrojů pravděpodobně nejlepší volbou. Úlohy, které používají jedinečné soubory, je často potřeba aktualizovat nebo nahradit, což není tak snadné s obsahem balíčku aplikace. Soubory prostředků poskytují větší flexibilitu při aktualizaci, přidávání nebo úpravách jednotlivých souborů.

Počet souborů zdrojů na úkol

Pokud úkol určuje velký počet souborů zdrojů, služba Batch může úkol odmítnout jako příliš velký. To závisí na celkové délce názvů souborů nebo adres URL (stejně jako odkazů na identitu) pro všechny soubory přidané do úkolu. Nejlepší je zachovat malé úkoly minimalizací počtu souborů zdrojů na samotném úkolu.

Pokud neexistuje způsob, jak minimalizovat počet souborů, které váš úkol potřebuje, můžete úlohu optimalizovat vytvořením jednoho souboru prostředku, který odkazuje na kontejner úložiště souborů prostředků. Uděláte to tak, že soubory prostředků umístíte do kontejneru Azure Storage a použijete některou z výše popsaných metod k vygenerování souborů prostředků podle potřeby.

Další kroky