Delen via


Batch-eindpunten uitvoeren vanuit Event Grid-gebeurtenissen in opslag

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Event Grid is een volledig beheerde service die u kunt gebruiken om eenvoudig gebeurtenissen te beheren in veel verschillende Azure-services en -toepassingen. De service vereenvoudigt de manier waarop u gebeurtenisgestuurde en serverloze toepassingen bouwt. In deze zelfstudie leert u hoe u de taak van een batch-eindpunt activeert om bestanden te verwerken zodra deze zijn gemaakt in een opslagaccount. De architectuur maakt gebruik van een werkstroom voor logische apps om u te abonneren op deze gebeurtenissen en het eindpunt te activeren.

In het volgende diagram ziet u de architectuur voor deze oplossing:

Conceptueel diagram toont de onderdelen voor deze architectuur.

In de volgende stappen worden de stappen op hoog niveau in deze oplossing beschreven:

  1. Wanneer een nieuwe blob wordt gemaakt in een specifiek opslagaccount, wordt een gebeurtenis geactiveerd die is gemaakt door een bestand .

  2. De gebeurtenis wordt verzonden naar Event Grid om te worden verwerkt voor alle abonnees.

  3. De werkstroom van de logische app abonneert en luistert naar deze gebeurtenissen.

    Het opslagaccount kan meerdere gegevensassets bevatten, zodat gebeurtenisfiltering wordt toegepast om alleen te reageren op gebeurtenissen die plaatsvinden in een specifieke map in het opslagaccount. U kunt indien nodig verder filteren, bijvoorbeeld op basis van bestandsextensies.

  4. De werkstroom van de logische app wordt geactiveerd en voert de volgende acties uit:

    1. Hiermee haalt u een autorisatietoken op om batch-eindpunten aan te roepen met behulp van de referenties van een service-principal.

    2. Hiermee wordt het batch-eindpunt (standaardimplementatie) geactiveerd met behulp van het zojuist gemaakte bestand als invoer.

  5. Het batch-eindpunt retourneert de naam van de taak die is gemaakt om het bestand te verwerken.

Belangrijk

Wanneer u een werkstroom voor logische apps gebruikt die verbinding maakt met Event Grid om een batch-eindpunt aan te roepen, genereert u één taak per elk blobbestand dat in het opslagaccount is gemaakt. Houd er rekening mee dat batch-eindpunten het werk op bestandsniveau distribueren, dus er gebeurt geen parallelle uitvoering. In plaats daarvan gebruikt u de mogelijkheid van de batch-eindpunten om meerdere taken uit te voeren op hetzelfde rekencluster. Als u taken op volledige mappen automatisch wilt uitvoeren, raden we u aan over te schakelen naar batcheindpunten vanuit Azure Data Factory.

Vereisten

Verifiëren op basis van batch-eindpunten

Azure Logic Apps kan de REST API's van batcheindpunten aanroepen met behulp van de HTTP-actie . Batch-eindpunten ondersteunen Microsoft Entra-id voor autorisatie en daarom is voor de aanvraag voor de API's een juiste verificatieafhandeling vereist.

In deze zelfstudie wordt een service-principal gebruikt voor verificatie en interactie met batch-eindpunten in dit scenario.

  1. Maak een service-principal door een toepassing te volgen met Microsoft Entra ID en een service-principal te maken.

  2. Maak een geheim dat moet worden gebruikt voor verificatie door optie 3 te volgen : Maak een nieuw clientgeheim.

  3. Zorg ervoor dat u de gegenereerde waarde van het clientgeheim opslaat, die slechts eenmaal wordt weergegeven.

  4. Zorg ervoor dat u het client ID en het tenant id in het deelvenster Overzicht van de toepassing opslaat.

  5. Ververleent uw service-principal toegang tot uw werkruimte door toegang verlenen te volgen. Voor dit voorbeeld is het volgende vereist voor de service-principal:

    • Machtiging in de werkruimte om batchimplementaties te lezen en acties uit te voeren.
    • Machtigingen voor lezen/schrijven in gegevensarchieven.

