Uw functies uitvoeren vanuit een pakketbestand in Azure

In Azure kunt u uw functies rechtstreeks vanuit een implementatiepakketbestand in uw functie-app uitvoeren. De andere optie is het implementeren van uw bestanden in de d:\home\site\wwwroot map (Windows) of /home/site/wwwroot (Linux) van uw functie-app.

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

Voordelen van het uitvoeren van een pakketbestand

Er zijn verschillende voordelen voor het uitvoeren van een pakketbestand:

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

Zie deze aankondiging voor meer informatie.

Functies inschakelen voor uitvoering 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 Omschrijving
1 Geeft aan dat de functie-app wordt uitgevoerd vanuit een lokaal pakketbestand dat is geïmplementeerd in de d:\home\data\SitePackages map (Windows) of /home/data/SitePackages (Linux) van uw functie-app.
<URL> Hiermee stelt u een URL in die de externe locatie is van het specifieke pakketbestand dat u wilt uitvoeren. Vereist voor functions-apps die worden uitgevoerd in Linux in een verbruiksabonnement.

De volgende tabel geeft de aanbevolen WEBSITE_RUN_FROM_PACKAGE opties voor implementatie aan voor een specifiek besturingssysteem en hostingabonnement:

Hostingabonnement Windows Linux
Verbruik 1 wordt ten zeerste aanbevolen. Alleen <URL> wordt ondersteund.
Premium 1 wordt aanbevolen. 1 wordt aanbevolen.
Gewijd 1 wordt aanbevolen. 1 wordt aanbevolen.

Algemene overwegingen

  • Het pakketbestand moet .zip-indeling hebben. Tar- en gzip-indelingen worden momenteel niet ondersteund.
  • Zip-implementatie wordt aanbevolen.
  • Wanneer u uw functie-app implementeert in Windows, moet u deze instellen WEBSITE_RUN_FROM_PACKAGE1 en publiceren met zip-implementatie.
  • Wanneer u een pakket uitvoert, wordt de wwwroot map alleen-lezen en ontvangt u een foutmelding bij het schrijven van bestanden naar deze map. Bestanden zijn ook alleen-lezen in Azure Portal.
  • De maximale grootte voor een implementatiepakketbestand is momenteel 1 GB.
  • U kunt geen lokale cache gebruiken bij uitvoering vanuit een implementatiepakket.
  • Als uw project externe build moet gebruiken, gebruikt u de WEBSITE_RUN_FROM_PACKAGE app-instelling niet. Voeg in plaats daarvan de instelling voor de SCM_DO_BUILD_DURING_DEPLOYMENT=true aanpassings-app voor implementatie toe. Voor Linux voegt u ook de ENABLE_ORYX_BUILD=true instelling toe. Zie Remote build voor meer informatie.

Notitie

WEBSITE_RUN_FROM_PACKAGE werkt niet met MSDeploy, zoals hier wordt beschreven. U krijgt een foutmelding tijdens de implementatie, zoals ARM-MSDeploy Deploy Failed. Wijzig /MSDeploy in /ZipDeploy en deze fout wordt opgelost.

De WEBSITE_RUN_FROM_PACKAGE-instelling toevoegen

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

Voor wijzigingen in de instellingen van de functie-app moet uw functie-app opnieuw worden gestart.

Met WEBSITE_RUN_FROM_PACKAGE = 1

Deze sectie bevat informatie over het uitvoeren van uw functie-app vanuit een lokaal pakketbestand.

Overwegingen voor het implementeren vanuit een on-site-pakket

  • Het gebruik van een on-site-pakket is de aanbevolen optie voor uitvoering vanuit het implementatiepakket, met uitzondering van Linux die wordt gehost in een verbruiksabonnement.
  • Zip-implementatie is de aanbevolen manier om een implementatiepakket naar uw site te uploaden.
  • Als u zip-implementatie niet gebruikt, controleert u of de d:\home\data\SitePackages map (Windows) of /home/data/SitePackages (Linux) een bestand heeft met de naam packagename.txt. Dit bestand bevat alleen de naam, zonder witruimte, van het pakketbestand in deze map die momenteel wordt uitgevoerd.

Integratie met zip-implementatie

