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ů vkládají data do virtuálního počítače ve službě Batch, ale typ dat a způsob jejich použití jsou 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.
  • Poskytně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 způsobů, 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ě

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 dobu platnosti a oprávnění pro 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í jak Read, tak List, zatímco s přístupem k objektům blob potřebujete pouze oprávnění Read.

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í naformátované adresy URL SAS pro kontejner úložiště vygenerujte soubor prostředků s použitím StorageContainerUri.

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 pouze pro čtení k těmto prostředkům, aniž byste sdíleli klíč účtu nebo vyžadovali SAS (sdílený přístupový podpis). 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 skladovacího kontejneru (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 pro automatické úložiště, podívejte se na kroky v části Vytvoření účtu Batch pro podrobnosti o vytvoření a propojení účtu úložiště.

Následující příklad používá AutoStorageContainerName 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 zdrojů 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á HttpUri k načtení souboru z řetězce, který obsahuje platnou adresu URL, a poté vygeneruje soubor prostředku, který bude použit 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. Spravovaná identita potřebuje Storage Blob Data Reader přiřazení role ke kontejneru, ve kterém 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 udržovat úkoly malé minimalizací počtu zdrojových souborů v rámci samotného ú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ředků, který odkazuje na kontejner úložiště s soubory 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