Dela via


Köra batchslutpunkter från Event Grid-händelser i lagring

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Event Grid är en fullständigt hanterad tjänst som du kan använda för att enkelt hantera händelser i många olika Azure-tjänster och program. Tjänsten förenklar hur du skapar händelsedrivna och serverlösa program. Den här självstudien visar hur du utlöser en batchslutpunkts jobb för att bearbeta filer så snart de har skapats i ett lagringskonto. Arkitekturen använder ett logikapparbetsflöde för att prenumerera på dessa händelser och utlösa slutpunkten.

Följande diagram visar arkitekturen för den här lösningen:

Konceptdiagram visar komponenterna för den här arkitekturen.

Följande steg beskriver de övergripande stegen i den här lösningen:

  1. När en ny blob skapas i ett specifikt lagringskonto utlöses en fil skapad händelse.

  2. Händelsen skickas till Event Grid för att bearbetas till alla prenumeranter.

  3. Logikappens arbetsflöde prenumererar och lyssnar på dessa händelser.

    Lagringskontot kan innehålla flera datatillgångar, så händelsefiltrering tillämpas för att endast reagera på händelser som inträffar i en specifik mapp i lagringskontot. Ytterligare filtrering kan göras om det behövs, till exempel baserat på filnamnstillägg.

  4. Arbetsflödet för logikappen utlöses och utför följande åtgärder:

    1. Hämtar en auktoriseringstoken för att anropa batchslutpunkter med autentiseringsuppgifterna från tjänstens huvudnamn.

    2. Utlöser batchslutpunkten (standarddistribution) med den nyligen skapade filen som indata.

  5. Batchslutpunkten returnerar namnet på det jobb som skapades för att bearbeta filen.

Viktigt!

När du använder ett logikapparbetsflöde som ansluter till Event Grid för att anropa batchslutpunkten genererar du ett jobb per varje blobfil som skapas i lagringskontot. Tänk på att batchslutpunkter distribuerar arbetet på filnivå, så ingen parallellisering sker. I stället använder du batchslutpunkternas funktion för att köra flera jobb i samma beräkningskluster. Om du behöver köra jobb på hela mappar automatiskt rekommenderar vi att du växlar till Anropa batchslutpunkter från Azure Data Factory.

Förutsättningar

  • Du har en modell korrekt distribuerad som en batchslutpunkt. Du kan utöka den här arkitekturen så att den fungerar med pipelinekomponentdistributioner om det behövs.

  • Batchdistributionen körs i ett beräkningskluster med namnet batch-cluster.

  • Logikappen som du skapar kommunicerar med Azure Mašinsko učenje batchslutpunkter med hjälp av REST.

    Mer information om hur du använder REST API för batchslutpunkter finns i Skapa jobb och indata för batchslutpunkter.

Autentisera mot batchslutpunkter

Azure Logic Apps kan anropa REST-API:er för batchslutpunkter med hjälp av HTTP-åtgärden . Batch-slutpunkter stöder Microsoft Entra-ID för auktorisering och därför kräver begäran som görs till API:erna en korrekt autentiseringshantering.

I den här självstudien används tjänstens huvudnamn för autentisering och interaktion med batchslutpunkter i det här scenariot.

  1. Skapa ett huvudnamn för tjänsten genom att följa Registrera ett program med Microsoft Entra-ID och skapa ett huvudnamn för tjänsten.

  2. Skapa en hemlighet som ska användas för autentisering genom att följa alternativ 3: Skapa en ny klienthemlighet.

  3. Se till att spara det genererade klienthemlighetsvärdet, som bara visas en gång.

  4. Se till att spara client ID och i programmets översiktsfönster.tenant id

  5. Ge tjänstens huvudnamn åtkomst till din arbetsyta genom att följa Bevilja åtkomst. I det här exemplet kräver tjänstens huvudnamn följande:

    • Behörighet på arbetsytan att läsa batchdistributioner och utföra åtgärder över dem.
    • Behörighet att läsa/skriva i datalager.

Aktivera dataåtkomst

För att ange indata som du vill skicka till distributionsjobbet använder den här självstudien moln-URI:er som tillhandahålls av Event Grid. Batch-slutpunkter använder identiteten för beräkningen för att montera data, samtidigt som jobbets identitet behålls för att läsa monterade data. Därför måste du tilldela en användartilldelad hanterad identitet till beräkningsklustret och se till att klustret har åtkomst till att montera underliggande data. Följ dessa steg för att säkerställa dataåtkomst:

  1. Skapa en hanterad identitetsresurs:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Uppdatera beräkningsklustret så att det använder den hanterade identitet som vi skapade:

    Kommentar

    Det här exemplet förutsätter att du har ett beräkningskluster skapat med namnet cpu-cluster som används för standarddistributionen i slutpunkten.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. I Azure-portalen kontrollerar du att den hanterade identiteten har rätt behörighet för att läsa data.

    För att få åtkomst till lagringstjänster måste du ha minst åtkomst till lagringskontot för Blob Data Reader . Endast lagringskontoägare kan ändra åtkomstnivån via Azure-portalen.

