Uw Azure Functions uitvoeren vanuit een pakketbestand

In Azure kunt u uw functies rechtstreeks uitvoeren vanuit een implementatiepakketbestand in uw functie-app. De andere optie is om uw bestanden te implementeren in de d:\home\site\wwwroot map van uw functie-app.

In dit artikel worden de voordelen beschreven van het uitvoeren van uw functies vanuit een pakket. U ziet ook hoe u deze functionaliteit in uw functie-app kunt inschakelen.

Voordelen van het uitvoeren vanuit een pakketbestand

Het uitvoeren vanuit een pakketbestand heeft verschillende voordelen:

  • Vermindert het risico op problemen met het vergrendelen van bestanden.
  • Kan worden geïmplementeerd in een productie-app (met opnieuw opstarten).
  • U kunt zeker zijn van de bestanden die worden uitgevoerd in uw app.
  • Verbetert de prestaties van Azure Resource Manager implementaties.
  • Kan koude starttijden verminderen, met name voor JavaScript-functies met grote npm-pakketen.

Zie deze aankondiging voor meer informatie.

Functies inschakelen om uit te voeren vanuit een pakket

Als u wilt dat uw functie-app kan worden uitgevoerd vanuit een pakket, voegt u een WEBSITE_RUN_FROM_PACKAGE instelling toe aan de instellingen van uw functie-app. De WEBSITE_RUN_FROM_PACKAGE instelling kan een van de volgende waarden hebben:

Waarde Beschrijving
1 Aanbevolen voor functie-apps die worden uitgevoerd op Windows. Voer uit vanuit een pakketbestand in de d:\home\data\SitePackages map van uw functie-app. Als u niet implementeert met zip deploy,moet voor deze optie ook een bestand met de naam in de map packagename.txt staan. Dit bestand bevat alleen de naam van het pakketbestand in de map , zonder witruimte.
<URL> Locatie van een specifiek pakketbestand dat u wilt uitvoeren. Wanneer u een URL opgeeft, moet u ook triggers synchroniseren nadat u een bijgewerkt pakket hebt gepubliceerd.
Wanneer u Blob Storage gebruikt, moet u doorgaans geen openbare blob gebruiken. Gebruik in plaats daarvan een privécontainer met een Shared Access Signature (SAS) of gebruik een beheerde identiteit om de Functions-runtime toegang te geven tot het pakket. U kunt de Azure Storage Explorer om pakketbestanden te uploaden naar uw Blob Storage-account.

Waarschuwing

Wanneer u een functie-app op Windows, levert de externe URL-optie slechtere koude startprestaties op. Wanneer u uw functie-app implementeert naar Windows, moet u instellen WEBSITE_RUN_FROM_PACKAGE op en publiceren met 1 zip-implementatie.

Hieronder ziet u een functie-app die is geconfigureerd om te worden uitgevoerd vanuit een .zip-bestand dat wordt gehost in Azure Blob Storage:

WEBSITE_RUN_FROM_ZIP app-instelling

Notitie

Momenteel worden alleen .zip-pakketbestanden ondersteund.

Een pakket ophalen uit Azure Blob Storage met behulp van een beheerde identiteit

Azure Blob Storage kunnen worden geconfigureerd voor het autoreren van aanvragen met Azure AD. Dit betekent dat u in plaats van een SAS-sleutel met een vervaldatum kunt vertrouwen op de beheerde identiteit van de toepassing. Standaard wordt de door het systeem toegewezen identiteit van de app gebruikt. Als u een door de gebruiker toegewezen identiteit wilt opgeven, kunt u de app-instelling instellen op de WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID resource-id van die identiteit. De instelling kan ook 'SystemAssigned' als een waarde accepteren, hoewel dit hetzelfde is als het weglaten van de instelling.

U kunt als volgende het pakket ophalen met behulp van de identiteit:

  1. Zorg ervoor dat de blob is geconfigureerd voor privétoegang.

  2. Verleen de identiteit de rol Storage blobgegevenslezer met bereik over de pakketblob. Zie Een Azure-rol toewijzen voor toegang tot blobgegevens voor meer informatie over het maken van de roltoewijzing.

  3. Stel de WEBSITE_RUN_FROM_PACKAGE toepassingsinstelling in op de blob-URL van het pakket. Dit heeft waarschijnlijk de vorm 'https://{naam-opslagaccount}.blob.core.windows.net/{containernaam}/{pad-naar-pakket}' of iets dergelijks.

