Erőforrásfájlok létrehozása és használata

Az Azure Batch-feladatokhoz gyakran valamilyen adatformát kell feldolgozni. Az erőforrásfájlok segítségével ezeket az adatokat a Batch virtuális gép (VM) egy feladaton keresztül adhatja meg. Minden tevékenységtípus támogatja az erőforrásfájlokat: tevékenységek, tevékenységek indítása, feladat-előkészítési feladatok, feladatkiadási tevékenységek stb. Ez a cikk az erőforrásfájlok létrehozásának és virtuális gépen való elhelyezésének néhány gyakori módszerét ismerteti.

Az erőforrásfájlok adatokat helyeznek el egy virtuális gépre a Batchben, de az adatok típusa és felhasználása rugalmas. Vannak azonban gyakori használati esetek:

  • Általános fájlok kiépítése minden virtuális gépen erőforrásfájlok használatával egy indítási feladaton.
  • A tevékenységek által feldolgozandó bemeneti adatok kiépítése.

Gyakori fájlok lehetnek például a tevékenységek által futtatott alkalmazások telepítéséhez használt indítási feladat fájljai. A bemeneti adatok lehetnek nyers kép- vagy videoadatok, illetve a Batch által feldolgozandó információk.

Erőforrásfájlok típusai

Az erőforrásfájlok létrehozásához különböző lehetőségek állnak rendelkezésre, amelyek mindegyike saját metódusokkal rendelkezik. Az erőforrásfájlok létrehozásának folyamata attól függően változik, hogy hol tárolja az eredeti adatokat, és hogy több fájlt kell-e létrehozni.

Tároló URL-címe

A tároló URL-címének használata azt jelenti, hogy a megfelelő engedélyekkel az Azure bármely tárolójában elérheti a fájlokat.

Ebben a C#-példában a fájlok már blobtárolóként lettek feltöltve egy Azure Storage-tárolóba. Az erőforrásfájl létrehozásához szükséges adatok eléréséhez először hozzá kell férnünk a tárolóhoz. Ez többféleképpen is elvégezhető.

Közös hozzáférésű jogosultságkód

Hozzon létre egy közös hozzáférésű jogosultságkód (SAS) URI-t a tároló eléréséhez szükséges megfelelő engedélyekkel. Adja meg az SAS lejárati idejét és engedélyeit. Ebben az esetben nincs megadva kezdési idő, így az SAS azonnal érvényessé válik, és két órával a létrehozása után lejár.

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

Feljegyzés

A tárolóhozzáféréshez mindkettőnek Read és List engedélynek kell lennie, míg blobhozzáférés esetén csak engedélyre van szüksége Read .

Az engedélyek konfigurálása után hozza létre az SAS-jogkivonatot, és formázza az SAS URL-címet a tárolóhoz való hozzáféréshez. A tároló formázott SAS URL-címének használatával hozzon létre egy erőforrásfájlt a FromStorageContainerUrl használatával.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

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

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl);

Ha szükséges, a BlobPrefix tulajdonsággal csak azokra a blobokra korlátozhatja a letöltéseket, amelyeknek a neve egy megadott előtaggal kezdődik:

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

Felügyelt identitás

Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást , és rendelje hozzá az Storage Blob Data Reader Azure Storage-tárolóhoz tartozó szerepkört. Ezután rendelje hozzá a felügyelt identitást a készlethez, hogy a virtuális gépek hozzáférhessenek az identitáshoz. Végül a tárolóban lévő fájlokat úgy érheti el, hogy megadja a Batch használni kívánt identitásá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" });

Nyilvános hozzáférés

Az SAS URL-cím generálásának vagy a felügyelt identitások használatának másik lehetősége, ha névtelen, nyilvános olvasási hozzáférést engedélyez egy tárolóhoz és annak blobjaihoz az Azure Blob Storage-ban. Ezzel írásvédett hozzáférést biztosíthat ezekhez az erőforrásokhoz anélkül, hogy meg kellene osztania a fiókkulcsot, és nem kell SAS-t igényelnie. A nyilvános hozzáférést általában olyan helyzetekben használják, ahol azt szeretné, hogy bizonyos blobok mindig elérhetők legyenek a névtelen olvasási hozzáféréshez. Ha ez a forgatókönyv megfelel a megoldásnak, tekintse meg a tárolók és blobok névtelen nyilvános olvasási hozzáférésének konfigurálását, hogy többet tudjon meg a blobadatokhoz való hozzáférés kezeléséről.

Tároló neve (automatikus tárolás)

SAS-URL-cím konfigurálása és létrehozása helyett az Azure Storage-tároló nevével érheti el a blobadatokat. A használt tárolónak abban az Azure Storage-fiókban kell lennie, amely a Batch-fiókhoz van csatolva, más néven automatikus tárolófiókként. Az autostorage tároló használatával megkerülheti a tároló eléréséhez szükséges SAS URL-cím konfigurálását és létrehozását. Ehelyett a társított tárfiókban adja meg a tároló nevét.