Gegevenstoegang inschakelen

In deze zelfstudie worden cloud-URI's van Event Grid gebruikt om de invoergegevens aan te geven die u naar de implementatietaak wilt verzenden. Batch-eindpunten gebruiken de identiteit van de berekening om de gegevens te koppelen, terwijl de identiteit van de taak wordt behouden om de gekoppelde gegevens te lezen. U moet dus een door de gebruiker toegewezen beheerde identiteit toewijzen aan het rekencluster en ervoor zorgen dat het cluster toegang heeft om de onderliggende gegevens te koppelen. Volg deze stappen om gegevenstoegang te garanderen:

  1. Een beheerde identiteitsresource maken:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Werk het rekencluster bij om de beheerde identiteit te gebruiken die we hebben gemaakt:

    Notitie

    In deze voorbeelden wordt ervan uitgegaan dat u een rekencluster hebt gemaakt met de naam cpu-cluster die wordt gebruikt voor de standaardimplementatie in het eindpunt.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. Controleer in Azure Portal of de beheerde identiteit over de juiste machtigingen beschikt om de gegevens te lezen.

    Als u toegang wilt krijgen tot opslagservices, moet u ten minste toegang hebben tot opslagblobgegevenslezer tot het opslagaccount. Alleen eigenaren van opslagaccounts kunnen uw toegangsniveau wijzigen via Azure Portal.

Een logische app maken

  1. Selecteer in Azure Portal op de startpagina van Azure de optie Een resource maken.

  2. Selecteer op het Azure Marketplace-menu Integratie>Logische app.

    Schermopname van het menu Azure Marketplace met geselecteerde opties voor integratie en logische app.

  3. Geef in het deelvenster Logische app maken op het tabblad Basisinformatie de volgende informatie op over uw logische app-resource.

    Eigenschappen Vereist Weergegeven als Beschrijving
    Abonnement Ja <Azure-abonnementnaam> Uw Azure-abonnementnaam. In dit voorbeeld wordt gebruikgemaakt van Betalen per gebruik.
    Resourcegroep Ja LA-TravelTime-RG De Azure-resourcegroep waarin u uw logische app-resource en gerelateerde resources maakt. Deze naam moet uniek zijn in verschillende regio's en mag alleen letters, cijfers, afbreekstreepjes (-), onderstrepingstekens (_), haakjes ((, )) en punten (.) bevatten.
    Naam Ja LA-TravelTime De resourcenaam van uw logische app, die uniek moet zijn in verschillende regio's en mag alleen letters, cijfers, afbreekstreepjes (-), onderstrepingstekens (_), haakjes ((, )) en punten (.) bevatten.

    Schermopname van azure Portal, deelvenster voor het maken van logische apps en informatie voor nieuwe resource voor logische apps.

  4. Voordat u doorgaat met het maken van selecties, gaat u naar de sectie Plan . Selecteer Verbruik voor het type Abonnement om alleen de instellingen weer te geven voor een werkstroom voor logische apps verbruik, die wordt uitgevoerd in multitenant Azure Logic Apps.

    Belangrijk

    Voor werkruimten waarvoor Private Link is ingeschakeld, moet u het Standard-plan voor Azure Logic Apps gebruiken met configuratie van privénetwerken.

    De eigenschap Abonnementstype geeft ook het factureringsmodel op dat moet worden gebruikt.

    Abonnementtype Beschrijving
    Standaard Dit type logische app is de standaardselectie en wordt uitgevoerd in Azure Logic Apps met één tenant en maakt gebruik van het standard-prijsmodel.
    Verbruik Dit type logische app wordt uitgevoerd in globale, multitenant Azure Logic Apps en maakt gebruik van het prijsmodel Verbruik.
  5. Ga nu verder met de volgende selecties:

    Eigenschappen Vereist Weergegeven als Beschrijving
    Regio Ja VS - west De Azure-datacenterregio voor het opslaan van de gegevens van uw app. In dit voorbeeld wordt de voorbeeldlogica-app geïmplementeerd in de regio VS - west in Azure.
    Log Analytics inschakelen Ja Nee Deze optie wordt alleen weergegeven en is alleen van toepassing wanneer u het type logische app Verbruik selecteert. Wijzig deze optie alleen als u diagnostische logboekregistratie wilt inschakelen. Behoud voor deze zelfstudie de standaardselectie.
  6. Selecteer als u klaar bent de optie Beoordelen en maken. Nadat Azure de informatie over uw logische app-resource heeft gevalideerd, selecteert u Maken.

  7. Nadat uw app in Azure is geïmplementeerd, selecteert u Naar de resource gaan.

    Azure opent de werkstroomontwerper voor uw logische app.

