Kör ditt Azure Functions från en paketfil

I Azure kan du köra dina funktioner direkt från en distributionspaketfil i funktionsappen. Det andra alternativet är att distribuera dina filer i d:\home\site\wwwroot katalogen för funktionsappen.

I den här artikeln beskrivs fördelarna med att köra dina funktioner från ett paket. Den visar också hur du aktiverar den här funktionen i funktionsappen.

Fördelar med att köra från en paketfil

Det finns flera fördelar med att köra från en paketfil:

  • Minskar risken för problem med filkopieringslåsning.
  • Kan distribueras till en produktionsapp (med omstart).
  • Du kan vara säker på vilka filer som körs i din app.
  • Förbättrar prestanda för Azure Resource Manager distributioner.
  • Kan minska kallstartstiderna, särskilt för JavaScript-funktioner med stora npm-paketträd.

Mer information finns i det här meddelandet.

Aktivera funktioner som ska köras från ett paket

Om du vill att funktionsappen ska kunna köras från ett paket lägger du bara till WEBSITE_RUN_FROM_PACKAGE en inställning i inställningarna för funktionsappen. Inställningen WEBSITE_RUN_FROM_PACKAGE kan ha något av följande värden:

Värde Beskrivning
1 Rekommenderas för funktionsappar som körs på Windows. Kör från en paketfil i d:\home\data\SitePackages mappen för funktionsappen. Om du inte distribuerar med zip-distributionkräver det här alternativet att mappen också har en fil med namnet packagename.txt . Den här filen innehåller bara namnet på paketfilen i mappen, utan blanksteg.
<URL> Platsen för en specifik paketfil som du vill köra. När du anger en URL måste du också synkronisera utlösare när du har publicerat ett uppdaterat paket.
När du använder Blob Storage bör du vanligtvis inte använda en offentlig blob. Använd i stället en privat container med en signatur för delad åtkomst (SAS) eller använd en hanterad identitet för att ge Functions-körningen åtkomst till paketet. Du kan använda Azure Storage Explorer för att ladda upp paketfiler till ditt Blob Storage-konto.

Varning

När du kör en funktionsapp på Windows ger det externa URL-alternativet sämre kallstartsprestanda. När du distribuerar funktionsappen till Windows bör du ange WEBSITE_RUN_FROM_PACKAGE till och publicera med 1 zip-distribution.

Nedan visas en funktionsapp som konfigurerats för att köras från en .zip som finns i Azure Blob Storage:

WEBSITE_RUN_FROM_ZIP appinställning

Anteckning

För närvarande stöds .zip-paketfiler.

Hämta ett paket från Azure Blob Storage en hanterad identitet

Azure Blob Storage konfigureras för att auktorisera begäranden med Azure AD. Det innebär att du i stället för att generera en SAS-nyckel med en förfallotid kan förlita dig på programmets hanterade identitet. Som standard används appens system tilldelade identitet. Om du vill ange en användar tilldelad identitet kan du ange WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID appinställningen till resurs-ID för den identiteten. Inställningen kan också acceptera "SystemAssigned" som ett värde, även om detta är detsamma som att utelämna inställningen helt och hållet.

Så här gör du för att paketet ska hämtas med hjälp av identiteten:

  1. Kontrollera att bloben har konfigurerats för privat åtkomst.

  2. Ge identiteten rollen Storage Blob Data Reader med omfång över paketbloben. Mer information om hur du skapar rolltilldelningen finns i Tilldela en Azure-roll för åtkomst till blobdata.

  3. Ange WEBSITE_RUN_FROM_PACKAGE programinställningen till paketets blob-URL. Detta kommer troligen att ha formen "https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}" eller liknande.

Integrering med zip-distribution

Zip-distribution är en funktion i Azure App Service som gör att du kan distribuera ditt funktionsappsprojekt till wwwroot katalogen. Projektet paketeras som en .zip distributionsfil. Samma API:er kan användas för att distribuera paketet till d:\home\data\SitePackages mappen. Med WEBSITE_RUN_FROM_PACKAGE appinställningsvärdet kopierar 1 ZIP-distributions-API:erna paketet till d:\home\data\SitePackages mappen i stället för att extrahera filerna till d:\home\site\wwwroot . Filen skapas packagename.txt också. Efter en omstart monteras paketet till som wwwroot ett skrivskyddade filsystem. Mer information om zip-distribution finns i Zip-distribution för Azure Functions.

Anteckning

När en distribution sker utlöses en omstart av funktionsappen. Innan en omstart tillåts alla befintliga funktionskörningar slutföras eller time out. Mer information finns i Distributionsbeteenden.

Lägga till WEBSITE_RUN_FROM_PACKAGE inställningen

Det finns flera sätt att lägga till, uppdatera och ta bort inställningar för funktionsappen:

Ändringar i inställningarna för funktionsappen kräver att funktionsappen startas om.

Exempelarbetsflöde för att manuellt ladda upp ett paket som finns i Azure Storage

Om du vill distribuera ett komprimerat paket när du använder URL-alternativet måste du skapa ett .zip komprimerat distributionspaket och ladda upp det till målet. I det här exemplet används en Blob Storage container.

  1. Skapa ett .zip-paket för projektet med val av verktyg.

  2. I Azure Portal duefter namnet på ditt lagringskonto eller bläddrar efter det i lagringskonton.

  3. I lagringskontot väljer du Containrar under Datalagring.

  4. Välj + Container för att skapa en ny Blob Storage-container i ditt konto.

  5. På sidan Ny container anger du ett Namn (till exempel "distributioner"), kontrollerar du att offentlig åtkomstnivå är Privat och väljer Skapa.

  6. Välj den container som du skapade, välj Upload, bläddra till platsen för den .zip-fil som du skapade med projektet och välj Upload.

  7. När uppladdningen är klar väljer du den uppladdade blobfilen och kopierar URL:en. Du kan behöva generera en SAS-URL om du inte använder en identitet

  8. Sök efter funktionsappen eller bläddra efter den på sidan Funktionsapp.

  9. I funktionsappen väljer du Konfigurationer under Inställningar.

  10. På fliken Inställningar program väljer du Ny programinställning

  11. Ange värdet för WEBSITE_RUN_FROM_PACKAGE Name (Namn) och klistra in URL:en för paketet i Blob Storage som Värde.

  12. Välj OK. Välj sedan Spara > Fortsätt för att spara inställningen och starta om appen.

Nu kan du köra funktionen i Azure för att kontrollera att distributionen har lyckats med hjälp av distributionspaketet .zip filen.

Felsökning

  • Run From Package gör wwwroot skrivskyddade, så du får ett felmeddelande när du skriver filer till den här katalogen.
  • Tar- och gzip-format stöds inte.
  • ZIP-filen kan vara högst 1 GB.
  • Den här funktionen kan inte skrivas med lokal cache.
  • För bättre kallstartsprestanda använder du det lokala ZIP-alternativet ( WEBSITE_RUN_FROM_PACKAGE =1).
  • Run From Package är inkompatibel med alternativet för distributionsanpassning ( SCM_DO_BUILD_DURING_DEPLOYMENT=true ), byggsteget ignoreras under distributionen.

Nästa steg