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

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

Az erőforrásfájlok a Batchben helyezik el az adatokat egy virtuális gépre, de az adattípus és a használatuk 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 feladatban.
  • A tevékenységek által feldolgozandó bemeneti adatok kiépítése.

Gyakori fájlok lehetnek például a feladatok á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ási folyamata attól függően változik, hogy az eredeti adatok hol vannak tárolva, és hogy több fájlt kell-e létrehozni.

tároló URL-címének Storage

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őpont, í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
};

Megjegyzés

A tárolóhoz való hozzáféréshez mindkettőnek Read és List engedélynek kell lennie, míg blobhozzáférés esetén csak engedéllyel kell rendelkeznie 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 korlátozhatja a letöltéseket csak azokra a blobokra, 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ó szerepköréhez. 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ájlok eléréséhez meg kell adnia a Batch által használandó identitást.

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 alternatíva a tárolókhoz és azok blobjaihoz való névtelen, nyilvános olvasási hozzáférés engedélyezése az Azure Blob Storage-ban. Ezzel csak olvasási 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, amikor azt szeretné, hogy bizonyos blobok mindig elérhetők legyenek 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 ismertető cikket, amelyből többet is megtudhat a blobadatokhoz való hozzáférés kezeléséről.

Storage 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 férhet hozzá a blobadatokhoz. A használt tárolónak abban az Azure-tárfiókban kell lennie, amely a Batch-fiókhoz van társítva, más néven automatikus tárfiókként. Az automatikus tárolás tárolójának használatával megkerülheti a tárolók eléréséhez szükséges SAS URL-címek 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ásának 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 lesznek letöltve:

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 megadhat egy érvényes HTTP URL-címet, amely tartalmazza a bemeneti adatokat. Az URL-cím a Batch API-nak van megadva, majd az adatok egy erőforrásfájl létrehozásához lesznek felhasználva. Ez a módszer akkor használható, ha az erőforrásfájl létrehozásához szükséges adatok az Azure Storage vagy 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-t 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);

Url-címként definiált sztringet is használhat (vagy 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 található, felügyelt identitást használhat az erőforrásfájl közös hozzáférésű jogosultságkódjának létrehozása helyett.

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

Megjegyzés

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

Tippek és javaslatok

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. Az alábbi 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ött közös feladatfájlok vannak megosztva, érdemes lehet alkalmazáscsomagot használni a fájlok tartalmának biztosítására. 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áscsomagokkal nem kell manuálisan kezelnie több erőforrásfájlt, és nem kell SAS URL-címeket létrehoznia az Azure Storage fájljainak eléréséhez. A Batch a háttérben együttműködik az Azure Storage az alkalmazáscsomagok számítási csomópontokon való tárolására és üzembe helyezésére. Ha a feladatfájlok nem változnak gyakran, az alkalmazáscsomagok jó választásnak tűnhetnek 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 több száz erőforrásfájlt ad meg, előfordulhat, hogy a Batch elutasítja a tevékenységet túl nagyként. A legjobb, ha a tevékenységek kis méretűek maradnak, mivel minimalizálja a tevékenység erőforrásfájljainak számát.

Ha nem tudja 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 az 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