De werkstroomparameters configureren

Deze werkstroom voor logische apps maakt gebruik van parameters voor het opslaan van specifieke gegevens die u nodig hebt om de batchimplementatie uit te voeren.

  1. Selecteer Parameters op de werkbalk van de werkstroomontwerper.

    Schermopname van het deelvenster Parameters voor het definiëren van parameters die vereist zijn voor de werkstroom.

  2. Selecteer in het deelvenster Parameters de optie Parameter maken en geef de volgende informatie op over elke parameter die u wilt maken:

    Tip

    Gebruik de waarden die bij Authenticating zijn geconfigureerd voor batch-eindpunten.

    Parameternaam Beschrijving Voorbeeldwaarde
    tenant_id De tenant-id waar het eindpunt is geïmplementeerd. 00000000-0000-0000-00000000
    client_id De client-id voor de service-principal die wordt gebruikt om het eindpunt aan te roepen. 00000000-0000-0000-00000000
    client_secret Het clientgeheim van de service-principal die wordt gebruikt om het eindpunt aan te roepen. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri De score-URI voor eindpunten.

    Belangrijk: deze URI is voor het eindpunt dat u wilt uitvoeren. Het eindpunt moet een standaardimplementatie hebben geconfigureerd.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    In het volgende voorbeeld ziet u een voorbeeldparameter:

    Schermopname van het toevoegen van één parameter in designer.

    Zie Parameters voor meerdere omgevingen maken voor werkstroominvoer in Azure Logic Apps voor meer informatie.

De trigger toevoegen

We willen de werkstroom van de logische app activeren telkens wanneer een nieuw bestand wordt gemaakt in een specifieke map (gegevensasset) van een opslagaccount. De logische app gebruikt de informatie van de gebeurtenis om het batch-eindpunt aan te roepen en het specifieke bestand door te geven dat moet worden verwerkt.

  1. Volg deze algemene stappen in de werkstroomontwerper om een Event Grid-trigger toe te voegen met de naam Wanneer een resource-gebeurtenis plaatsvindt.

  2. Selecteer in het vak verbindingsgegevens het verificatietype dat u wilt gebruiken en selecteer vervolgens Aanmelden.

  3. Geef in het triggervak de volgende informatie op:

    Eigenschappen Weergegeven als Beschrijving
    Resourcetype Microsoft.Storage.StorageAccounts Het resourcetype dat de gebeurtenissen verzendt.
    Abonnement De naam van uw abonnement Het abonnement voor het opslagaccount.
    Resourcenaam De naam van uw opslagaccount De naam van het opslagaccount waarin de bestanden worden gegenereerd.
    Item van gebeurtenistype Microsoft.Storage.BlobCreated Het gebeurtenistype.
  4. Selecteer voorvoegselfilter in de lijst Geavanceerde parameters en geef de volgende waarde op:

    /blobServices/default/containers/<container-name>/blobs/<path-to-data-folder>

    Belangrijk

    Met de eigenschap Voorvoegselfilter kan Event Grid alleen de werkstroom waarschuwen wanneer er een blob wordt gemaakt in het specifieke pad dat we hebben aangegeven. In dit geval gaan we ervan uit dat bestanden worden gemaakt door een extern proces in de map die is opgegeven door <de pad-naar-gegevensmap> in de containernaam<>, die zich in het geselecteerde opslagaccount bevindt. Configureer deze parameter zodat deze overeenkomt met de locatie van uw gegevens. Anders wordt de gebeurtenis geactiveerd voor elk bestand dat is gemaakt op een willekeurige locatie van het opslagaccount. Zie Gebeurtenisfiltering voor Event Grid voor meer informatie.

    In het volgende voorbeeld ziet u hoe de trigger wordt weergegeven:

    Schermopname van de triggeractiviteit van de logische app.

