Share via


Resourcebestanden maken en gebruiken

Een Azure Batch-taak vereist vaak een vorm van gegevens die moeten worden verwerkt. Resourcebestanden zijn de manier om deze gegevens via een taak aan uw virtuele Batch-machine (VM) te verstrekken. Alle typen taken ondersteunen resourcebestanden: taken, begintaken, jobvoorbereidingstaken, jobreleasetaken, enzovoort. In dit artikel worden enkele algemene methoden beschreven voor het maken van resourcebestanden en deze op een virtuele machine plaatsen.

Resourcebestanden plaatsen gegevens op een VIRTUELE machine in Batch, maar het type gegevens en hoe deze worden gebruikt, is flexibel. Er zijn echter enkele veelvoorkomende use cases:

  • Richt algemene bestanden op elke VIRTUELE machine in met behulp van resourcebestanden voor een begintaak.
  • Invoergegevens inrichten die door taken moeten worden verwerkt.

Veelvoorkomende bestanden kunnen bijvoorbeeld bestanden zijn op een begintaak die wordt gebruikt om toepassingen te installeren die door uw taken worden uitgevoerd. Invoergegevens kunnen onbewerkte afbeeldings- of videogegevens zijn, of informatie die door Batch moet worden verwerkt.

Typen resourcebestanden

Er zijn verschillende opties beschikbaar voor het genereren van resourcebestanden, elk met hun eigen methoden. Het aanmaakproces voor resourcebestanden varieert, afhankelijk van waar de oorspronkelijke gegevens worden opgeslagen en of er meerdere bestanden moeten worden gemaakt.

  • URL van opslagcontainer: genereert resourcebestanden van elke opslagcontainer in Azure.
  • Naam van opslagcontainer: genereert resourcebestanden op basis van de naam van een container in het Azure-opslagaccount dat is gekoppeld aan uw Batch-account (het automatische opslagaccount).
  • Eén resourcebestand van het webeindpunt: genereert één resourcebestand op basis van een geldige HTTP-URL.

URL van opslagcontainer

Als u een URL voor een opslagcontainer gebruikt, hebt u met de juiste machtigingen toegang tot bestanden in elke opslagcontainer in Azure.

In dit C#-voorbeeld zijn de bestanden al als blobopslag geüpload naar een Azure-opslagcontainer. Voor toegang tot de gegevens die nodig zijn om een resourcebestand te maken, moeten we eerst toegang krijgen tot de opslagcontainer. Dit kan op verschillende manieren worden gedaan.

Gedeelde handtekening voor toegang

Maak een SAS-URI (Shared Access Signature) met de juiste machtigingen voor toegang tot de opslagcontainer. Stel de verlooptijd en machtigingen voor de SAS in. In dit geval wordt er geen begintijd opgegeven, dus de SAS wordt onmiddellijk geldig en verloopt twee uur nadat deze is gegenereerd.

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

Notitie

Voor containertoegang moet u zowel als ReadList machtigingen hebben, terwijl u met blobtoegang alleen machtigingen nodig hebt Read .

Zodra de machtigingen zijn geconfigureerd, maakt u het SAS-token en maakt u de SAS-URL op voor toegang tot de opslagcontainer. Genereer met behulp van de opgemaakte SAS-URL voor de opslagcontainer een resourcebestand met 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);

Desgewenst kunt u de eigenschap blobPrefix gebruiken om downloads te beperken tot alleen de blobs waarvan de naam begint met een opgegeven voorvoegsel:

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

Beheerde identiteit

Maak een door de gebruiker toegewezen beheerde identiteit en wijs deze toe aan de Storage Blob Data Reader rol voor uw Azure Storage-container. Wijs vervolgens de beheerde identiteit toe aan uw pool, zodat uw VM's toegang hebben tot de identiteit. Ten slotte hebt u toegang tot de bestanden in uw container door de identiteit op te geven die Batch moet gebruiken.

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

Openbare toegang

Een alternatief voor het genereren van een SAS-URL of het gebruik van een beheerde identiteit is het inschakelen van anonieme, openbare leestoegang tot een container en de bijbehorende blobs in Azure Blob Storage. Hierdoor kunt u alleen-lezentoegang verlenen tot deze resources zonder uw accountsleutel te delen en zonder dat hiervoor een SAS is vereist. Openbare toegang wordt doorgaans gebruikt voor scenario's waarin bepaalde blobs altijd beschikbaar moeten zijn voor anonieme leestoegang. Als dit scenario bij uw oplossing past, raadpleegt u Anonieme openbare leestoegang configureren voor containers en blobs voor meer informatie over het beheren van de toegang tot uw blobgegevens.

Naam van opslagcontainer (autostorage)