Integratie met zip-implementatie

Zip-implementatie is een functie van Azure App Service waarmee u uw functie-app-project in de map kunt wwwroot implementeren. Het project wordt verpakt als een .zip implementatiebestand. Dezelfde API's kunnen worden gebruikt om uw pakket in de map te d:\home\data\SitePackages implementeren. Met de WEBSITE_RUN_FROM_PACKAGE app-instellingswaarde van , kopiëren de API's voor zip-implementatie uw pakket naar de map in plaats van de 1 bestanden uit te d:\home\data\SitePackages extraheren naar d:\home\site\wwwroot . Het bestand wordt ook packagename.txt gemaakt. Na het opnieuw opstarten wordt het pakket aan als wwwroot een alleen-lezen bestandssysteem toegevoegd. Zie Zip-implementatie voor Azure Functions voor meer informatie over zip-Azure Functions.

Notitie

Wanneer een implementatie plaatsvindt, wordt een herstart van de functie-app geactiveerd. Voordat een herstart wordt uitgevoerd, mogen alle bestaande functie-uitvoeringen worden voltooid of is er een time-out. Zie Implementatiegedrag voor meer informatie.

De instelling WEBSITE_RUN_FROM_PACKAGE toevoegen

Er zijn verschillende manieren waarop u instellingen van een functie app kunt toevoegen, bijwerken en verwijderen:

Wijzigingen in de instellingen van de functie-app vereisen dat uw functie-app opnieuw wordt gestart.

Voorbeeldwerkstroom voor het handmatig uploaden van een pakket dat wordt gehost in Azure Storage

Als u een gecomprimeerd pakket wilt implementeren wanneer u de URL-optie gebruikt, moet u een .zip gecomprimeerd implementatiepakket maken en uploaden naar het doel. In dit voorbeeld wordt een Blob Storage container gebruikt.

  1. Maak een .zip voor uw project met behulp van het hulpprogramma van uw keuze.

  2. Zoek in Azure Portalnaar de naam van uw opslagaccount of blader er naar in opslagaccounts.

  3. Selecteer containers onder Gegevensopslag in het opslagaccount.

  4. Selecteer + Container om een nieuwe Blob Storage container in uw account te maken.

  5. Geef op de pagina Nieuwe container een Naam op (bijvoorbeeld 'implementaties'), zorg ervoor dat het openbare toegangsniveau Privé is en selecteer Maken.

  6. Selecteer de container die u hebt gemaakt, selecteer Upload, blader naar de locatie van het .zip-bestand dat u met uw project hebt gemaakt en selecteer Upload.

  7. Nadat het uploaden is voltooid, kiest u het geüploade blobbestand en kopieert u de URL. Mogelijk moet u een SAS-URL genereren als u geen identiteit gebruikt

  8. Zoek uw functie-app of blader er naar op de pagina Functie-app.

  9. Selecteer in uw functie-app configuraties onder Instellingen.

  10. Selecteer op het tabblad Instellingen toepassing de optie Nieuwe toepassingsinstelling

  11. Voer de waarde in voor de Naam en plak de URL van uw pakket WEBSITE_RUN_FROM_PACKAGE in Blob Storage waarde .

  12. Selecteer OK. Selecteer vervolgens Opslaan Doorgaan > om de instelling op te slaan en de app opnieuw te starten.

U kunt nu uw functie uitvoeren in Azure om te controleren of de implementatie is geslaagd met behulp van het implementatiepakket .zip bestand.

Problemen oplossen

  • Uitvoeren vanuit pakket maakt alleen-lezen, zodat u een fout ontvangt bij het wwwroot schrijven van bestanden naar deze map.
  • Tar- en gzip-indelingen worden niet ondersteund.
  • Het ZIP-bestand mag niet meer dan 1 GB zijn.
  • Deze functie is niet samen met lokale cache.
  • Voor verbeterde prestaties bij koude start gebruikt u de lokale zip-optie ( WEBSITE_RUN_FROM_PACKAGE =1).
  • Uitvoeren vanuit pakket is niet compatibel met de optie voor implementatieaanpassing ( ), de SCM_DO_BUILD_DURING_DEPLOYMENT=true build-stap wordt genegeerd tijdens de implementatie.

Volgende stappen