De acties configureren

  1. Voer onder De trigger Wanneer een resource-gebeurtenis plaatsvindt deze algemene stappen uit om de HTTP-actie toe te voegen. Wijzig de naam van de actie in Autoriseren.

  2. Geef in de actie Autoriseren de volgende informatie op:

    Eigenschappen Weergegeven als Opmerkingen
    Methode POST De HTTP-methode
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Als u deze expressie wilt invoeren, selecteert u in het URI-vak . Selecteer in de opties die worden weergegeven de expressie-editor (formulepictogram).
    Kopteksten Content-Type met waarde application/x-www-form-urlencoded
    Tekst concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Als u deze expressie wilt invoeren, selecteert u in het vak Hoofdtekst . Selecteer in de opties die worden weergegeven de expressie-editor (formulepictogram).

    In het volgende voorbeeld ziet u een voorbeeld van een autoriseren-actie :

    Schermopname van voorbeeldactie Autoriseren in de werkstroom van de logische app.

  3. Voeg onder de actie Autoriseren nog een HTTP-actie toe en wijzig de naam van de titel in Aanroepen.

  4. Geef in de actie Aanroepen de volgende informatie op:

    Eigenschappen Weergegeven als Opmerkingen
    Methode POST De HTTP-methode
    URI endpoint_uri Selecteer in het vak URI en selecteer vervolgens onder Parameters endpoint_uri.
    Kopteksten Content-Type met waarde application/json
    Kopteksten Authorization met waarde concat('Bearer ', body('Authorize')['access_token']) Als u deze expressie wilt invoeren, selecteert u in het vak Kopteksten . Selecteer in de opties die worden weergegeven de expressie-editor (formulepictogram).
  5. Selecteer in het vak Hoofdtekst en selecteer in de opties die worden weergegeven de expressie-editor (formulepictogram) om de volgende expressie in te voeren:

    replace('{
     "properties": {
       "InputData": {
         "mnistinput": {
            "JobInputType" : "UriFile",
            "Uri" : "<JOB_INPUT_URI>"
         }
       }
      }
    }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
    

    Tip

    De vorige nettolading komt overeen met een modelimplementatie. Als u met een implementatie van een pijplijnonderdeel werkt, past u de indeling aan volgens de verwachtingen van de invoer van de pijplijn. Zie Taken en invoergegevens maken voor batcheindpunten (REST) voor meer informatie over het structuren van de invoer in REST-aanroepen.

    In het volgende voorbeeld ziet u een voorbeeld van een aanroepactie :

    Schermopname van voorbeeldactie Aanroepen in de werkstroom van de logische app.

    Notitie

    De actie Aanroepen activeert de batchtaak, maar de actie wacht niet op de voltooiing ervan. Azure Logic Apps is standaard niet ingesteld voor langlopende toepassingen. Als u moet wachten tot de taak is voltooid, raden we u aan over te schakelen naar Batch-eindpunten uitvoeren vanuit Azure Data Factory.

  6. Sla uw werkstroom op als u gereed bent.

    De werkstroom van de logische app kan worden uitgevoerd en wordt automatisch geactiveerd telkens wanneer een nieuw bestand wordt gemaakt onder het aangegeven pad.

  7. Controleer de uitvoeringsgeschiedenis van de app om te bevestigen dat de app een gebeurtenis heeft ontvangen:

    Schermopname van de uitvoeringsgeschiedenis voor de werkstroom van de logische app.

Volgende stappen