Ha még nem rendelkezik automatikus tárfiókkal, a Tárfiókok létrehozásával és összekapcsolásával kapcsolatos részletekért tekintse meg a Batch-fiók létrehozása és összekapcsolása című szakasz lépéseit.

Az alábbi példa az AutoStorageContainer használatával hozza létre a fájlt az automatikus tárfiók adataiból.

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);

A tároló URL-címéhez hasonlóan a BlobPrefix tulajdonsággal is megadhatja, hogy mely blobok töltődjenek le:

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

Egyetlen erőforrásfájl a webes végpontról

Egyetlen erőforrásfájl létrehozásához megadhatja a bemeneti adatokat tartalmazó érvényes HTTP-URL-címet. Az URL-címet a Batch API adja meg, majd az adatok egy erőforrásfájl létrehozásához lesznek felhasználva. Ez a módszer használható, akár az erőforrásfájl létrehozásához szükséges adatok az Azure Storage-ban, akár bármely más webes helyen, például Egy GitHub-végponton találhatók.

Az alábbi példa a FromUrl használatával kéri le a fájlt egy érvényes URL-címet tartalmazó sztringből, majd létrehoz egy erőforrásfájlt, amelyet a feladat használ. Ehhez a forgatókönyvhöz nincs szükség hitelesítő adatokra. (A blobtároló használata esetén hitelesítő adatokra van szükség, kivéve, ha a nyilvános olvasási hozzáférés engedélyezve van a blobtárolón.)

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

Használhat egy URL-címként definiált sztringet is (vagy olyan sztringek kombinációját, amelyek együttesen hozzák létre a fájl teljes URL-címét).

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

Ha a fájl az Azure Storage-ban található, használhat felügyelt identitást ahelyett, hogy közös hozzáférésű jogosultságkódot hoz létre az erőforrásfájlhoz.

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

Feljegyzés

A felügyelt identitáshitelesítés csak az Azure Storage-ban lévő fájlokkal működik. A nanaged identitásnak szüksége van a Storage Blob Data Reader szerepkör-hozzárendelésre ahhoz a tárolóhoz, amelyben a fájl található, és a Batch-készlethez is hozzá kell rendelni.

Tippek és javaslatok

Az Azure Batch-feladatok sokféleképpen használhatják a fájlokat, ezért a Batch különböző lehetőségeket kínál a feladatok fájljainak kezelésére. A következő forgatókönyvek nem átfogóak, hanem néhány gyakori helyzetre vonatkoznak, és javaslatokat nyújtanak.

Sok erőforrásfájl

Ha a Batch-feladatban sok tevékenység közös feladatfájljai vannak megosztva, érdemes lehet alkalmazáscsomagot használni ezekhez a fájlokhoz. Az alkalmazáscsomagok optimalizálják a letöltési sebességet, és az alkalmazáscsomagokban lévő adatok gyorsítótárazva lesznek a feladatok között. Az alkalmazáscsomagok esetében nem kell manuálisan kezelnie több erőforrásfájlt, vagy SAS-URL-címeket létrehoznia a fájlok Azure Storage-ban való eléréséhez. A Batch a háttérben együttműködik az Azure Storage-ral az alkalmazáscsomagok számítási csomópontokon való tárolásához és üzembe helyezéséhez. Ha a feladatfájlok nem változnak gyakran, az alkalmazáscsomagok jó választásnak bizonyulhatnak a megoldáshoz.

Ezzel szemben, ha a tevékenységek mindegyike számos, az adott tevékenységhez egyedi fájllal rendelkezik, akkor valószínűleg az erőforrásfájlok a legjobbak. Az egyedi fájlokat használó feladatokat gyakran frissíteni vagy cserélni kell, ami nem olyan egyszerű az alkalmazáscsomag tartalmával. Az erőforrásfájlok további rugalmasságot biztosítanak az egyes fájlok frissítéséhez, hozzáadásához vagy szerkesztéséhez.

Erőforrásfájlok száma tevékenységenként

Ha egy tevékenység nagy számú erőforrásfájlt határoz meg, előfordulhat, hogy a Batch túl nagyként utasítja el a tevékenységet. Ez a feladathoz hozzáadott fájlok fájlneveinek vagy URL-címeinek teljes hosszától (valamint az identitáshivatkozástól) függ. A legjobb, ha a tevékenységek kis méretűek maradnak, ha minimalizálja a tevékenységen lévő erőforrásfájlok számát.

Ha nem lehet minimalizálni a tevékenységhez szükséges fájlok számát, optimalizálhatja a feladatot egyetlen erőforrásfájl létrehozásával, amely erőforrásfájlok tárolójára hivatkozik. Ehhez helyezze az erőforrásfájlokat egy Azure Storage-tárolóba, és használja a fent leírt módszerek egyikét az erőforrásfájlok igény szerinti létrehozásához.

Következő lépések