Skapa en logikapp

  1. På Azure-portalen går du till Startsidan för Azure och väljer Skapa en resurs.

  2. På Azure Marketplace-menyn väljer du Integreringslogikapp>.

    Skärmbild som visar Azure Marketplace-menyn med valda alternativ för integrering och logikapp.

  3. I fönstret Skapa logikappfliken Grundläggande anger du följande information om logikappresursen.

    Property Obligatoriskt Värde beskrivning
    Abonnemang Ja <Namn-på-Azure-prenumeration> Ditt Azure-prenumerationsnamn. I det här exemplet används Betala per användning.
    Resursgrupp Ja LA-TravelTime-RG Den Azure-resursgrupp där du skapar din logikappresurs och relaterade resurser. Det här namnet måste vara unikt mellan regioner och får endast innehålla bokstäver, siffror, bindestreck (-), understreck (_), parenteser ((, )) och punkter (.).
    Namn Ja LA-TravelTime Resursnamnet för logikappen, som måste vara unikt mellan regioner och endast får innehålla bokstäver, siffror, bindestreck (-), understreck (_), parenteser ((, )) och perioder (.).

    Skärmbild som visar Azure-portalen, fönstret för skapande av logikappar och information om den nya logikappresursen.

  4. Innan du fortsätter att göra val går du till avsnittet Planera . Som Plantyp väljer du Förbrukning för att endast visa inställningarna för ett arbetsflöde för förbrukningslogikappen, som körs i Azure Logic Apps med flera klientorganisationer.

    Viktigt!

    För privata länkaktiverade arbetsytor måste du använda standardplanen för Azure Logic Apps med tillåten konfiguration av privata nätverk.

    Egenskapen Plantyp anger också den faktureringsmodell som ska användas.

    Abonnemangstyp beskrivning
    Standard Den här logikapptypen är standardvalet och körs i Azure Logic Apps med en enda klientorganisation och använder prismodellen Standard.
    Förbrukning Den här logikappstypen körs i globala, multitenanta Azure Logic Apps och använder prismodellen Förbrukning.
  5. Fortsätt nu med följande val:

    Property Obligatoriskt Värde beskrivning
    Region Ja USA, västra Azure-datacenterregionen för lagring av din apps information. Det här exemplet distribuerar exempellogikappen till regionen USA , västra i Azure.
    Aktivera logganalys Ja Nej Det här alternativet visas och gäller endast när du väljer apptypen Förbrukningslogik . Ändra endast det här alternativet när du vill aktivera diagnostikloggning. Behåll standardvalet för den här självstudien.
  6. När du är klar väljer du Granska + skapa. När Azure har verifierat informationen om din logikappresurs väljer du Skapa.

  7. När Azure har distribuerat din app väljer du Gå till resurs.

    Azure öppnar arbetsflödesdesignern för logikappen.

Konfigurera arbetsflödesparametrarna

Det här arbetsflödet för logikappen använder parametrar för att lagra specifik information som du behöver för att köra batchdistributionen.

  1. Välj Parametrar i verktygsfältet för arbetsflödesdesignern.

    Skärmbild som visar fönstret Parametrar för att definiera parametrar som krävs för arbetsflödet.

  2. I fönstret Parametrar väljer du Skapa parameter och anger följande information om varje parameter som ska skapas:

    Dricks

    Använd de värden som konfigurerats vid Autentisera mot batchslutpunkter.

    Parameternamn beskrivning Exempelvärde
    tenant_id Klientorganisations-ID:t där slutpunkten distribueras. 00000000-0000-0000-00000000
    client_id Klient-ID:t för tjänstens huvudnamn som används för att anropa slutpunkten. 00000000-0000-0000-00000000
    client_secret Klienthemligheten för tjänstens huvudnamn som används för att anropa slutpunkten. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri Slutpunktens bedömnings-URI.

    Viktigt: Den här URI:n är för den slutpunkt som du vill köra. Slutpunkten måste ha en standarddistribution konfigurerad.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    I följande exempel visas en exempelparameter:

    Skärmbild som visar hur du lägger till en parameter i designern.

    Mer information finns i Skapa parametrar mellan miljöer för arbetsflödesindata i Azure Logic Apps.