In plaats van een SAS-URL te configureren en te maken, kunt u de naam van uw Azure Storage-container gebruiken om toegang te krijgen tot uw blobgegevens. De opslagcontainer die u gebruikt, moet zich in het Azure-opslagaccount bevinden dat is gekoppeld aan uw Batch-account, ook wel het autostorage-account genoemd. Met behulp van de container voor automatisch opslaan kunt u het configureren en maken van een SAS-URL overslaan voor toegang tot een opslagcontainer. In plaats daarvan geeft u de naam op van de opslagcontainer in uw gekoppelde opslagaccount.

Als u nog geen autostorage-account hebt, raadpleegt u de stappen in Een Batch-account maken voor meer informatie over het maken en koppelen van een opslagaccount.

In het volgende voorbeeld wordt AutoStorageContainer gebruikt om het bestand te genereren op basis van gegevens in het autostorage-account.

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);

Net als bij een OPSLAGcontainer-URL kunt u de eigenschap blobPrefix gebruiken om op te geven welke blobs worden gedownload:

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

Eén resourcebestand van het webeindpunt

Als u één resourcebestand wilt maken, kunt u een geldige HTTP-URL opgeven die uw invoergegevens bevat. De URL wordt verstrekt aan de Batch-API en vervolgens worden de gegevens gebruikt om een resourcebestand te maken. Deze methode kan worden gebruikt of de gegevens voor het maken van uw resourcebestand zich in Azure Storage bevinden of op een andere weblocatie, zoals een GitHub-eindpunt.

In het volgende voorbeeld wordt FromUrl gebruikt om het bestand op te halen uit een tekenreeks die een geldige URL bevat, waarna een resourcebestand wordt gegenereerd dat door uw taak moet worden gebruikt. Er zijn geen referenties nodig voor dit scenario. (Referenties zijn vereist als u blobopslag gebruikt, tenzij openbare leestoegang is ingeschakeld in de blobcontainer.)

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

U kunt ook een tekenreeks gebruiken die u definieert als EEN URL (of een combinatie van tekenreeksen die samen de volledige URL voor uw bestand maken).

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

Als uw bestand zich in Azure Storage bevindt, kunt u een beheerde identiteit gebruiken in plaats van een Shared Access Signature voor het resourcebestand te genereren.

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

Notitie

Verificatie van beheerde identiteit werkt alleen met bestanden in Azure Storage. De identiteit van de nanaged heeft de Storage Blob Data Reader roltoewijzing nodig voor de container waarin het bestand zich bevindt en moet ook worden toegewezen aan de Batch-pool.

Tips en suggesties

Azure Batch-taken kunnen op veel manieren bestanden gebruiken. Daarom biedt Batch verschillende opties voor het beheren van bestanden op taken. De volgende scenario's zijn niet bedoeld om uitgebreid te zijn, maar hebben betrekking op een aantal veelvoorkomende situaties en aanbevelingen.

Veel resourcebestanden

Als algemene taakbestanden worden gedeeld tussen veel taken in uw Batch-taak, kunt u een toepassingspakket gebruiken om deze bestanden te bevatten. Toepassingspakketten bieden optimalisatie voor downloadsnelheid en gegevens in toepassingspakketten worden in de cache opgeslagen tussen taken. Met toepassingspakketten hoeft u niet handmatig meerdere resourcebestanden te beheren of SAS-URL's te genereren voor toegang tot de bestanden in Azure Storage. Batch werkt op de achtergrond met Azure Storage om toepassingspakketten op te slaan en te implementeren op rekenknooppunten. Als uw taakbestanden niet vaak veranderen, zijn toepassingspakketten mogelijk geschikt voor uw oplossing.

Als uw taken echter elk veel bestanden bevatten die uniek zijn voor die taak, zijn resourcebestanden waarschijnlijk de beste optie. Taken die gebruikmaken van unieke bestanden, moeten vaak worden bijgewerkt of vervangen, wat niet zo eenvoudig te doen is met inhoud van het toepassingspakket. Resourcebestanden bieden extra flexibiliteit voor het bijwerken, toevoegen of bewerken van afzonderlijke bestanden.

Aantal resourcebestanden per taak

Wanneer een taak een groot aantal resourcebestanden opgeeft, kan Batch de taak negeren als te groot. Dit is afhankelijk van de totale lengte van de bestandsnamen of URL's (evenals identiteitsreferenties) voor alle bestanden die aan de taak zijn toegevoegd. Het is raadzaam om uw taken klein te houden door het aantal resourcebestanden voor de taak zelf te minimaliseren.

Als er geen manier is om het aantal bestanden te minimaliseren dat uw taak nodig heeft, kunt u de taak optimaliseren door één resourcebestand te maken dat verwijst naar een opslagcontainer met resourcebestanden. Hiervoor plaatst u uw resourcebestanden in een Azure Storage-container en gebruikt u een van de hierboven beschreven methoden om indien nodig resourcebestanden te genereren.

Volgende stappen