Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Azure Developer CLI (azd) ondersteunt code- en containerimplementaties voor Azure Functions. Gebruik de toegewezen function host in azure.yaml voor beide modi:
- Implementatie van code verpakt de code van uw gebouwde functie als een zip-archief en uploadt deze naar de functie-app.
- Containeruitrol bouwt of haalt een container-installatiekopie op, publiceert deze indien nodig naar Azure Container Registry (ACR) en werkt de functie-app bij om de installatiekopie uit te voeren.
Azure Functions en Azure App Service maken beide gebruik van de Microsoft.Web/sites resourceprovider en hun containerimplementatiestromen delen enkele interne mechanismen. Ze zijn echter niet dezelfde hostazd. Functions gebruikt host: function, heeft functiespecifiek verpakkings- en buildgedrag voor externe builds en maakt geen gebruik van de werkstroom voor implementatieslots van App Service.
Een implementatiemodus kiezen
azd selecteert de implementatiemodus uit de serviceconfiguratie:
| Configuration | Implementatiemodus |
|---|---|
Een bron project met een ondersteunde niet-Docker language en geen docker.path |
Uitrol van code |
language: docker |
Containerinzet |
Een docker.path waarde met een brontaal |
Containerinzet |
Een vooraf samengestelde image |
Containerinzet |
De ingerichte functie-app moet dezelfde modus gebruiken als de serviceconfiguratie. Als de functie-app is geconfigureerd voor containers, maar azure.yaml code-implementatie selecteert of omgekeerd, stopt azd deploy voordat er wordt geüpload en meldt de niet-overeenkomst.
Functiecode uitrollen
Configureer een functieservice op basis van code met een bronproject, ondersteunde taal en host: function:
services:
api:
project: ./src/api
language: ts
host: function
azd Tijdens azd deployhet compileren van het project worden uitsluitingen toegepast.funcignore, een zip-archief gemaakt en het pakket geüpload via de Azure Functions implementatie-API.
Uw Bicep of Terraform moet een functie-app op basis van code inrichten en deze taggen met azd-service-name ingesteld op de naam van de service, tenzij u de resource identificeert met behulp van resourceName in azure.yaml. Configureer het hostingplan, runtime, opslag, identiteiten, netwerken en toepassingsinstellingen via infrastructuur als code.
Externe builds configureren voor code-uitrol
De eigenschap van de service remoteBuild op het hoogste niveau is alleen van toepassing op op code gebaseerde Function Apps in het Flex Consumption-plan. Het bepaalt of Azure Functions Oryx gebruikt om het geüploade pakket te bouwen:
services:
api:
project: ./src/api
language: python
host: function
remoteBuild: true
Wanneer u remoteBuild weglaat bij Flex Consumption, selecteert azd een standaardinstelling op basis van de taal en pakketinhoud:
| Language | Standaardgedrag |
|---|---|
| JavaScript of TypeScript | Maakt gebruik van externe build wanneer .funcignorenode_modules uitsluit, of wanneer er geen .funcignore bestand bestaat. Anders wordt het lokaal gebouwde pakket gebruikt. |
| Python | Maakt gebruik van een externe build. |
| Go | Lokaal bouwen. Go Function Apps bieden geen ondersteuning voor extern compileren. |
| Andere ondersteunde talen | Maakt gebruik van het lokaal gebouwde package. |
Voor JavaScript en TypeScript moet een expliciet geconfigureerde remoteBuild waarde overeenkomen met .funcignore wanneer dat bestand bestaat. Instellen remoteBuild: true wanneer .funcignorenode_modules uitsluit. Instellen remoteBuild: false wanneer .funcignorenode_modules in het pakket opneemt.
Stel de eigenschap op het hoogste niveau remoteBuild niet in voor niet-Flex-abonnementen. Als u een Oryx-build wilt inschakelen op een ander ondersteund plan, configureert u ENABLE_ORYX_BUILD=true en SCM_DO_BUILD_DURING_DEPLOYMENT=true als functie-app-instellingen in uw infrastructuur.
Een gecontaineriseerde functie implementeren
Voor een bronproject met een Dockerfile kunt u language: docker instellen, of de brontaal behouden en docker.path opgeven.
In het volgende voorbeeld wordt een TypeScript-project met een Dockerfile gebruikt:
services:
api:
project: ./src/api
language: ts
host: function
docker:
path: ./Dockerfile
U kunt ook een vooraf gebouwde image implementeren zonder een lokaal project:
services:
api:
host: function
image: myregistry.azurecr.io/functions/api:1.0
Laat voor een vooraf gebouwde image language weg of stel deze in op docker. Combineer niet image met project.
Tijdens een containerimplementatie: azd
- Hiermee bouwt u de image lokaal of op afstand, of vindt u de geconfigureerde vooraf gebouwde image.
- Hiermee publiceert u de images naar het ACR-exemplaar dat is geconfigureerd voor het project wanneer publicatie is vereist.
- Hiermee wordt de functie-app
linuxFxVersionbijgewerkt naarDOCKER|<image>. - Wordt geïmplementeerd naar de hoofdsite van de Function App.
De service-eigenschap remoteBuild op het hoogste niveau is niet van toepassing op containers. Als u een containerinstallatiekopie met ACR Tasks wilt maken, gebruikt u docker.remoteBuild:
services:
api:
project: ./src/api
language: docker
host: function
docker:
path: ./Dockerfile
remoteBuild: true
Een containerklare functie-app implementeren
azd deploy werkt de imageverwijzing bij, maar converteert een Function App op basis van code niet naar een Function App op basis van een container. Uw infrastructuur moet vóór de implementatie een compatibele site inrichten.
| Requirement | Details |
|---|---|
| Linux Function App | Richt een Linux-functie-app in op een Azure Functions Premium- of Dedicated-abonnement (App Service). Flex Consumption biedt geen ondersteuning voor aangepaste containers. Deze host: function werkstroom is gericht op Microsoft.Web/sites, niet op Azure Functions die worden gehost op Azure Container Apps. |
| Configuratie van de containersite | Stel het sitetype zo in dat het functionapp, linux en container omvat. Initialiseer linuxFxVersion met een DOCKER\|<image> waarde. Een tijdelijke aanduiding voor een afbeelding is voldoende omdat azd deploy deze vervangt. |
| Containerregistratie | Voor bronversies richt u een ACR-exemplaar in en stelt u de aanmeldingsserver beschikbaar via de uitvoer van de AZURE_CONTAINER_REGISTRY_ENDPOINT-infrastructuur, of configureer docker.registry voor de service. Een volledig gekwalificeerde vooraf samengestelde image kan rechtstreeks worden gebruikt zonder een afzonderlijk publicatieregister. |
| Registertoegang | Verleen de identiteit die de image publiceert machtiging om naar de doelregistry te pushen wanneer publicatie is vereist. Configureer de functie-app afzonderlijk om de geïmplementeerde image op te halen. Voor privé-ACR-images verleent u de beheerde identiteit van de Function App pull-toegang en configureert u de site voor het gebruik van referenties voor beheerde identiteiten. Voor een ander privéregister configureert u de juiste pull-referenties in uw infrastructuur. |
| Functie-instellingen | Configureer de vereiste instellingen, zoalsFUNCTIONS_EXTENSION_VERSION, FUNCTIONS_WORKER_RUNTIMEen AzureWebJobsStorage via Bicep of Terraform. |
| Middelenontdekking | Pas een azd-service-name-tag toe waarvan de waarde overeenkomt met de servicenaam in azure.yaml, of stel resourceName expliciet in. |
Instellingen op serviceniveau env worden niet ondersteund voor de function host. Definieer in plaats daarvan Function App-instellingen in uw infrastructuur.
Inzicht in implementatiesleuven
azd implementeert altijd een function service op de hoofdsite van de Function App. Er worden geen Function App-slots gedetecteerd, er wordt niet om gevraagd en er wordt niet naar geïmplementeerd. App Service-site-instellingen, zoals AZD_DEPLOY_{SERVICE}_SLOT_NAME, hebben geen invloed op de uitrol van een functie-app.
Als u een releaseproces voor Functions op basis van slots nodig hebt, beheert u de slot en implementatie buiten de ingebouwde host: function werkstroom.
Functies en App Service-hosts vergelijken
Functions en App Service delen het Microsoft.Web/sites resourcetype, maar u moet de host selecteren die overeenkomt met de workload:
| Behavior |
function host |
appservice host |
|---|---|---|
| Werklast | Gebeurtenisgestuurde Azure Functions | webapps en API’s |
| Uitrol van code | Maakt gebruik van het Azure Functions zip-implementatieproces | Maakt gebruik van de App Service-implementatiestroom |
| Containerinzet | Hiermee wordt de image van de functie-app bijgewerkt nadat is geverifieerd dat de site is gebaseerd op een container | Hiermee wordt de Web App-image bijgewerkt nadat is geverifieerd dat de site gereed is voor containers |
| Externe code bouwen | Ondersteunt de optie op service-niveau remoteBuild voor Flex Consumption Function Apps |
Gebruikt de optie Functies remoteBuild niet |
| Implementatiesites | Wordt altijd geïmplementeerd op de hoofdsite | Ondersteunt de workflow voor azd App Service-slots |
Serviceniveau env |
Niet ondersteund; Function App-instellingen gebruiken in infrastructuur | App-instellingen configureren in de infrastructuur |