Lägg till utlösaren

Vi vill utlösa logikappens arbetsflöde varje gång en ny fil skapas i en specifik mapp (datatillgång) för ett lagringskonto. Logikappen använder informationen från händelsen för att anropa batchslutpunkten och skicka den specifika filen att bearbeta.

  1. I arbetsflödesdesignern följer du de här allmänna stegen för att lägga till en Event Grid-utlösare med namnet När en resurshändelse inträffar.

  2. I rutan anslutningsinformation väljer du den autentiseringstyp som ska användas och väljer sedan Logga in.

  3. Ange följande information i utlösarrutan:

    Property Värde beskrivning
    Resurstyp Microsoft.Storage.StorageAccounts Resurstypen som genererar händelserna.
    Abonnemang Namnet på din prenumeration Prenumerationen för lagringskontot.
    Resursnamn Namnet på ditt lagringskonto Namnet på lagringskontot där filerna genereras.
    Objekt för händelsetyp Microsoft.Storage.BlobCreated Händelsetypen.
  4. I listan Avancerade parametrar väljer du Prefixfilter och anger följande värde:

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

    Viktigt!

    Med egenskapen Prefixfilter kan Event Grid endast meddela arbetsflödet när en blob skapas i den specifika sökväg som vi angav. I det här fallet förutsätter vi att filer skapas av en extern process i mappen som anges av <path-to-data-folder> i containercontainerns< namn>, som finns i det valda lagringskontot. Konfigurera den här parametern så att den matchar platsen för dina data. Annars utlöses händelsen för alla filer som skapats på någon plats för lagringskontot. Mer information finns i Händelsefiltrering för Event Grid.

    I följande exempel visas hur utlösaren visas:

    Skärmbild av logikappens utlösaraktivitet.

Konfigurera åtgärderna

  1. Under utlösaren När en resurshändelse inträffar följer du de här allmänna stegen för att lägga till HTTP-åtgärden. Byt namn på åtgärden till Auktorisera.

  2. I åtgärden Auktorisera anger du följande information:

    Property Värde Kommentar
    Metod POST HTTP-metoden
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Om du vill ange det här uttrycket väljer du inuti URI-rutan. Välj uttrycksredigeraren (formelikonen) från de alternativ som visas.
    Rubriker Content-Type med värde application/x-www-form-urlencoded
    Brödtext concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Om du vill ange det här uttrycket väljer du i rutan Brödtext . Välj uttrycksredigeraren (formelikonen) från de alternativ som visas.

    I följande exempel visas ett exempel på åtgärden Auktorisera :

    Skärmbild som visar exempelåtgärden Auktorisera i logikappens arbetsflöde.

  3. Under åtgärden Auktorisera lägger du till ytterligare en HTTP-åtgärd och byter namn på rubriken till Anropa.

  4. I åtgärden Anropa anger du följande information:

    Property Värde Kommentar
    Metod POST HTTP-metoden
    URI endpoint_uri Välj inuti URI-rutan och välj sedan endpoint_uri under Parametrar.
    Rubriker Content-Type med värde application/json
    Rubriker Authorization med värde concat('Bearer ', body('Authorize')['access_token']) Om du vill ange det här uttrycket väljer du i rutan Rubriker . Välj uttrycksredigeraren (formelikonen) från de alternativ som visas.
  5. Välj i rutan Brödtext och välj uttrycksredigeraren (formelikonen) från de alternativ som visas för att ange följande uttryck:

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

    Dricks

    Den tidigare nyttolasten motsvarar en modelldistribution. Om du arbetar med en pipelinekomponentdistribution anpassar du formatet enligt förväntningarna på pipelinens indata. Mer information om hur du strukturerar indata i REST-anrop finns i Skapa jobb och indata för batchslutpunkter (REST)..

    I följande exempel visas ett exempel på en anropa-åtgärd :

    Skärmbild som visar exempel på åtgärden Anropa i logikappens arbetsflöde.

    Kommentar

    Åtgärden Invoke utlöser batchjobbet, men åtgärden väntar inte på att den ska slutföras. Som standard är Azure Logic Apps inte konfigurerat för långvariga program. Om du behöver vänta tills jobbet har slutförts rekommenderar vi att du växlar till Kör batchslutpunkter från Azure Data Factory.

  6. Spara arbetsflödet när du är klar.

    Logikappens arbetsflöde är redo att köras och utlöses automatiskt varje gång en ny fil skapas under den angivna sökvägen.

  7. Kontrollera appens körningshistorik för att bekräfta att appen har tagit emot en händelse:

    Skärmbild som visar körningshistorik för logikappens arbetsflöde.

Nästa steg