Zip-implementatie is een functie van Azure-app Service waarmee u uw functie-app-project kunt implementeren in de wwwroot map. Het project is verpakt als een ZIP-implementatiebestand. Dezelfde API's kunnen worden gebruikt om uw pakket te implementeren in de d:\home\data\SitePackages map (Windows) of /home/data/SitePackages (Linux).

Met de waarde van de WEBSITE_RUN_FROM_PACKAGE app-instelling kopieert de ZIP-implementatie-API's uw pakket naar de d:\home\data\SitePackages map (Windows) of /home/data/SitePackages (Linux) in plaats van de bestanden te extraheren naar d:\home\site\wwwroot (Windows) of /home/site/wwwroot (1Linux). Het bestand wordt ook gemaakt packagename.txt . Nadat het pakket opnieuw is opgestart, wordt het gekoppeld als wwwroot een alleen-lezen bestandssysteem. Zie Zip-implementatie voor Azure Functions voor meer informatie over zip-implementatie.

Notitie

Wanneer een implementatie plaatsvindt, wordt een herstart van de functie-app geactiveerd. Uitvoeringen van functies die momenteel worden uitgevoerd tijdens de implementatie, worden beëindigd. Raadpleeg De prestaties en betrouwbaarheid van Azure Functions verbeteren voor meer informatie over het schrijven van staatloze en defensieve functies.

WEBSITE_RUN_FROM_PACKAGE = URL gebruiken

Deze sectie bevat informatie over het uitvoeren van uw functie-app vanuit een pakket dat is geïmplementeerd op een URL-eindpunt. Deze optie is de enige die wordt ondersteund voor uitvoering vanuit een pakket op Linux dat wordt gehost in een verbruiksabonnement.

Overwegingen voor het implementeren vanaf een URL

  • Wanneer u een functie-app uitvoert in Windows, biedt de app-instelling WEBSITE_RUN_FROM_PACKAGE = <URL> slechtere prestaties bij koude start en wordt dit niet aanbevolen.
  • Wanneer u een URL opgeeft, moet u ook handmatig triggers synchroniseren nadat u een bijgewerkt pakket hebt gepubliceerd.
  • De Functions-runtime moet machtigingen hebben voor toegang tot de pakket-URL.
  • U moet uw pakket niet implementeren in Azure Blob Storage als een openbare blob. 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 moet eventuele SAS-URL's onderhouden die worden gebruikt voor implementatie. Wanneer een SAS verloopt, kan het pakket niet meer worden geïmplementeerd. In dit geval moet u een nieuwe SAS genereren en de instelling in uw functie-app bijwerken. U kunt deze beheerlast elimineren met behulp van een beheerde identiteit.
  • Wanneer u een Premium-abonnement uitvoert, moet u koude start elimineren.
  • Zorg ervoor dat u AlwaysOn hebt ingeschakeld wanneer u een Dedicated-abonnement uitvoert.
  • U kunt Azure Storage Explorer gebruiken om pakketbestanden te uploaden naar blobcontainers in uw opslagaccount.

Een pakket handmatig uploaden naar Blob Storage

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

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

  2. Zoek in Azure Portal naar de naam van uw opslagaccount of blader ernaar 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 niveau Openbare toegang privé is en selecteer Maken.

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

  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 ernaar op de pagina Functie-app .

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

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

  11. Voer de waarde voor de naamWEBSITE_RUN_FROM_PACKAGE in en plak de URL van uw pakket in Blob Storage als de waarde.

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

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

Hieronder ziet u een functie-app die is geconfigureerd voor uitvoering vanuit een ZIP-bestand dat wordt gehost in Azure Blob Storage:

WEBSITE_RUN_FROM_ZIP app setting

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

Azure Blob Storage kan worden geconfigureerd voor het autoriseren van aanvragen met Microsoft Entra-id. Dit betekent dat u in plaats van een SAS-sleutel met een vervaldatum te genereren, in plaats daarvan kunt u 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 WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID app-instelling instellen op de resource-id van die identiteit. De instelling kan ook 'SystemAssigned' accepteren als een waarde, hoewel dit hetzelfde is als het weglaten van de instelling.

Als u wilt dat het pakket wordt opgehaald met behulp van de identiteit:

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

  2. Verdeel de identiteit de rol Opslagblobgegevenslezer met bereik over de pakket-blob. 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 is waarschijnlijk het formulier 'https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}' of vergelijkbaar.

Volgende stappen